Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: mysql taulukko html taulukoksi

Sivun loppuun

sprawl [05.03.2006 23:24:37]

#

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

juha127 [06.03.2006 10:38:31]

#

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.

Sami [06.03.2006 10:52:31]

#

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

sprawl [06.03.2006 13:39:55]

#

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.

sprawl [06.03.2006 22:41:09]

#

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>';

Draiz [06.03.2006 23:01:54]

#

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.

sprawl [06.03.2006 23:13:17]

#

Mutta ei vaikuta tuon toimintaan ainakaan positiivisesti

edit: virhe jonka tuo antaa viittaa seuraavaan riviin:
while ($tulos = mysql_fetch_assoc($haku)) {

str4nd [07.03.2006 14:39:13]

#

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!

folio [07.03.2006 16:26:44]

#

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

sprawl [07.03.2006 19:34:16]

#

Näinhän se juuri on, Grouppia se vaati. kiittos =)


Sivun alkuun

Vastaus

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

Tietoa sivustosta