Heey, ik heb dus een vraag, want ik kom ergens niet uit.
Ik heb dus een zoekscript gemaakt, wat wel ongeveer werkt, nu heb ik gemaakt dat je bij alle titels die je vindt je op een link kan klikken en gaat naar bekijkinfo.php en dan gaat het id van die titel mee, dus het wordt bekijkinfo.php?id= en dan id. Dit werkt allemaal, maar bij bekijkinfo.php werkt het niet. Dit is mijn script:
<?php
if (!@mysql_select_db("tabel", @mysql_connect("localhost", "gebruikersnaam", "password")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
$sql = "SELECT id,titel,tekst FROM zoeken WHERE id='%$_GET[id]%'";
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res))
{
echo "<p>Titel: <b>$row[titel]</b><br>";
echo "Tekst: <b>$row[tekst]</b>";
}

?>
Het werkt wel met de informatie, maar als ik het id verander in het adres blijft hij maar hetzelfde weergeven van id 0. Ik denk dus dat er in het SELECT script iets verkeerd zit. Kan iemand mij helpen?

Miniejjj
Ik zou het altijd nog zo doen:
<?php
if (!@mysql_select_db("tabel", @mysql_connect("localhost", "gebruikersnaam", "password")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
$sql = "SELECT id,titel,tekst FROM zoeken WHERE id='%".$_GET['id']."%'";
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res))
{
echo "<p>Titel: <b>".$row['titel']."</b><br>";
echo "Tekst: <b>".$row['tekst']."</b>";
}

?>
Variabelen buiten quotes halen en je quotes goed noteren:
<?
// fout:
$sql = "SELECT id,titel,tekst FROM zoeken WHERE id='%$_GET[id]%'";

// goed
$sql = "
SELECT
id,
titel,
tekst
FROM
zoeken
WHERE
id='".mysql_real_escape_string($_GET['id'])."'
";
?>
Tevens heb je geen % nodig bij de vergelijking, je gebruikt tenslotte geen LIKE.
Even 2 opmerkingen
- Variabelen buiten quotes
- Altijd je variabelen die je gebruikt in je Query's controleren! Om SQL injection tegen t egaan.

<?php
if (!@mysql_select_db("tabel", @mysql_connect("localhost", "gebruikersnaam", "password")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
if(is_numeric($_GET['id']) )
{
$sql = "
SELECT
id,
titel,
tekst
FROM
zoeken
WHERE
id ='".addslashes($_GET['id'])."'";
$res = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_array($res))
{
echo "<p>Titel: <b>".$row[titel]."</b><br>";
echo "Tekst: <b>".$row[tekst]."</b>";
}
}
?>

Edit:

Lol frank was me al voor ><
Jullie zijn fantastisch! Bedankt...

Miniejjj
@Thijs: Sorry!

Daarnaast gebruik jij de achterhaalde addslashes() die jouw data verneukt. Ik kan me niet voorstellen dat je daarop zit te wachten.
pgFrank schreef op 22.11.2007 18:36
Daarnaast gebruik jij de achterhaalde addslashes() die jouw data verneukt. Ik kan me niet voorstellen dat je daarop zit te wachten.
Bovendien is addslashes daar overbodig omdat al met is_numeric() gecontroleerd is of het id numeriek is. Daar komen dus al geen vreemde tekens meer in voor.

Reageren