Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL abfrage aus 2 Tabellen mit LIKE

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL abfrage aus 2 Tabellen mit LIKE

    Hallo Leute,

    ich habe zurzeit eine SQL - Abfrage über eine Spalte. Es wird über ein Inputfeld ein "Suchwort" eingegeben und dieses Word wird in eine Variable $name geschrieben. Dann wird über diese SQL Abfrage das Wort in der Tabelle a_name gesucht und ausgegeben. (Funktioniert mit diesem CODE!)
    Siehe Code:
    PHP-Code:
    $abfrage "SELECT * FROM artikel WHERE a_name LIKE '%$name%'"

    Nun möchte ich dass das eingegebene Suchwort nicht nur in der Spalte a_name sondern auch in Spalte a_tags gesucht wird. Ich habe mehrere Varianten probiert. Ich konnte mit meiner Abfrage jedoch nur in einer Spalte suchen oder bekam Fehlermeldungen.

    Ausschnit meiner versuchten Varianten:
    PHP-Code:
    $abfrage "SELECT * FROM artikel WHERE a_name, a_tags LIKE '%$name%'"
    PHP-Code:
    $abfrage "SELECT * FROM artikel WHERE (a_name LIKE '%$name%') or(a_tags LIKE '%$name%') "

    Mein Problem ist das ich die Abfrage nicht abgeändert bekomme so dass ich 2 Tabellen durchsuche!

    Über einen Tipp oder Codeschnipsel wäre mir sehr geholfen.


    Gruß Andreas


  • #2
    Verfasse bitte erst mal deine Problembeschreibung so, dass klar erkennbar wird, was du eigentlich erreichen willst.

    Kommentar


    • #3
      Meinst du wirklich Tabellen oder Spalten (so wie in deinen Codebeispielen)?

      Mach halt eine Abfrage pro Tabelle.
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar


      • #4
        Sorry ich habe mich verschrieben ich meine Spalten

        Kommentar


        • #5
          Was sagt denn mysql_error() dazu?

          Debugging:SQL - PHP.de Wiki
          http://hallophp.de

          Kommentar


          • #6
            AHm ja ich habe nur so kleine Syntax Fehler drin die bekomme ich ja selbst immer wieder raus


            Ich habe mal meinen kompletten Code gepostet... mir ist bewusst das ich einige fehlende Sicherheitspunkte habe, darum gehts mir hier aber erst mal nicht.

            ich habe auch schon die Abfrage unter meine andere Abfrage kopiert und WHERE a_name durch WHERE a_tag ersetzt doch im $result wird denn immer nur die letzte Abfrage gespeichert.... :



            Code Ausschnitt:
            PHP-Code:
              if($name == '') {
                echo 
            'Sie haben im Suchfeld nichts ausgefüllt!';
                }
                
                else{
                
                  
            $abfrage "SELECT 
                            * 
                            FROM artikel 
                            WHERE a_name 
                            LIKE '%
            $name%'"
                  
            $result mysql_query($abfrage) OR die("<pre>\n".$abfrage."</pre>\n".mysql_error()); 
                  
                  
                    if(
            $row mysql_fetch_assoc($result)) {
                        
            $abfrage "SELECT 
                                    * 
                                    FROM artikel 
                                    WHERE a_name 
                                    LIKE '%
            $name%'"
                        
            $result mysql_query($abfrage) OR die("<pre>\n".$abfrage."</pre>\n".mysql_error()); 

                    
                            while (
            $row mysql_fetch_assoc($result)) {
                            
            # HTML TABELLE MIT EINTRÄGEN
                            

                    } 
                
                    else { 
                        echo 
            "Es wurde noch kein Eintrag zu \"<u>$name</u>\" in der Datenbank gefunden."."<BR>";
                        echo 
            "Bitte nehmen Sie sich doch kurz Zeit"."<BR>"."<BR>";
                        include 
            'register.php';
                    }
                } 

            PS: Ich habe immer noch kein Lösung gefunden wie ich beide abfrage... manchmal steh ich echt aufem schlauch ^^


            Gruß Andreas

            Kommentar


            • #7
              AHmm ich habe einen Kollegen gefragt der sich noch sehr gut auskennt. Nun habe ich die Lösung und funktioniert alles super für die die eventuel das gleiche Problem haben.

              Das ist die Lösung: CONCAT(a_name, a_tags)
              PHP-Code:
              $abfrage "SELECT * FROM artikel WHERE CONCAT(a_name, a_tags) LIKE '%$name%'"

              Kommentar


              • #8
                Zitat von maclaim1988 Beitrag anzeigen
                AHmm ich habe einen Kollegen gefragt der sich noch sehr gut auskennt.
                Das ist wohl zu bezweifeln ...

                Nun habe ich die Lösung und funktioniert alles super für die die eventuel das gleiche Problem haben.
                PHP-Code:
                WHERE CONCAT(a_namea_tagsLIKE '%$name%' 
                Wenn du nach lamer suchst, und a_name den Wert 'angela' und a_tags den Wert 'merkel' enthält - dann bekommst du damit einen Treffer.

                Ich bezweifle, dass dies ein beabsichtigtes Ergebnis ist.
                (Falls doch, dann war deine Problembeschreibug nicht nur schlecht, sondern unterirdisch miserabel.)

                Kommentar


                • #9
                  Diese Abfrage von dir:
                  Code:
                  $abfrage = "SELECT * FROM artikel WHERE (a_name LIKE '%$name%') or(a_tags LIKE '%$name%') ";
                  ist doch korrekt, entweder $name kommt in a_name oder a_tags vor? Das ist doch was du suchst ...
                  "Mein Name ist Lohse, ich kaufe hier ein."

                  Kommentar

                  Lädt...
                  X