+ Antworten
Ergebnis 1 bis 12 von 12

Thema: SqL Select problem

  1. #1
    TP-Junior Professorflash macht alles soweit korrekt Avatar von Professorflash
    Registriert seit
    May 2009
    Beiträge
    12

    Question SqL Select problem

    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:

    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 %' ' " 

    Hoffentlich findet jemand den Fehler,

    mfg
    der Professor

  2. #2
    TP-Insider Settler ist ein richtiges Arbeitstier - DANKE Settler ist ein richtiges Arbeitstier - DANKE Settler ist ein richtiges Arbeitstier - DANKE Settler ist ein richtiges Arbeitstier - DANKE Avatar von Settler
    Registriert seit
    Feb 2008
    Ort
    Marl
    Beiträge
    805
    Zitat Zitat von Professorflash Beitrag anzeigen
    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 %' ' " 

    1. probier mal '%$searchkey%'
    also ohne Leerzeichen
    2. warum ist das where Statement in einfachen Anführungszeichen?

  3. #3
    TP-Junior Professorflash macht alles soweit korrekt Avatar von Professorflash
    Registriert seit
    May 2009
    Beiträge
    12
    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:
    1064You have an error in your SQL syntaxcheck 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 

  4. #4
    TP-Veteran Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.685
    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...

    PHP-Code:
    "...
    WHERE 
    newsdb.newstitle IS LIKE '%"
    .$searchkey."%' OR "...
    So waere es schicker.

    Dein Fehlermeldungstext laesst vermuten, dass dein momentaner Quelltext nicht mit dem hier gezeigten Quelltext uebereinstimmt. Kann das sein?
    Gruss Guin
    Mein Blog

  5. #5
    TP-Specialist phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    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 %' ' " ;
    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.

  6. #6
    TP-Junior Professorflash macht alles soweit korrekt Avatar von Professorflash
    Registriert seit
    May 2009
    Beiträge
    12
    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:

    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 
    Das Ende ist irgendwie abgekürzt , also OR articledb.ar.....


    Ich hoffe ihr könnt damit etwas anfangen, danke für die bisherige Hilfe.

    mfg
    Der Professor

  7. #7
    TP-Specialist phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Gibt's überhaupt ein "IS LIKE" so wie Du es benutzt? Ich kennen nur "LIKE".

  8. #8
    TP-Junior Professorflash macht alles soweit korrekt Avatar von Professorflash
    Registriert seit
    May 2009
    Beiträge
    12

    Gelöst

    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

  9. #9
    TP-Junior Professorflash macht alles soweit korrekt Avatar von Professorflash
    Registriert seit
    May 2009
    Beiträge
    12
    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") ?

  10. #10
    TP-Veteran Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Guin ist ein richtiges Arbeitstier - DANKE Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.685
    Moin,
    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
    WHERE suchwort='suchwort'

    wie kann man spezielle Suchfunktionen einbauen (z.B. sowie zusammenhängende strings "worta + wortb" oder -"dieser string darf nicht auftauchen") ?
    Das musst du phrasen. Also nach plus und Minus und Anfuehrungsstrichen suchen und entsprechend auseinander nehmen. Danach dann zu einem query String zusammen basteln.
    WHERE suchwort= 'worta' AND suchwort = 'wortb' AND suchwort NOT 'wortc'
    Gruss Guin
    Mein Blog

  11. #11
    TP-Junior Professorflash macht alles soweit korrekt Avatar von Professorflash
    Registriert seit
    May 2009
    Beiträge
    12
    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['...'] ..

  12. #12
    TP-Junior Professorflash macht alles soweit korrekt Avatar von Professorflash
    Registriert seit
    May 2009
    Beiträge
    12
    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?

+ Antworten

Ähnliche Themen

  1. mySQL (PHP) - Select in Select optimieren
    Von Vitamin-R im Forum Traum-Dynamik
    Antworten: 4
    Letzter Beitrag: 05.01.2009, 20:37
  2. Antworten: 2
    Letzter Beitrag: 22.07.2006, 22:57
  3. [PHP] Problem beim Select
    Von Budda im Forum Traum-Dynamik
    Antworten: 8
    Letzter Beitrag: 12.05.2004, 13:11
  4. Select MAX Problem
    Von meisi im Forum Traum-Dynamik
    Antworten: 4
    Letzter Beitrag: 11.04.2003, 13:41
  5. PHP und SELECT-BOXEN-PROBLEM
    Von NeTHippie im Forum Traum-Dynamik
    Antworten: 1
    Letzter Beitrag: 03.02.2002, 00:44

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51