Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: mysql kanta+aakkosten mukaan haku problem

fooff [17.09.2004 14:42:35]

#

Tuossa jokinaika sitten
(https://www.ohjelmointiputka.net/keskustelu/6244-mysql-kanta-aakkosten-mukaan-haku)
kyselin tapaa toteuttaa mysqlkannasta aakkostenmukaan haun. Tänään lähdin toteuttamaan tuota helppien mukaan, mutta joku mättää enkä löydä itse vikaa. Neovoja..?

 <?php
include "./gonf.php";  //täällä kannan avaukset yms.
$k = "abcdefghijklmnopqrstuvwxyzåäö";

for ($i = 0; $i < strlen($k); $i++)
{
echo "<a href=\"products.php?kirjain={$k[$i]}\">{$k[$i]}</a> ";
}
	echo("<table>");

$kirjain = $_GET['kirjain'];
$sql = "SELECT *FROM tuote WHERE nimi LIKE '($kirjain)%' ORDER BY nimi";
$res = mysql_query($sql);

echo("<tr><td>id</td><td>nimi</td><td>hinta</td>");

while ($values = mysql_fetch_array($res))
	{
	echo("<td>{$values["id"]}</td>");
	echo("<td>{$values["nimi"]}</td>");
	echo("<td>{$values["hinta"]}</td>");
	echo("</tr></table>");

        }



?>

Akseli F [17.09.2004 15:44:14]

#

Miten ongelma ilmenee? Mahdolliset virheilmoitukset?

Itse en ainakaan keksinyt koodista kuin pari pikku virhettä, joiden en uskoisi toimitaan pahemmin vaikuttavan: Ainakin yhteyden sulkeminen puuttuu ja tuo taulukko lopetetaan useampaan otteeseen.

Ja mikset laittanut tätä kysymystä vanhaan ketjuun?

fooff [17.09.2004 18:26:45]

#

Akseli F kirjoitti:

Miten ongelma ilmenee? Mahdolliset virheilmoitukset?
Ja mikset laittanut tätä kysymystä vanhaan ketjuun?

Itseasiassa toi ei anna mitään virheilmoitusta. :/ Toi vaan ei tuo näytölle esim. a:lla alkavia tuotteita.

Typeryyttäni en laittanut, sorry!

ajv [17.09.2004 18:59:40]

#

Olisikohan noi sulut tuolla SQL-lauseessa ylimääräiset. Kohdassa LIKE '($kirjain)%'

btw.

$kirjain = get_magic_quotes_gpc() ? $_POST['kirjain'] : mysql_escape_string($_POST['kirjain']);

Lomakkeelta tulevat tiedot on hyvä tarkistaa AINA ennen kyselyn suoritusta.

Akseli F [17.09.2004 19:08:13]

#

Tässä korjattu koodi:

<?php

//yhteys ulkoiselle palvelimelle
$yhteys = mysql_connect("palvelin", "kayttaja", "salasana");

//valitaan tietokanta "test"
mysql_select_db("tietokanta", $yhteys);


$k = "abcdefghijklmnopqrstuvwxyzåäö";

for ($i = 0; $i < strlen($k); $i++)
{
echo "<a href=\"s.php?kirjain={$k[$i]}\">{$k[$i]}</a> ";
}
    echo("<table>");

$kirjain = $_GET['kirjain'];
$sql = "SELECT *FROM tuote WHERE nimi LIKE '{$kirjain}%' ORDER BY nimi";
$res = mysql_query($sql);

echo("<tr><td>id</td><td>nimi</td><td>hinta</td>");

while ($values = mysql_fetch_array($res))
    {
    echo("<tr><td>{$values["id"]}</td>");
    echo("<td>{$values["nimi"]}</td>");
    echo("<td>{$values["hinta"]}</td>");
    echo("</tr>");

        }

mysql_close($yhteys);

?>

Edit: ajv oli nopeampi :)
Tuo skriptille annettu kirjain okisi tosiaan hyvä tarkistaa, ettei käytäjä saisi jatkaa SQL-lausetta.
Ajv tosiaan oli oikeassa noiden sulkujen suhteen, ei niitä välttämättä tarvitse ja jos haluaa niitä käyttää niin niiden pitäisi ollla tyyppiä { ja }.

fooff [18.09.2004 15:17:25]

#

DankeDanke! mä huomasin kanssa ite et noissa suluissa oli vikaa.

ajv kirjoitti:

$kirjain = get_magic_quotes_gpc() ? $_POST['kirjain'] : mysql_escape_string($_POST['kirjain']);
Lomakkeelta tulevat tiedot on hyvä tarkistaa AINA ennen kyselyn suoritusta.

Ajv. Viitsisitkö selittää tuon ylläolevan toiminnan?

Vastaus

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

Tietoa sivustosta