Hey TP'ler ,
ich habe ein Problem in meinem SQL Select. Es handelt sich um eine Suchabfrage aber diese funktioniert irgendwie nur wenn ich den namen der Spalte in das Suchfenster eingebe, so sollte das ja eigentlich nicht laufen, sondern die Spalten sollen nach dem Suchwort durchsucht werden.
Hier meine SQL Anfage:
Hoffentlich findet jemand den Fehler,PHP-Code:$search = "Select newsdb.newstitle, newsdb.newsid,
newsdb.newscontent, articledb.articleid, articledb.articletitle,
articledb.articlecontent, tutorialdb.tutid, tutorialdb.tuttitle,
tutorialdb.tutcontent FROM newsdb, articledb, tutorialdb
WHERE
'newsdb.newstitle IS LIKE '% $searchkey %' OR newsdb.newscontent IS LIKE '% $searchkey %'
OR articledb.articletitle IS LIKE '% $searchkey %' OR articledb.articlecontent IS LIKE '% $searchkey %'
OR tutorialdb.tutorialtitle IS LIKE '% $searchkey %' OR tutorialdb.tutorialcontent IS LIKE '% $searchkey %' ' " ;
mfg
der Professor![]()
Hey Settler,
ich hab nun die leerzeichen entfernt, aber Testen kann ich dies noch nicht und ohne die einfachen Anführungszeichen um die where Klausel kommt folgende Fehlermeldung, die ich leider nicht so ganz interpretieren kann:
Das kommt wenn ich z.B. page als Suchtext eingebe:
PHP-Code:1064: 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 '%page%' OR newsdb.newscontent
IS LIKE '%page%' OR articledb.articletitle I' at line 3
Moin,
ein echo $search hast du schon gemacht? Die Ausgabe sieht auch genau so aus, wie es sein soll?
Wenn die Leerzeichen drin bleiben, dann sucht er auch nach Leerzeichen usw...
So waere es schicker.PHP-Code:"...
WHERE
newsdb.newstitle IS LIKE '%".$searchkey."%' OR "..."
Dein Fehlermeldungstext laesst vermuten, dass dein momentaner Quelltext nicht mit dem hier gezeigten Quelltext uebereinstimmt. Kann das sein?
Gruss Guin
Mein Blog
Zähl mal deine Single Quotes, ob dir was auffällt - das mit den Leerzeichen wurde ja schon angesprochen. Dann würde sich sowas viel einfacher lesen lassen, wenn Du Aliases verwenden würdest und auch ansonsten für etwas mehr Übersicht sorgen würdest, indem Du die Zeile entsprechend formatierst.Code:$search = "Select newsdb.newstitle, newsdb.newsid, newsdb.newscontent, articledb.articleid, articledb.articletitle, articledb.articlecontent, tutorialdb.tutid, tutorialdb.tuttitle, tutorialdb.tutcontent FROM newsdb, articledb, tutorialdb WHERE 'newsdb.newstitle IS LIKE '% $searchkey %' OR newsdb.newscontent IS LIKE '% $searchkey %' OR articledb.articletitle IS LIKE '% $searchkey %' OR articledb.articlecontent IS LIKE '% $searchkey %' OR tutorialdb.tutorialtitle IS LIKE '% $searchkey %' OR tutorialdb.tutorialcontent IS LIKE '% $searchkey %' ' " ;
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
ahoj,
ich kann leider grade nicht so ganz ausführlich antworten, ich komme grade von der Arbeit und muss nun leider noch weg. Heute Abend werde ich mir alles nochmal ganz genau ansehen. Ich poste hier nochmal den aktuellen Code, das mit %.$searchkey.% hab cih auch versucht :/
PHP-Code:$search = "Select newsdb.newstitle, newsdb.newsid,
newsdb.newscontent, articledb.articleid, articledb.articletitle,
articledb.articlecontent, tutorialdb.tutid, tutorialdb.tuttitle,
tutorialdb.tutcontent FROM newsdb, articledb, tutorialdb
WHERE
newsdb.newstitle IS LIKE '%".$searchkey."%'
OR newsdb.newscontent IS LIKE '%".$searchkey."%'
OR articledb.articletitle IS LIKE '%".$searchkey."%' OR
articledb.articlecontent IS LIKE '%".$searchkey."%' OR
tutorialdb.tutorialtitle IS LIKE '%".$searchkey."%' OR
tutorialdb.tutorialcontent IS LIKE '%".$searchkey."%' " ;
Echo Befehl der SQL-Select
PHP-Code:Select newsdb.newstitle,
newsdb.newsid,
newsdb.newscontent,
articledb.articleid,
articledb.articletitle,
articledb.articlecontent,
tutorialdb.tutid,
tutorialdb.tuttitle,
tutorialdb.tutcontent
FROM
newsdb,
articledb,
tutorialdb
WHERE
newsdb.newstitle IS LIKE '%teststring%'
OR newsdb.newscontent IS LIKE '%teststring%'
OR articledb.articletitle IS LIKE '%teststring%'
OR articledb.articlecontent IS LIKE '%teststring%'
OR tutorialdb.tutorialtitle IS LIKE '%teststring%'
OR tutorialdb.tutorialcontent IS LIKE '%teststring%'
Fehlerausgabe:
Das Ende ist irgendwie abgekürzt , also OR articledb.ar.....PHP-Code:1064:
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 '%teststring%' OR newsdb.newscontent IS LIKE
'%teststring%' OR articledb.ar' at line 3
Ich hoffe ihr könnt damit etwas anfangen, danke für die bisherige Hilfe.
mfg
Der Professor
Gibt's überhaupt ein "IS LIKE" so wie Du es benutzt? Ich kennen nur "LIKE".
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
oh man SCHANDE SCHANDE SCHANDE
Rizzo... du hast recht, aber ich muss zu meiner Verteidigung sagen, dass mein Kumpel mir diesen "IS" Like befehl genannt hat =/
Trotzdem hab ich danke dieses Threads ein wenig mehr gelernt, danke für eure Bemühungen
Schönen Abend noch
Der Professor
Hey,
ich habe aber nun ein 2. Problem, wie kann ich die Ausgabe der Datensätze nun so steuern, dass er nicht alle ausgibt, sondern nur die bei denen er das Suchwort gefunden hat. Das ist momentan mein kleines Problem und wie kann man spezielle Suchfunktionen einbauen (z.B. sowie zusammenhängende strings "worta + wortb" oder -"dieser string darf nicht auftauchen") ?
Moin,
WHERE suchwort='suchwort'wie kann ich die Ausgabe der Datensätze nun so steuern, dass er nicht alle ausgibt, sondern nur die bei denen er das Suchwort gefunden hat
Das musst du phrasen. Also nach plus und Minus und Anfuehrungsstrichen suchen und entsprechend auseinander nehmen. Danach dann zu einem query String zusammen basteln.wie kann man spezielle Suchfunktionen einbauen (z.B. sowie zusammenhängende strings "worta + wortb" oder -"dieser string darf nicht auftauchen") ?
WHERE suchwort= 'worta' AND suchwort = 'wortb' AND suchwort NOT 'wortc'
Gruss Guin
Mein Blog
okay danke dir, aber zur 1. Frage:
Sollte ich dann lieber keine große Select anweisung machen, sondern mehrere kleinere, die durch If ereignisse ausgelöst werden?
Code:wenn suchwort in artikeldb gefunden - echo $row['...'] .. wenn suchwort in newsdb gefunden - echo $row['...'] .. wenn suchwort in tutorialdb gefunden - echo $row['...'] ..
womit kann ich das suchwort in der if abfrage mit den ergebniss der select ausgabe quasi vergleichen?
if( $searchkey == "der Selectanweisung, die in den news tabellen etwas mit dem suchstring gefunden hat") ? Wie drücke ich letzteres dann genau aus?
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)