Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Textsuche über HTML Suchmaske in SQL-DB über php geht nicht !!





Frage

Hallo zusammen, Ich habe eine HTML Suchmaske erstellt um in einer SQL DB (sie liegt lokal) nach Zahlen zu suchen und mittels PHP programmiert. Dies funktionniert einwandfrei. Aber eine ähnliche Suchmaske die nach Text suchen soll (auch in der SQL-DB) auch über php funktionniert nicht. Was mache ich falsch ? Welcher Cracki kann mir helfen ? Hier kurz der HTML Code natürlich nur Auszug: ******************* <form action="http://localhost/suche-texte.php" method="POST" style="margin-left: 13px; width: 710px;"> <table style="width: 662px; height: 76px;" border="0"> <td style="width: 112px;" align="right">Schlüsselwort</td> <td style="width: 339px;" bgcolor="#ffcc99"> <align ="left"><input name="T2_schlüsselwort" size="20" type="text"></td> <td style="width: 587px;"><input value="Suchen" type="submit"> </tr> </table> *****************************und hier das PHP File <?php $verbindung = @mysql_connect("localhost","root","gaga"); if (!$verbindung) {echo "Keine Verbindung möglich!\n"; exit; } $Inhalt = $_POST["T2_schlüsselwort"]; $abfrage = "SELECT * from tabelle where Schlüsselwort like $Inhalt"; $erg = mysql_db_query("test",$abfrage,$verbindung); while (list($Schlüsselwort) = mysql_fetch_row($erg)) { echo "st das gesuchte: $Schlüsselwort<BR>\n"; } mysql_close($verbindung); ?> *********** Gruss Rolf

Antwort 1 von Teerbaby

versuchs mal so:
SELECT * from tabelle where Schlüsselwort like '%$Inhalt%'


kann sein, dass du da noch was escapen musst. Auf jeden Fall fehlen die Hochkommas und dann wären Wildcards wie % noch hilfreich.

Antwort 2 von steindesign

Folgendes hatte ich schon probiert, aber geht auch nicht !!

$Inhalt = $_POST["T2_schlüsselwort"];

$abfrage = "SELECT * from tabelle where Schlüsselwort like concat($Inhalt,'%')";

Gruss, Rolf

Antwort 3 von Teerbaby

wie gesagt, der Vergleichsstring muss in Hochkommas gesetzt werden.
select * from ab where xy = 'irgendwas' (genaue Entsprechung)
select * from ab where xy like 'irgendwas%' (fängt mit ... an)
select * from ab where xy like '%irgendwas%' (enthält ...)

Antwort 4 von steindesign

Hallo !!

Herzlichen DANK !! Nun hats geklappt.

Die Lösung ist wirklich nach dem Muster:

........Schlüsselwort like '%$Inhalt%'

Warum muss man dies nicht verketten mit . oder mit CONCAT ? Das ist mir noch ein Rätsel.

Gruss, Rolf

Antwort 5 von son_quatsch

Zitat:
Warum muss man dies nicht verketten mit . oder mit CONCAT ? Das ist mir noch ein Rätsel.
Weil CONCAT('text1', 'text2') ergibt 'text1text2' und nicht 'text2text1text2'. Damit LIKE aber möglichst viel findet, muss auch vor dem Ausdruck dann ein % stehen und nicht nur dahinter.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: