<?php //yhteys //suoritetaan kysely $haku = mysql_query("SELECT MAX(sarja) AS tulos1 FROM varasto WHERE kayttaja_ID = '1' UNION SELECT MAX(sarja) AS tulos2 FROM varasto WHERE kayttaja_ID = '2' UNION SELECT MAX(sarja) AS tulos3 FROM varasto WHERE kayttaja_ID = '3' UNION SELECT MAX(sarja) AS tulos4 FROM varasto WHERE kayttaja_ID = '4' UNION SELECT MAX(sarja) AS tulos5 FROM varasto WHERE kayttaja_ID = '5'", $yhteys) or die("Virhe kyselyssä!"); //tulostetaan taulukon rivit while ($tulos = mysql_fetch_assoc($haku)) { echo '<table border><html>'; echo '<td><tr>'.Nimi0.'</td><td>'.$tulos['tulos1'].'</td></tr>'; echo '<td><tr>'.nimi1.'</td><td>'.$tulos['tulos2'].'</td></tr>'; echo '<td><tr>'.nimi2.'</td><td>'.$tulos['tulos3'].'</td></tr>'; echo '<td><tr>'.nimi3.'</td><td>'.$tulos['tulos4'].'</td></tr>'; echo '<td><tr>'.nimi4.'</td><td>'.$tulos['tulos5'].'</td></tr>'; } echo '</table></html>'; ?>
tuossa nyt jokin mättää. Voiko tuota vielä korjata vai löytyykö parempia vaihtoehtoja.
löytyy seuraavat kaksi taulukkoa:
kayttaja:
ID, nimi, kayttaja.ID
varasto:
ID, pvm, sarja, kayttaja_ID
Tarkoituksena siis hakea kaikkien viiden käyttäjän paras tulos ja tulostaa se html taulukkoon. (Nimeä ei tarvitse hake kannasta, sen voi vain sijoittaa johonkin niin että tulos olisi yksinkertainen nimi | sarja)
edit: pastesin jonkun ihme koodin näköjään, mutta kuitenkin, vinkkiä tarttis että miten homman sais skulaamaan
Mielestäni ainakin pitäisi echo '<table border><html>'; lauseke siirtää while silmukan alkua ennen.
Taikka siirtää echo '</table></html>'; silmukkaan
Joku noista en koodi viitsi tarkemmin katsoa kunnei ole värikoodausta.
Html-tagien järjestys ainakin näyttäisi olevan pahasti pielessä...
Tee ainakin seuraavat korjaukset, niin saattaisi toimiakin:
Muuta jokainen "<td><tr>" muotoon "<tr><td>"
Siirrä rivi "echo '<table border><html>';" while-silmukan ulkopuolelle ja muuta muotoon "echo '<html><table border="1">'"
Myös body- ja head-tagien käyttäminen olisi varmaan ihan suotavaa...
Pistänpä tähän nyt tämänhetkisen koodin ihan oikeilla nimillä..
<?php //yhteys echo '<html><body><table border="1">'; echo '<tr><td><b>nimi</b></td><td><b>Paras sarja</b></td></tr>'; //suoritetaan kysely $haku = mysql_query("SELECT MAX(sarja) AS noorak FROM varasto WHERE kayttaja_ID = '1' UNION SELECT MAX(sarja) AS iirok FROM varasto WHERE kayttaja_ID = '2'", $yhteys) or die("Virhe kyselyssä!"); //tulostetaan taulukon rivit while ($tulos = mysql_fetch_assoc($haku)) { echo '<tr><td>'.NooraK.'</td><td>'.$tulos['noorak'].'</td><td>'; echo '<tr><td>'.IiroK.'</td><td>'.$tulos['iirok'].'</td><td>'; } echo '</table>'; echo '</body></html>'; ?>
toimii muuten mutta tulostaa kummallekkin riville kummatkin nimet. Voisiko tätä jotenkin korjata hyödyntäen kahta taulukkoa kannassa? Kun ei taida olla muuta menetelmää saada vain toista nimeä per rivi, näin olen sen ymmärtänyt, tähän tosin kaipaisin pientä koodinpätkä vinkkiä kun ei oikeen taivu sen tekeminen tähän kohtaan.
Jotakin tänne suuntaan, "query was empty" virhe ilmoituksena ?
echo '<html><body><table border="1">'; //suoritetaan kysely $haku = mysql_query("SELECT kayttaja.nimi, MAX(varasto.sarja) AS suurin FROM kayttaja LEFT JOIN varasto ON kayttaja.ID = varasto.kayttaja_ID ORDER BY suurin DESC"); mysql_query($sql) or die(mysql_error()." SQL: ".$sql); while ($tulos = mysql_fetch_assoc($haku)) { echo '<tr><td>'.$tulos['nimi'].'</td><td>'.$tulos['suurin'].'</td></tr>'; } echo '</table>'; echo '</body></html>';
sprawl kirjoitti:
Jotakin tänne suuntaan, "query was empty" virhe ilmoituksena ?
echo '<html><body><table border="1">'; //suoritetaan kysely $haku = mysql_query("SELECT kayttaja.nimi, MAX(varasto.sarja) AS suurin FROM kayttaja LEFT JOIN varasto ON kayttaja.ID = varasto.kayttaja_ID ORDER BY suurin DESC"); mysql_query($sql) or die(mysql_error()." SQL: ".$sql); while ($tulos = mysql_fetch_assoc($haku)) { echo '<tr><td>'.$tulos['nimi'].'</td><td>'.$tulos['suurin'].'</td></tr>'; } echo '</table>'; echo '</body></html>';
$sql-muuttujaa ei ole määritelty, joten tuo
mysql_query($sql) or die(mysql_error()." SQL: ".$sql);
on turha.
Mutta ei vaikuta tuon toimintaan ainakaan positiivisesti
edit: virhe jonka tuo antaa viittaa seuraavaan riviin:
while ($tulos = mysql_fetch_assoc($haku)) {
sprawl kirjoitti:
while ($tulos = mysql_fetch_assoc($haku)) {
while ($tulos = @mysql_fetch_assoc($haku)) {
"query was empty" virheilmoitus (<- yhdyssana) tarkoittaa sitä, että kyselyssä ei saatu tulokseksi yhtään riviä, joten mitään näytettävää ei ole!
"SELECT kayttaja.nimi, MAX(varasto.sarja) AS suurin FROM kayttaja LEFT JOIN varasto ON kayttaja.ID = varasto.kayttaja_ID ORDER BY suurin DESC"
Jos käytät max-funktiota tarvitaan mielestäni myös group by määrite. Eli näinikään:
"SELECT k.nimi, MAX(v.sarja) AS suurin FROM kayttaja k LEFT JOIN varasto v ON k.ID = v.kayttaja_ID GROUP BY k.ID ORDER BY suurin DESC"
Näinhän se juuri on, Grouppia se vaati. kiittos =)
Aihe on jo aika vanha, joten et voi enää vastata siihen.