Liebe php-Experten, da ich keine php-Kenntnisse besitze (alles zusammengesuchter Code), kann ich folgendes Problem leider nicht lösen:
-
Wie übergebe ich den Suchbegriff (z.B. „Pizza“) an das Script „suchergebnis.php“, das aufgerufen wird, sobald der Benutzer auf „Abschicken“ geklickt hat. Hier das HTML-Code-Schnipsel:
-
Die zu durchsuchenden Seiten befinden sich in einer MySQL-Tabelle(!!!). Mit folgendem Code (suchergebnis.php) hatte ich leider keinen Erfolg, einen Link zu den Seiten (Suchergebnisse), die den Suchbegriff „Pizza“ enthalten, wieder auf den Bildschirm zu zaubern:
$db = mysql_connect(„127.0.0.1“,„root“,"");
mysql_select_db(„NEMO“, $db);
$result = mysql_query(„SELECT filename FROM text_data WHERE INSTR($suchbegriff,text_data),$db“);
echo $result;
Leider habe ich nirgendwo eine Lösung für das Problem gefunden, vielleicht kann mir jemand einen Tipp geben? Vielen Dank!!!
Hallo!
Ich glaube, da ist einfach das Anfuehrungszeichen an der
falschen Stelle.
$result = mysql_query(„SELECT filename FROM text_data WHERE
INSTR($suchbegriff,text_data),$db“);
$result = mysql\_query("SELECT filename FROM text\_data WHERE
INSTR($suchbegriff,text\_data)",$db);
HTH
Patrick
Hallo Patrick,
danke für die schnelle Antwort. Leider klappt es immer noch nicht. Es gibt nicht einmal eine Fehlermeldung. Es wird nur ein schöner leerer Bildschirm angezeigt, obwohl der Suchbegriff auf alle Fälle in der Datenbank vorkommt.
Versuch mal:
$result = mysql\_query("SELECT \* from employees");
while ($myrow = mysql\_fetch\_array($result)) {
printf("%s
", $myrow["EinSpaltenNameDerTabelle"]);
}
EinSpaltenNameDerTabelle = je nachdem welchen Spalteninhalt
Du ausgeben willst.
Den Link musst Du Dir dann zusammenbauen,
je nachdem wie der Ergebnisstring aussieht.
In dem unteren Beispiel ist es eine URL
(hier: www.pizza.de)
$result = mysql\_query("SELECT \* from employees");
while ($myrow = mysql\_fetch\_array($result)) {
printf("[%s](%255C%2522http://%25s%255C%2522)
\n",
$myrow["link"], $myrow["link"]);
}
%s wird durch www.pizza.de ersetzt.
" wird durch " ersetzt.
Ausgabe waere dann:
www.pizza.de
(im Quelltext: www.pizza.de)
Hoffe das bringt Dich weiter.
Patrick
Hallo Patrick,
vielen Dank für Deine Mühe. Wenn ich den Code richtig verstehe, fehlt aber der Suchbegriff, den der Benutzer eingibt. SELECT * selektiert ja alles aus einer bestimmten Tabelle. Ich brauche aber nur diejenigen Felder in der Tabelle, in der das Suchwort vorkommt (dafür hatte ich in meinem Code ja INSTR(…) für Stringvergleich verwendet).
$result = mysql_query(„SELECT * from employees“);
while ($myrow = mysql_fetch_array($result)) {
printf("%s
", $myrow[„EinSpaltenNameDerTabelle“]);
}
Das mit der Ausgaberoutine hört sich vielversprechend an. Vielleicht findet er jetzt zumindest mal alles im Feld der Tabelle
)
Hallo Patrick,
Dein Skript funktioniert einwandfrei, nur eben mit dem kleinen Problem, dass alle Felder der Tabelle ausgegeben werden und nicht nur jene, in denen der Suchbegriff vorkommt. Irgendwas stimmt wohl mit dem MySQL-Befehl nicht?!
Hallo Nullachtfuenfzehn,
eingibt. SELECT * selektiert ja alles aus einer bestimmten
Das ist klar. Musst Du natuerlich fuer Deine Zwecke
anpassen. 
Kannst Du mit der SQL-Anweisung nicht mal folgendes
probieren!?
result = mysql\_query(
"Select \* from mytable where text\_data like '%$suchbegriff%'");
Rein logisch gesehen, sollte result alle Zeilen enthalten,
in denen in der Spalte text_data der Suchbegriff vorkommt.
Aus $myrow kannst Du ja dann auf die einzelnen
Spalten namentlich zugreifen und deren Inhalt lesen.
Gruss
Patrick
Hallo Patrick,
ich hab einen richtig saudämlichen Fehler gemacht und dies aufgrund eines anderen lange nicht gemerkt: ich hatte die Argumente vertauscht. Für alle, die auch mal auf das Problem stoßen: so geht es dann:
$result = mysql_query(„SELECT * FROM text_data WHERE INSTR(data,’$suchbegriff’)“,$db);
Das hat Nerven gekostet
)
Vielen Dank für Deine Mithilfe!!!
$result = mysql_query(„SELECT * FROM text_data WHERE
INSTR(data,’$suchbegriff’)“,$db);
Wobei ich wieder zu „SELECT filename“ statt „SELECT *“ zurückgehen würde (aus Performanzgründen).
Hagen