suchscript über mehrere mysql felder

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

  • suchscript über mehrere mysql felder

    Folgendes Problem:

    Ich habe ein Suchformular in dem ich nach einem Land suchen kann.
    Die Datenbank sieht so aus:

    Land1|Land2|Land3|Land4|Land5
    --------------------------------------------------------------
    Deutschland|Schweiz|0|Polen|Frankreich
    0|Schweiz|Österreich|Polen|Frankreich
    0|0|0|0|Frankreich
    Deutschland|Schweiz|Österreich|Polen|Frankreich


    Wenn eine 0 eingetragen ist, dann ist das Land nicht verfügbar.
    Nun möchte ich mit meinem Suchscript wie folgt suchen können:
    Wenn ich "d" eingebe soll er mir alle Länder aus einer Zeile mit "d" ausgeben oder bei "e" alle mit e. Oder wenn ich Schweiz eingebe nur Schweiz logischerweise.

    Ich habe es schon wie folgt probiert:
    $query = "SELECT * FROM data WHERE Land1,Land2,Land3,Land4,Land5 LIKE '%".$search."%'";
    Allerdings stimmt das nicht so ganz und ich weiss nicht wieso. Was muss z.B. hinter das WHERE ?

  • #2
    Kannst du die Argumente vom Where mit komma trennen?

    Kommentar


    • #3
      damit sollte es gehen

      Code:
      $query = "SELECT  *
                FROM    data
                WHERE   Land1 LIKE '%".$search."%'" OR
                        Land2 LIKE '%".$search."%'" OR
                        Land3 LIKE '%".$search."%'" OR
                        Land4 LIKE '%".$search."%'" OR
                        Land5 LIKE '%".$search."%'";
      aber was du da machst, ist aber eine sehr komische tabellen-struktur.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        also ich würde vorschlagen ein land pro zeile zu schreiben und dann noch irgendwie ein spalte, wo eine zahl für die 5 länder die zusammengehören steht...
        so ist das wohl schlecht, denn sobald da select * ... steht, wird er dir immer ne ganze zeile ausgeben..

        aber ab damit ins SQL forum
        meine Projekte bestaunen: http://www.kleiza.de

        Kommentar


        • #5
          danke Campus.
          das ist genau was ich meine.....
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Original geschrieben von Campus
            also ich würde vorschlagen ein land pro zeile zu schreiben und dann noch irgendwie ein spalte, wo eine zahl für die 5 länder die zusammengehören steht...
            so ist das wohl schlecht, denn sobald da select * ... steht, wird er dir immer ne ganze zeile ausgeben..

            aber ab damit ins SQL forum

            wie meinst du das mit der zahl wo die länder zusammen gehören? Und was muss ich schreiben damit dann das suchergebnis ausgegeben wird?

            Kommentar


            • #7
              also land 1-5 sollen ja in irgendeiner weise zusammen gehören, sonst würdes du ja die nicht in einer spalte schreiben, jedoch willste nur zb schweiz ausgebelassen, obwohl da noch weitere 4 länder sind

              mein vorschlag wäre:

              Land | gruppe

              Deutschland|0
              Schweiz|0
              Polen|0
              Frankreich|0
              Schweiz|1
              Österreich|1
              Polen|1
              Frankreich|1
              Frankreich|2
              Deutschland|3
              Schweiz|3
              Österreich|3
              Polen|3
              Frankreich|3

              irgendwie so...
              select Land from tabellenname where land LIKE '%".$search."%'"; // die ganze tabelle
              select Land from tabellenname where land LIKE '%".$search."%'" and gruppe=0; // nur innerhalb der ertsten gruppe...

              usw.
              ich weiss nicht in wie fern dieses kozept dir entgegenkommt, überlegs dir..
              meine Projekte bestaunen: http://www.kleiza.de

              Kommentar


              • #8
                nee, bei der suche geht es darum: man sucht nach einem land und dann soll jeder anbieter ausgegeben werden, der dieses land betreut. nur weiss ich nicht wie ich das machen soll. mit mysql_fetch_array gibt er mir jede zeile zurück... help

                bis jetzt siehts so aus:

                <?
                include("config.php");
                $conn = mysql_connect($dbserver,$dbuser,$dbpass);
                if (!$conn)
                {
                echo "Fehler >>> Verbindung zur Datenbank konnte nicht hergestellt werden.<br>Bitte kontaktieren Sie den Administrator";
                }
                mysql_select_db($dbname,$conn);

                // Suchfeld Länder
                if(!empty($sanass))
                {
                $query = "SELECT * FROM plusdata WHERE an LIKE '%".$search."%' OR ao LIKE '%".$search."%' OR ap LIKE '%".$search."%' OR aq LIKE '%".$search."%' OR ar LIKE '%".$search."%' OR ass LIKE '%".$search."%'";
                }

                $result = mysql_query($query,$conn);
                $gesamt = mysql_num_rows($result);
                mysql_close($conn);
                if ($gesamt == 0)
                {
                echo "Keine Einträge gefunden.";
                }
                while($z = mysql_fetch_array($result, MYSQL_ASSOC))
                {
                print "<tr>
                <td class=\"unnamed1\"><font face=\"Arial, Helvetica, sans-serif\" size=\"2\" class=\"unnamed1\">".$z["search"]."</font></td>
                </tr>";
                }
                ?>
                Zuletzt geändert von coder; 24.12.2002, 14:40.

                Kommentar


                • #9
                  ich komm einfach nicht drauf wie man das ausgeben soll wenn in einem query mehrere felder angesprochen werden, wie geb ich dann alle zeilen aus, in denen das gesuchte gefunden wurde?

                  Kommentar


                  • #10
                    das ergebnis deiner query beinhaltet alle ergebnisse deiner suche, sprich alles was du gesucht hast, ist enthalten. die einträge bei denen nichts gefunden wurde, werden auch nicht gezeigt...
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      ja aber sag mir den befehl um alles auszugeben? muss ich mysql_fetch_array anwenden und dann für jedes feld echo $z["bla"]; machen?

                      Kommentar


                      • #12
                        ja so kannst du das machen
                        meine Projekte bestaunen: http://www.kleiza.de

                        Kommentar


                        • #13
                          Ich komm net drauf!

                          // Suche Query
                          if(!empty($sanass))
                          {
                          $query = "SELECT * FROM plusdata WHERE an LIKE '%".$sanass."%' OR ao LIKE '%".$sanass."%' OR ap LIKE '%".$sanass."%' OR aq LIKE '%".$sanass."%' OR ar LIKE '%".$sanass."%' OR ass LIKE '%".$sanass."%' OR at LIKE '%".$satbi."%'";
                          }

                          und dann geb ich’s z.b. mit echo $z[„an“] aus aber da gibt er dann alle zeilen aus… Ich checke es nicht wie es gehen soll!!!!!
                          Wenn ich es so mache:
                          $query = "SELECT * FROM plusdata WHERE an LIKE '%".$sanass."%'”;
                          dann funktioniert die suche perfekt nur ich weiss net wie ich mit mehreren Feldern umgehen soll?!?!?!

                          Kommentar


                          • #14
                            Sicher dass er dir alle Zeilen ausgibt?
                            Sind vielleicht in allen Zeilen SUCHWORT vorhanden?

                            Kommentar


                            • #15
                              beispiel.

                              die suche nach 'a' ist gestartet.
                              jetzt kommt aber 'a' in einem der felder pro eintrag vor. dann gibts ein ergebnis

                              die suche nach 'aa' ist gestartet.
                              jetzt kommt aber 'aa' nur in einem der felder in nur 2 einträge vor. dann gibst auch nur zwei ergebnisse.

                              verstanden woraus ich hinaus wollte?
                              versuche deine suche mal mit einem etwas längerem und eindeutigerem suchstring zu starten.

                              schliesslich machst du überall LIKE '%....%' . da muss man schon aufpassen, was man macht...
                              denn das vorkommen irgendwo innerhalb einen feldes reicht schon als treffer aus.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X