Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Mysql&php ongelma

ViKiNGi [11.03.2004 12:59:07]

#

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] ."&nbsp;e");

      printf ("  </tr>");

      // Siirrytään seuraavalle riville.

      $row++;

  }



  // Lopetetaan HTML-taulukko.

  printf ("</table>");

// Suljetaan tietokantayhteys
mysql_close();

?>

Antti [11.03.2004 13:35:05]

#

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

Olga [11.03.2004 14:24:54]

#

Ja pistä vielä kooditagit niin tuota on huomattavasti kivempaa lukea.

Juhis [11.03.2004 14:30:59]

#

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

Vastaus

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

Tietoa sivustosta