PHP Suchscript

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

  • PHP Suchscript

    Hi

    ich baste gerade an einem Suchscript für meine Datenbank nur will das nicht so richtig laufen.

    Ich beschreibe das ganz mal. Das Script hat drei Eingabefelder bei denen der User seine Strasse, seinen Ort und die Art von Müll eingeben kann (dient dazu damit jeder sehen kann wann bei ihm welcher müll abgeholt wird).

    Dann hab ich die drei suchvariablen zu einer zusammengefasst und kann nun auch in der DB suchen nur leider nicht 2/3 Begriffe. Ich kann nur entweder die Strasse suchen oder die Art oder den Ort. Ist aber noch nicht so sinvoll da nun keiner eine genaue Angabe bekommt.

    ---scriptcode---
    <?php
    $suche = $suche . $suche1 . $suche2 . $suche3;
    if ($suche != "") {
    $conn_id = mysql_connect("localhost","****","****");
    $query = "select * from Abfuhrart where LOCATE(lower(\"$suche\"), lower(Stadt)) != 0 or LOCATE(lower(\"$suche\"), lower(Strasse)) != 0 or LOCATE(lower(\"$suche\"), lower(Art)) != 0 or LOCATE(\"$suche\", Region) != 0";
    $result = mysql("muell",$query, $conn_id );
    $num = mysql_numrows($result);

    ---scriptcode---

    ich hoffe das mir jemand bei meinem Problem helfen kann.

    Bis dann Call

  • #2
    wrum mit LOCATE? In deinem Fall ist ein Like mehr als ausreichend!

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      Hi

      >warum mit LOCATE?

      ich hab keine Ahnung warum.

      danke für deinen Hinweis mit Like

      habs jetzt mal geändert

      ---schnipp---
      $query = ("select * from Abfuhrart where Stadt LIKE '%$suche%' OR Strasse LIKE '%$suche%' OR Art LIKE '%$suche%'");
      $result = mysql("muell",$query, $conn_id );
      $num = mysql_numrows($result);
      if ($num > 0) {
      ---schnipp---

      nur das bringt mir noch immer nicht die gewünschte 3 Feldersuche. Bei einer Eingabe findet er jedoch alles.

      [Editiert von call am 05-03-2002 um 12:00]

      Kommentar


      • #4
        willst die Datensätze finden, bei denn alle Suchkriterien gleichzeigtig zutreffen? Dann ersetze die OR durch AND, und alles wird gut. Außerdem wird die Query dann auch schneller abgearbeitet!
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          genau das hatte ich schon probiert aber dann kommt garkeine Ausgabe - weder bei nur einer Eingabe noch bei mehreren.
          ich poste nochmal den ganzen code - vielleicht ist der fehler ja wonaders.
          --- <?php
          $suche = $suche . $suche1 . $suche2 . $suche3;
          if ($suche != "") {
          $conn_id = mysql_connect("localhost","","");
          $query = ("select * from Abfuhrart where Stadt LIKE '%$suche%' AND Strasse LIKE '%$suche%' AND Art LIKE '%$suche%'");
          $result = mysql("muell",$query, $conn_id );
          $num = mysql_numrows($result);
          if ($num > 0) {
          for ($i=0; $i<$num; $i++) {
          $Region = mysql_result($result, $i, "Region");
          $Art = mysql_result($result, $i, "Art");
          $Abholdatum = mysql_result($result, $i, "Abholdatum");
          $Abholhaeufigkeit = mysql_result($result, $i, "Abholhaeufigkeit");
          $Monat = mysql_result($result, $i, "Monat");
          $Stadt = mysql_result($result, $i, "Stadt");
          $Strasse = mysql_result($result, $i, "Strasse");
          echo "<tr><td><font face = arial size = +0><li>Muellart:&nbsp;&nbsp;$Art</b></font></td></tr>";
          echo "<tr><td><font face = arial size = +0><li>Haeufigkeit:&nbsp;&nbsp;$Abholdatum</font></td></tr>";
          echo "<tr><td><font face = arial size = +0><li>Strasse:&nbsp;&nbsp;$Stadt</font></td></tr>";
          echo "<tr><td><font face = arial size = +0><li>Stadt:&nbsp;&nbsp;$Strasse</font></td></tr>";
          echo "<tr><td><font face = arial size = +0><li>Monat:&nbsp;&nbsp;$Region</font></td></tr>";
          echo "<tr><td colspan = 3><font face = arial size = +0><li>Abholdatum:&nbsp;&nbsp;$Monat</font></td></tr>";
          echo "<tr><td><br><br></td></tr>";
          }
          }
          else {
          echo "<li>Zu diesem Stichwort liegen keine Ergebnisse vor.<p>";
          }
          }
          ?>
          ---
          ich hoffe ich mülle das nicht unnötig zu

          Kommentar


          • #6
            Original geschrieben von call

            ich poste nochmal den ganzen code - vielleicht ist der fehler ja wonaders.
            --- <?php
            $suche = $suche . $suche1 . $suche2 . $suche3;
            ...
            $query = ("select * from Abfuhrart where Stadt LIKE '%$suche%' AND Strasse LIKE '%$suche%' AND Art LIKE '%$suche%'");
            Ist er. Ich habe nicht das ganze Skript durchgeschaut, bin gleich ganz oben hängengeblieben; da scheint ein grober logischer Fehler zu sein:
            Du hängst $suche1, $suche2 und $suche3 direkt hintereinander und suchst dann nach der entstandenen Verknüpfung.

            Wenn ich also als Suche1 'Köln', Suche2 'Friesenplatz', Suche3 'Sperrmüll' eingebe, wird überall nach 'KölnFriesenplatzSperrmüll' gesucht - und dann ist ziemlich warhscheinlich, dass es kein Ergebnis gibt.
            Was mich dabei wundert ist, dass es mit OR angeblich klappt.

            Aber probier mal das hier:

            $suche = "(%%% like '$suche1' or %%% like '$suche2' or %%% like '$suche3')";
            $query = ("select * from Abfuhrart where "
            . str_replace ('%%%', 'Stadt', $suche)
            . ' and '. str_replace ('%%%', 'Strasse', $suche)
            . ' and '. str_replace ('%%%', 'Art', $suche)
            ;
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              Hi

              erstmal danke für Deine hilfe. Ich hab Deinen code mal so übernommen aber hab nach dem where " noch eine ) gesetzt da sonst nix gehen wollte. Nun hab ich aber wieder den selben efekt wie vorher - das script findet garnichts mehr .
              solangsam weis ich auch nicht mehr weiter.

              >Wenn ich also als Suche1 'Köln', Suche2 'Friesenplatz', Suche3 'Sperrmüll' eingebe, wird überall nach 'KölnFriesenplatzSperrmüll' gesucht - und dann ist ziemlich warhscheinlich, dass es kein Ergebnis gibt.


              stimmt ich will ja nach 'Köln' + 'Friesenplatz' + 'Sperrmüll' kucken und die zutreffenden Datensätze ausgeben.

              bis denn

              Kommentar


              • #8
                dann solltest du eigentlich nach 'Köln' im Feld Stadt, nach 'Friesenplatz' unter Strasse und nach 'Sperrmüll' unter Art suchen, oder?
                also: ... where Stadt like '%$suche1%' and Strasse like '%$suche2%' and Art like '%$suche3'

                Wenn dann der Suchstring leer ist, werden zu dem Feld alles gefunden. Wenn also $suche1='Köln', $suche2 = $suche3 = '' dann gibt er mir alle Abfuhren in Köln aus ... (wobei in realo kein Sperrmüll dabei sein wird, den muß man hier für jeden Popel acht Wochen im Voraus bestellen und soll ihn dann morgens um 6 raustragen!)

                Hmm ... wenn in einem der eigentlich leeren Felder ein Leerzeichen drin ist, könnte es allerdings daneben gehen ... darum vorher die Leerzeichen vorne und hinten abschneiden:
                $suche1 = trim($suche1);
                $suche2 = trim($suche2);
                $suche3 = trim($suche3);
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar


                • #9
                  Hi

                  so Dank EUER schnellen hilfe gehts jetzt. Besten dank nochmal. Ihr seit echt spitze .

                  bis dann

                  Kommentar


                  • #10
                    Hi,

                    habe das posten interessiert verfolgt. Und soweit ist mir auch alles klar, aber warum setzt ihr vor die Variablen Suche1, Suche2 und Suche3 immer die % Zeichen ??

                    Kommentar

                    Lädt...
                    X