Tervehdys,
Miten olisi järkevintä tehdä php/javascipt/html lomake, jossa on 25 samanlaista comboboxia (jokaisella kuitenkin eri nimi).
Nyt yksi combo muodotetaan:
<select name="boxi" <option value="-1">Not selected</option> <?php $i=0; foreach($rivit as $rivi){ ?> <option value="<?=$i++?>"><?=$rivi?></option> <?php } ?> </select> <?php
Ideoita?
Onko mitään väliä minkä nimisiä comboja haluat muodostaa?
Mikäli ei ole väliä voit laittaa combo1 combo2 jne... vaikka silmukalla. Mikäli on voisit nimetä combot vaikka taulukkoon, josta luet aina seuraavan nimen indeksin perusteella.
Vaihtoehto1:
<?php $nimet = array(); $nimet[0] = "combo1"; $nimet[1] = "boxi"; $nimet[2] = "loota"; //jne.. for($i = 0; $i < sizeof($nimet); $i++) { echo "<option value=\"" . $nimet[$i] . "\">" . $nimet[$i] . "</option>\n"; } ?>
Vaihtoehto2:
Tein esimerkit Teuron vastauksesta, kun ei ole paljon mitään ihmeellistä tekemistä.
Et tehnyt minun esimerkin mukaisesti. Et ilmeisesti ymmärtänyt aloittajan ongelmaa. Tarkoitus oli saada useita compobokseja ei suinkaan useita vaihtoehtoja yhteen compoboksiin.
Jaahas... :D No, tosta ei ole silti kovinvaikea muokata siihen tarkoitukseen sopivaa.
>Onko mitään väliä minkä nimisiä comboja haluat muodostaa?
>Mikäli ei ole väliä voit laittaa combo1 combo2 jne... vaikka silmukalla.
Ei niillä niin väliä, kunhan ovat yksilöiviä
Jotenkin tuntuisi mukavalta pudottaa nuo option-rivit jostakin 1x/combo, mutta miten?
Sijoitustakin formilla tarvinnee vielä miettiä
Otetaan vaihtoehto 1 käyttöön
Kiito Teuro,
Kokeilin ja hienosti toimi! Tosin tämä vaatineen echoa?
<option value="-1">Not selected</option>
Eiköhän tällä pärjätä taas. Ja $i alkaa nollasta ;-)
Mulla on selvä ongelma tuon tulostamisen kanssa kanssa, kumpaa käyttäisin:
?> <option value="-1">Not selected</option> <?php
vai:
echo '<option value="-1">Not selected</option>';
Korjattu tuo lapsus tuosta yhdestä optionista, mutta käytä ehdottomasti alempaa tapaa, koska koodista tulee muutoin aika hankalasti luettavaa mössöä.
"Isot pojat" juuri tässä hiljan opastivat käyttämään tuota ylempää, kun kuulemma tuosta alimmaisesta tulee mössöä.
==> Pihalla kuin lumiukko!
Nojaa kumpi sitten mössöä 10 - 150 aloittavaa <?php ja vastaava määrä ?> merkkejä keskellä koodia, vai samanlainen määrä echoa / printtiä? Tosin tässä astuu kuvaan DOM, jota olenkin jonkun verran rummuttanut. Se ratkaisee tämänkin ongelman tyylikkäästi, koska tuo äskeinen voidaan laittaa seuraavaan muotoon.
<?php $sivu = new DOMDocument(); $body = $sivu->createElement("body"); for($a = 0; $a < 25; $a++){ $select = $sivu->createElement("select"); $select->setAttribute("name", "boxi" . ($a+1)); $body->appendChild($select); $option = $sivu->createElement("option", "Not selected"); $option->setAttribute("value", "-1"); $select->appendChild($option); $i = 1; foreach($rivit as $rivi){ $option = $sivu->createElement("option", $rivi); $option->setAttribute("value", $i); $select->appendChild($option); $i++; } } echo $sivu->saveXML();
Voit ihan omien puuromieltymystesi mukaan valita. Itsekin olisin sen ylemmän kannalla, koska sillä säästyy monessa tilanteessa \-sekamelskalta (ei tosin koske juuri tätä).
Tässä on vielä muutama esimerkkitapaus:
<img src="<?php echo htmlspecialchars($url); ?>" alt="<?php echo htmlspecialchars($alt); ?>" />
<?php $url_html = htmlspecialchars($url); $alt_html = htmlspecialchars($alt); echo "<img src=\"$url_html\" alt=\"$alt_html\" />";
<?php $url_html = htmlspecialchars($url); $alt_html = htmlspecialchars($alt); echo "<img src='$url_html' alt='$alt_html' />";
<?php echo "<img src='", htmlspecialchars($url), "' alt='", htmlspecialchars($alt), "' />";
Tuo dcom luokka onkin kiinnostava tarvinnee tutustua.
Kiitos kommenteista.
Henkilökohtaiseti näen tuon jälkimmäisen joskus luettavampaa ja "vähän kaikki" niinkuin php:llä. Tuo toinen taas toimii mukavammin editorien kanssa (koodin merkkaus) ja sitten tosiaankin tuo \-merkintä on taas joskus tosi hankalan näköistä.
Tarkotuksena olis, että ylemmästä syntyy sillon selkeetä jälkeä, kun sisältö on jo kasassa ja jäljellä on enää sisällön tulostus. Ts. sulla on siellä enää jotai suht simppeliä silmukkaa, kuten tässä. Näinhän ne templatet toimivat.
tai sovella tästä.
<form><div><table> <?php #$i = 1; $i < 15; $i++; function text_kentta($kentan_asia, $kentan_nimi) { echo "<tr><td>{$kentan_asia} </td><td><input type='text' size='53' name='in{$kentan_nimi}' value='in{$kentan_nimi}'></td></tr>\n"; } text_kentta("Nimi", ++$i); text_kentta("Osoite", ++$i); text_kentta("Puhelin", ++$i); ?> </table></div></form>
Aihe on jo aika vanha, joten et voi enää vastata siihen.