Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: For-silmukka echon sisällä?

Thalassa [14.12.2013 16:05:02]

#

Siispä miten ratkaista ongelma, jossa echon sisälle pitäisi saada for-silmukka ja toinen echo? Mahdollistahan se ei ole mutta olisiko jotain, millä tuon voisi muuten echottaa.

Koodi menee jotakuinkin näin;

echo "<p><select name=\"poista\"> for($i = 0; $i < Funktio($...); $i++){ echo <option value=\"$i\">Funktio($...,$i)</option>;}</select></p>";

Ja tämä koodi normaalin echon sisällä. (Mod. lisäsi sen ”normaalin echon” selvyyden vuoksi.)

jlaire [14.12.2013 16:29:52]

#

Olisi helpompaa ymmärtää oikeaa koodia tai esimerkkiä siitä, mitä haluat tulostaa. "Jotakuinkin PHP:tä" muistuttava sotku ei ilahduta.

Monta option-elementtiä voi tulostaa silmukalla. Monta select-elementtiä, joissa jokaisessa on monta optionia, voi tulostaa kahdella sisäkkäisellä silmukalla.

for ($i = 0; $i < 5; $i++) {
    echo "<select>";
    for ($j = 0; $j < 10; $j++) {
        echo "<option value=\"$j\">$j</option>";
    }
    echo "</select>";
}

pistemies [14.12.2013 17:14:57]

#

Thalassa kirjoitti:

Ja tämä koodi normaalin echon sisällä.

On hyvä huomata, että ei kaikkea minkä tulostaa, tarvitse "echottaa". Html-elementit näkyvät ellet piilota niitä Css-tyylillä tai kätke php-muuttujaan.

Jos tarvitset php-muuttujaan lisää tarinoita, se onnistuu lisäämällä muuttujaan tietoa for-silmukassa.

$who = "<select>";

    for ($j = 0; $j < 10; $j++) {
        $who .= "<option value=\"$j\">$j</option>";
    }
$who .="</select>";

echo $who;

Vaihtoehto 2, johon tuossa viittasin

<select name="poista">
<?php
    for ($j = 0; $j < 10; $j++) {
        echo "<option value=\"$j\">$j</option>";
    }
?>
</select>

The Alchemist [14.12.2013 17:41:12]

#

Ei tuo liity mitenkään asiaan. On yhtä mahdotonta lyödä silmukka tulostuskutsun sisälle kuin sijoitusoperaation keskellekin. Pitää vain ensin ymmärtää, mitä on tarkoitus tehdä, ja sitten tehdä se kielen sääntöjä kunnioittaen. Ei pidä lähteä keksimään omia tapojaan tehdä asioita, koska ne ovat yleensä hirvittävän väärin, jos sattuvat edes olemaan mahdollisia.

pistemies [14.12.2013 22:26:43]

#

Jos mainitsemassasi silmukassa pitää hakea hiukan monikutkaisemmin tietoa, voit tehdä se erillisessä funktiossa. Tässä yksinkertaistettu esimerkki:

<?php
$pojat = array("Matti",
                    "Jouko",
                    "Antti",
                    "Jari",
                    "Teuvo");
          function test($arr){
                    $op = '';
                    for($i=0;$i<count($arr);$i++){
                              $op .= "<option value=\"$i\">" .$arr[$i] . "</option>";
                    }
                    return $op;
          }

echo '<select>'.test($pojat).'</select>';
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta