PHP Suchfunktion Problem

fabjan

Grünschnabel
Guten Tag,
habe folgendes Problem...
ich will eine Suche für meine Seite Programieren.. nur gibt mir das Script alle Datenbankeinträge aus :-( selbst wenn ich nichts in das Formular schreibe.
ich bin noch ziehmlich frisch was php und mysql angeht.. ich poste einfach mal den Code
hoffe mir kann jemand weiterhelfen.
liebe Grüße
Fabian

index.php:
Code:
<head>
<title></title>
</head>

<body>
<form method="post" action="suchen.php">
<input name="suchwort">
<input type="submit">
<br>
</form> 
</body>
</html>




suche.php:
Code:
<?php
mysql_connect("localhost", "xxx","xxx")  or die ("Keine Verbindung moeglich");
mysql_select_db("xxx") or die ("Die Datenbank existiert nicht");
 
$abfrage="SELECT * FROM user WHERE vorname LIKE '%$suchwort%' OR nachname LIKE '%$suchwort%' OR email LIKE '%$suchwort%'";
$suchtext=str_replace(" ","','",$suchtext);
$ergebnis = mysql_query($abfrage) or die(mysql_error());
while($row = mysql_fetch_array($ergebnis))
{
echo
"<div>
<p>".$row['vorname']." ".$row['nachname']."</p>\n
<p>".$row['email']."</p>\n
</div>\n";
}
?>
 
Was macht das SQL bei einem leeren Eintrag aus dem folgenden?
LIKE '%$suchwort%'
Genau, er macht daraus das oflgende ind damit triffst du alle Einträge
LIKE '%%'

Du musst vor dem SQL prüfen ob das Suchwort abgefüllt wurde.
Dann kannst du den Datenzugriff gleich ganz weglassen.
 
wenn ich nun LIKE '%$suchwort%' auf LIKE '$suchwort' ändere findet man aber gar nichts mehr obwohl der eintrag in der datenbank besteht
 
Hast du die Prüfung von yaslaw eingebaut?

Woher kommt eigentlich die $suchwort, die kommt doch wohl nicht direkt aus dem Formular?!
Man sollte für Formularvariablen $_GET und $_POST verwenden und dazu bei einer Datenbankabfrage escapen:
PHP:
$suchwort = $_POST['suchwort'];
$suchwort = mysql_real_escape_string($suchwort);

Hast du den Rat von yaslaw befolgt?
 
okay also das habe ich verstanden und geändert... die suche geht...

das was yaslaw meint ist wenn ich nichts in das formular eingebe wird alles angezeigt... richtig?
wie setze ich das nun um? bin echt noch sehr frisch
tut mir leid
 
Zurück