Mikä klikkaa mysql_queryssä seuraavassa scriptissä?
<?php // Avataan yhteys tietokantapalvelimeen mysql_connect("localhost","tunnus","salasana"); // Valitaan tietokanta $db = mysql_selectdb("tietokanta"); // Määritellään vakiot. // RowsPerPage kertoo kuinka monta tulosriviä tulostetaan yksittäiselle // sivulle. define("RowsPerPage", 40); // Tarkistetaan onko tulossivu määritelty. Jos se on määritelty, // niin asetetaan se käsiteltäväksi sivuksi, muussa tapauksessa näytetään // ensimmäinen tulossivu. if ($_REQUEST["page"] != "") { $page = $_REQUEST["page"]; } else { $page = 1; } // Haetaan tulosrivien sorttikenttä. Jos sorttikenttää ei ole määritelty // näytetään kirjat nimen mukaisessa järjestyksessä. if ($_REQUEST["sortfield"] != "") { $sortfield = $_REQUEST["sortfield"]; } else { $sortfield = "nimi"; } // Haetaan tulosrivien sorttausjärjestys. Jos sorttausjärjestystä ei ole // määritelty näytetään rivit nousevassa järjestyksessä. if ($_REQUEST["sortdir"] != "") { $sortdir = $_REQUEST["sortdir"]; } else { $sortdir = "ASC"; } if ($_REQUEST["id"] != "") { $id = $_REQUEST["id"]; } else { $id = "0"; } // Generoidaan SQL SELECT-lause. $query = "SELECT id, nro, nimi FROM lista WHERE id = " . $id ."ORDER BY " . $sortfield . " " . $sortdir; // Suoritetaan kysely tietokannasta. $result = mysql_query($db, $query); // Tehdään virhetarkistus. virhetarkistus($result); // Haetaan rivien määrä. $numrows = mysql_num_rows($result) - 1; // Asetetaan ensimmäiseksi käsiteltäväksi riviksi // sivun ensimmäinen tietue. $row = ($page-1) * RowsPerPage; // Asetetaan viimeinen käsiteltävä rivi. $lastrow = (($page) * RowsPerPage - 1); if ($lastrow > $numrows) { $lastrow = $numrows; } if ($page > 1) { print " <a href='testi.php?page=" . ($page-1) . "&sortfield=" . $sortfield . "&sortdir=" .$sortdir . "'>Edellinen</a>"; } if ($lastrow < $numrows) { print " <a href='testi.php?tuoteid=" . ($page+1) . "&sortfield=" . $sortfield . "&sortdir=" .$sortdir . "'>Seuraava</a>"; } // Generoidaan HTML-taulukon otsakkeet. print ("<table border='1' width='98%' align='center'>"); print ("<tr>"); if ($sortfield == "id" and $sortdir == "ASC") { print (" <td class='haku' width='34%'><a href='testi.php?id=$id&page=" . $page . "&sortfield=id&sortdir=DESC'>Valmistaja</a></td>"); } else { print (" <td class='haku' width='34%'><a href='testi.php?id=$id&page=" . $page . "&sortfield=id&sortdir=ASC'>Valmistaja</a></td>"); } if ($sortfield == "nro" and $sortdir == "ASC") { print (" <td class='haku' width='34%'><a href='testi.php?id=$id&page=" . $page . "&sortfield=nro&sortdir=DESC'>Malli</a></td>"); } else { print (" <td class='haku' width='34%'><a href='testi.php?id=$id&page=" . $page . "&sortfield=nro&sortdir=ASC'>Malli</a></td>"); } if ($sortfield == "nimi" and $sortdir == "DESC") { print (" <td class='haku' align='center' width='8%'><a href='testi.php?id=$id&page=" . $page . "&sortfield=nimi&sortdir=ASC'>Hinta</a></td>"); } else { print (" <td class='haku' align='center' width='8%'><a href='testi.php?id=$id&page=" . $page . "&sortfield=nimi&sortdir=DESC'>Hinta</a></td>"); } print ("</tr>"); // Käydään lävitse jokainen vieraskirjamerkintä ja // generoidaan HTML-taulukkorivi. while ($row <= $lastrow){ // Haetaan rivin tiedot taulukkoon; $tuote = mysql_fetch_row ($result,$row); // Generoidaan rivi. printf ("<tr>"); printf (" <td class='tuotelista'>%s</td>", $tuote[0]); printf (" <td class='tuotelista'>%s</td>", $tuote[1]); printf (" <td class='tuotelista' align='center'>%s</td>", $tuote[2] ." e"); printf (" </tr>"); // Siirrytään seuraavalle riville. $row++; } // Lopetetaan HTML-taulukko. printf ("</table>"); // Suljetaan tietokantayhteys mysql_close(); ?>
Gurujahan me kaikki ollaan ja suoritetaan päässämme nämä koodit, mutta selvennyksen vuoksi voisitko kertoa minkä virheilmoituksen koodi antaa niin voin verrata sitä siihen mikä päässäni ajettuna tuo koodi antaa ;)
Ja pistä vielä kooditagit niin tuota on huomattavasti kivempaa lukea.
$yhteys = mysql_connect("localhost","tunnus","salasana") or die(mysql_error());
ja sitten loppuun
mysql_close($yhteys);
SEKÄ or die(mysql_error()); käyttöön!
Ja käytä ennemmin mysql_select_db() mysql_selectdb() funktion sijasta
$query = "SELECT id, nro, nimi FROM lista WHERE id = " . $id ."ORDER BY " . $sortfield . " " . $sortdir;
Tuo muuttuja tälläiseksi:
$query = "SELECT id, nro, nimi FROM lista WHERE id ='$id' ORDER BY $sortfield $sortdir";
Ja jatkossa käytetään _AINA_ ' hipsuja tietokantahaussa sisällä. Parempi turva.
ja is_numeric() funkkarilla tarkistetaan että käytetään numeraalista lukua.
Kiitos ja hyvää yötä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.