Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: mysql for loop

Sivun loppuun

talikko [06.05.2010 23:17:10]

#

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?

Antti Laaksonen [07.05.2010 00:08:25]

#

Mitä tarkoittaa "kolme riviin ja viisi allekkain"?

Voit selventää kysymystä antamalla esimerkkitaulun ja halutun tulostuksen.

Metabolix [07.05.2010 01:04:19]

#

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.

talikko [07.05.2010 10:18:23]

#

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ä.

Teuro [07.05.2010 10:25:14]

#

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>";
?>

talikko [07.05.2010 12:23:57]

#

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.

trilog [07.05.2010 12:33:56]

#

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.

Metabolix [07.05.2010 12:56:41]

#

<?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?

talikko [07.05.2010 14:08:19]

#

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 ...

trilog [07.05.2010 14:15:32]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta