Probleme bei der suche im Formular

raci

Mitglied
Hallo

ich habe in Problem bei der suchfunktion vieleicht könnt ihr mir ja helfen.

Wenn ich über das Formular was suche ,sowie artikel oder marke dann klappt es auch.

Das Problem ist wenn ich nichts suche aber auf suche gehe dann wird die ganze tabele angezeigt

wo liegt mein fehler?

vielen dank

html

PHP:
<form method="post" action="suche.php">
<input type="text" size="30" maxlength="100"  name="suchwort">
<input type="submit"  name="submit" value="Suchen">
</form>

php

PHP:
<?php
mysql_connect(" ", "xxxx","xx")  or die ("Keine Verbindung moeglich");
mysql_select_db("xxxx") or die ("Die Datenbank existiert nicht");
 
$abfrage="SELECT * FROM artikel WHERE artikel LIKE '%$suchwort%' OR marke LIKE '%$suchwort%' ";
$suchtext=str_replace(" ","','",$suchtext);
$ergebnis = mysql_query($abfrage) or die(mysql_error());
while($row = mysql_fetch_array($ergebnis))
{
echo
"<div>
<p>".$row['artikel']." </p>\n
<p>".$row['marke']."</p>\n
</div>\n";
}
?>
 
SQL:
LIKE '%$suchwort%'
Was wird daraus wenn $suchwort leer ist? Genau:
SQL:
LIKE '%%'
Und das findet logischerweise alles.

Du musst also vorher mit PHP überprüfen ob $suchwort leer ist und dann die Bedinung ändern oder die Abfrage ganz weglassen
 
Zuletzt bearbeitet von einem Moderator:
Die Select-Anweisung aufteilen bis zum WHERE-Teil, dann eine bedingung (if/else) ob die beiden Suchvariablen befüllt sind (isset/empty) und dann den Select-String wieder um den WHERE-Teil erweitern.
 
PHP:
$sql = "SELECT * FROM table";

if(isset($suchwort) && !empty($suchwort)){
    $sql .= " WHERE artikel LIKE '%$suchwort%' OR marke LIKE '%$suchwort%' "; 
}
$result = mysql_query($sql) or die(mysql_error());
 
jetz klappt nichts mehr

PHP:
<?php
mysql_connect(" ", "xxx","xxxx")  or die ("Keine Verbindung moeglich");
mysql_select_db("xxx") or die ("Die Datenbank existiert nicht");
 
$sql = "SELECT * FROM artikel";

if(isset($suchwort) && !empty($suchwort)){
    $sql .= " WHERE artikel LIKE '%$suchwort%' OR marke LIKE '%$suchwort%' "; 
}
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($ergebnis))
{
echo
"<div>
<p>".$row['artikel']." </p>\n
<p>".$row['marke']."</p>\n
</div>\n";
}
?>
 
Nicht nur blind kopieren....

PHP:
// nicht $result sondern $ergebnis!
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($ergebnis))

PS: "Jetzt klappt gar nichts mehr" is keine Fehlermeldung!"
 
super jetz findet er wieder alles...aber das Problem... wenn nichts in der suchmaske steht ich aber trotzdem auf suche gehe zeigt er mir immer noch die ganze tabelle an was das drin steht ..artikel und marke

das darf doch nicht sein
 
Zurück