online 1
gast (50)

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

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon steindesign vom 11.06.2020, 09:45 Options

Lösung

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

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 schreiben

Antwort 1 von Teerbaby vom 11.06.2020, 10:03 OptionsLösung

Lösung
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 vom 11.06.2020, 10:19 Options

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 vom 11.06.2020, 10:42 Options

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 vom 11.06.2020, 19:14 Options

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 vom 12.06.2020, 09:22 Options

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.

Ähnliche Themen

HTML-Quellcode mit PHP eibinden
xeo15  23.05.2007 - 164 Hits - 3 Antworten

suche ein script für ein terminkalender mit php und sql
timoxy  23.06.2007 - 117 Hits - 4 Antworten

html file zu php
Mirco151  04.07.2007 - 171 Hits - 1 Antwort

ERROR: mysql_fetch_array
tAsKi  12.01.2008 - 93 Hits - 2 Antworten

SQL-DB über HTML via PHP befüllen - wie ?
Tumulus  20.05.2008 - 37 Hits - 9 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 09:21:55 2026