Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: while sitä ja while tätä

stageradio [04.03.2009 23:07:10]

#

Eli.. tarkoitus olisi saada tulostettua lista (MySQL) tietokannasta (kappalelistasta haetaan siis distinct artist ja niiden albumit) joka pitäisi sisällään artistit ja niiden levyt tulostettavaksi listaksi.

saan kyllä artistit tulostumaan hienosti mutta albumeita en saa niiden alle.

miten tämä tulisi toteuttaa?

Teuro [05.03.2009 09:38:36]

#

Menisikö tuo vaikka kahdella kyselyllä, jossa ensin haetaan kaikki artistit. Toisessa kyselyssä haetaan kaikki albumit, jolloin kahdella while silmukalla tulostetaan ensin artisti ja sitten artistin kaikki albumit. Toinen vaihtoehto olisi hakea ensin artistit ja tulostuksen yhteydessä tehdä niistä linkit, jolloin vasta haetaan ja tulostetaan artistin albumit.

<?php

/* Artistien haku */

$kysely = "SELECT artistit.id AS id, artistit.nimi AS nimi FROM kappaleet, artistit WHERE kappaleet.id = artistit.id ORDER BY artistit.nimi";

$haku = mysql_query( $kysely, $yhteys );

while( $rivi = mysql_fetch_array( $haku )){
echo"<a href=\"nayta.php?aid=" . $rivi['id'] . "\">" . $rivi['nimi'] . "</a>";
}
?>

nayta.php:n puolella napataan $_GET['aid'] muuttuja kiinni ja tehdään vastaava albumihaku artistin id:n perusteella.

stageradio [05.03.2009 12:02:32]

#

juu .. kiitos vastauksesta .. kerkesin saada toimimaan

käytin while silmukoita. en vain aluksi oikein tiennyt miten liittää artistin albumeita toiseen silmukkaan.. jos tiedät mitä tarkoitan.

mutta nyt toimii! :D

map_ [06.03.2009 01:23:10]

#

Tuon voi tehdä myös yhdellä kyselyllä. Ehkäpä teitkin sen näin.

SELECT artisti.nimi AS artistinNimi,
       albumi.nimi AS albuminNimi
FROM artisti, albumi
ORDER BY artistinNimi, albuminNimi;

Tuon tulosrivejä läpikäydessä sitten tulostetaan artistin nimi aina kun se vaihtuu.

<?php
// ...
$edellinenArtisti = null;
while ($rivi = /*...*/) {
    if ($rivi['artistinNimi'] !== $edellinenArtisti) {
        // ... tulosta artisti ...
        $edellinenArtisti = $rivi['artistinNimi'];
    }
    // ... tulosta albumi ...
}

Vastaus

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

Tietoa sivustosta