Voiko myslistä tulostaa for loopilla? Vai olisiko jotain muuta tapaa miten voisi tulostaa saman mysli-columnin tietoja niin että tulisi vaikka ensin kolme riviin ja viisi allekkain?
Mitä tarkoittaa "kolme riviin ja viisi allekkain"?
Voit selventää kysymystä antamalla esimerkkitaulun ja halutun tulostuksen.
Voit myös itse yrittää ratkaista ongelman: Tee ensin koodi, joka tulostaa haluamaasi muotoon lukuja järjestyksessä (0, 1, 2, ...). Lisää sitten koodin alkuun MySQL-haku ja luvun tulostamisen sijaan tulostakin aina seuraava tulosrivi.
kolme riviin ja viisi allekkain tarkoittaa tietysti että
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
for loopillahan tuommoisen tulostaa helposti, mutta en onnistu tulostamaan forilla myslistä.
Siis jos teet vaikka näin:
<?php $hakutulos = mysql_query("SELECT etunimi, sukunimi, osoite, puhelin, email FROM yhteystiedot ORDER BY sukunimi DESC"); echo"<table>"; while($rivi = mysql_fetch_array($hakutulos)){ echo"<tr>"; for($i = 0; $i < mysql_num_field($hakutulos); ++$i){ echo"<td>" . $rivi[$i] . "</td>"; } echo"</tr>"; } echo"</table>"; ?>
En nyt testannut tuota, mutta äkkiseltään katsottuna tuo tulostaa yhteen riviin monta eri columnia ja allekkain niin monta kuin hakutuloksia on.
Eli kun katsot alkuperäisen kysymyksen, niin hakutulos tulee yhdestä columnista (esim SELECT sukunimi FROM taulu) ja kaikki sukunimet tulisi vaikka 3x5 tauluun.
Jotakin tähän tapaan sitten:
<?php $hakutulos = mysql_query("SELECT sukunimi FROM taulu"); echo "<table><tr>"; $i = 0; while(($rivi = mysql_fetch_array($hakutulos))){ if ($i++ % 3 == 0 && $i > 3) echo "</tr><tr>"; echo "<td>{$rivi["sukunimi"]}</td>"; } echo "</tr></table>";
Jos osaat tehdä tämän silmukalla muuten, niin en ymmärrä miten se MySQL siihen vaikuttaa. Tuosta Teuron esimerkistä olisit itsekin voinut muokata hyvin helposti toimivan version.
<?php $luku = 0; // Vaihda tähän MySQL-haku. for ($rivi = 0; $rivi < 5; ++$rivi) { echo "<tr>"; for ($sarake = 0; $sarake < 3; ++$sarake) { echo "<td>"; echo $luku; $luku += 1; // Vaihda tähän seuraavan rivin haku ja tulostus. echo "</td>"; } echo "</tr>"; }
Eikö niin?
Kiitoksia vastauksista. trilogin koodi ei toimi, kaikki tulee silti yhteen riviin.
metabolixin kyllä, mutta miten muutan tuon $luku; $luku +=1 ? echo $luku['columni']; $luku +=1 tulostaa numeroita, jos jätän tuon jälkimmäisen pois se tulostaa yhtä ja samaa arvoa. Jos laitan perään ++ se tulostaa a b c d e f ...
Ehkä kannattaisi tutustua PHP:hen ja MySQL:iin hieman lisää. Täältäkin löytyy monta laadukasta opasta, niiden sisäistämisen ja lukemisen jälkeen tuollainenkin homma hoituisi korkeintaan muutamassa minuutissa.
Hyvin näyttää toimivan tuo minunkin pätkä, ja vaikka ei toimisikaan niin periaate on kuitenkin siinä näkyvillä — eihän täällä valmista koodia muutenkaan jaella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.