MySQL Suchfunktion?!

derbarbar

Grünschnabel
hallo,

bin hier der neue :)

hab da auch gleich ein kleines problem.
und zwar möcht ich für meine mysql-db eine einfache suchfunktion in meine homepage bauen.
mit diesem code versuche ich es:
Code:
$abfrage="SELECT * FROM liste WHERE nummer in ('$suchtext') or name in ('$suchtext') or beschreibung in ('$suchtext')";
$suchtext=str_replace(" ","','",$suchtext);
$ergebnis = mysql_query($abfrage) or die(mysql_error());
while($row = mysql_fetch_assoc($ergebnis))
{
echo
"<p>".$row['nummer']."</p>\n
<p>".$row['name']."</p>\n
<p".$row['beschreibung']."</p>";
}
soweit so gut.
die suchfunktion an sich scheint zu funktionieren da er mir mal bei einem einfachem echo $row; alles gefundene in den array angezeigt hat.
nur komisch das dies nur einmal war, obwohl ich es später wieder versucht habe.
was mach ich den falsch?
eigentlich soll halt "ganz einfach" die komplette db nach dem eingegebenen wort durchsucht werden.
bei treffern sollen dann die jeweiligen kompletten zeilen ausgelesen und angezeigt werden.

ist bestimmt ganz easy ;)

danke schonmal für alle anregungen und lösungen.

gruß
derbarbar
 
Dein Select kann auch so aussehen:

Code:
SELECT * FROM tabelle WHERE feldname LIKE 'suchwort' OR otherfeldname LIKE 'suchwort' ...

Diese Schreibweise gibt dir NUR daten aus, die EXAKT auf den Suchbegriff passen.
Willst Du nun, dass das Suchwort "so ungefähr" gefunden werden soll, egal ob es nun "meinSUCHWORT" oder deinSUCHWORT" heissen soll, kannst Du schreiben

Code:
SELECT * FROM tabelle WHERE feldname1 LIKE '%suchwort%' OR feldname2 LIKE '%suchwort%' ...

LG
Andy
 
danke andy für die tipps.
das kann ich gut gebrauchen - und hab auch noch gleich was gelernt.
bin noch ein kleiner grünschnabel in mysql & php :)

aber wieso funktioniert die ausgabe nicht?
 
mysql_fetch_assoc() entspricht in der Funktionsweise exakt dem Aufruf von mysql_fetch_array() mit Angabe von MYSQL_ASSOC als optionalen zweiten Parameter. Diese Funktion liefert Ihnen nur ein assoziatives Array. Das war das ursprüngliche Verhalten von mysql_fetch_array(). Falls Sie sowohl numerische, als auch assoziative Indizes benötigen, verwenden Sie mysql_fetch_array().

Du Kannst anstelle von mysql_fetch_assoc() mal mysql_fetch_array() probieren, evtl. liegt dort der Fehler - der Funktionsaufruf ist derselbe ;)
 
Poste mal bitte einen Code-Schnipsel - dann kann ich gucken

ok!
hab hier den code mal in abgespeckter form - aber von der struktur her gleich

also in einer html-datei hab ich folgendes formular:
Code:
<form action="suche.php">
<input type="text" name="suchtext" size="30" />&nbsp;&nbsp;<input type="submit" value="suchen">
</form>

dieses sendet dann den inhalt der variable "suchtext" an die datei suche.php
Code:
<?php
mysql_connect("server", "user","pw")  or die ("Keine Verbindung moeglich");
mysql_select_db("db") or die ("Die Datenbank existiert nicht");

$abfrage="SELECT * FROM liste WHERE nummer in ('$suchtext') or name in ('$suchtext') or beschreibung in ('$suchtext')";
$suchtext=str_replace(" ","','",$suchtext);
$ergebnis = mysql_query($abfrage) or die(mysql_error());
while($row = mysql_fetch_array($ergebnis))
{
echo
"<div>
<p>".$row['nummer']."</p>\n
<p>".$row['name']."</p>\n
<p>".$row['beschreibung']."</p>\n
</div>\n";
}
?>

eigentlich müsste es doch klappen?!
was mach ich da falsch?

danke schonmal im voraus für deine mühe
 
Ok ... der Fehler liegt im <form>-Tag:

Ohne Angabe einer Methode verwenden die Browser "GET" -Ergo wird nix gepostet und deine Variablen-Array "$_POST" ist somit Leer.Du musst nun eigentlich nur in das <form>-tag noch " method="POST"> " einfügen, und dann sollte das gehen ;)
 
danke schön
hat geklappt :)

war schon fast dämlich von mir. habe mich aber bei der fehlersuche immer nur auf das php skript konzentriert^^

nun gleich zur nächsten frage :D
wenn ich ein suchbegriff eingebe findet er diesen nur wenn die zelle exakt das selbe enthält.
wie kann es drehen oder wenden das er es auch findet wenn noch eins zwei andere wörter da stehen?

und bei dieser methode (ha da ist sie wieder^^)
Code:
$abfrage="SELECT * FROM liste WHERE nummer LIKE '%$suchwort%' OR name in LIKE '%$suchwort%' OR beschreibung LIKE '%$suchwort%'";
kommt folgender fehler
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE '%%' OR beschreibung LIKE '%%'' at line 1
was ist nun denn wieder?
 
Zurück