Problem mit Suche

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

  • Problem mit Suche

    Hallo zusammen, mein erster Post hier und gleich mit nem Problem...

    Ich habe eine Datenbankabfrage, die mir ziemlich Kopfschmerzen bereitet.
    Erstmal zur Erklärung: Es geht um eine Suchfunktion in einer MySQL Datenbank, die nur mit Checkboxen und Pulldowns arbeitet.

    Bei dieser Suche hat der User die Möglichkeit Stichwörter mit den Checkboxen ("Ich kann dies und jenes tun") und Tageszeiten mit den Pulldowns ("Vormittag, Nachmittag...") zu suchen. Soweit so gut.

    Nun möchte ich, dass in dem Suchergebniss ALLE Datensätze ausgegeben werden sollen, in welchen die Stichwörter gegeben sind, und ALLE Datensätze in denen die Tageszeit vorkommt.

    PHP-Code:
    <?

    $stunden=implode(" , ",$HTTP_POST_VARS["stunden"]); 
    $montag = $HTTP_POST_VARS["montag"];
    $dienstag = $HTTP_POST_VARS["dienstag"];
    $mittwoch = $HTTP_POST_VARS["mittwoch"];
    $donnerstag = $HTTP_POST_VARS["donnerstag"];
    $freitag = $HTTP_POST_VARS["freitag"];
    $samstag = $HTTP_POST_VARS["samstag"];
    $sonntag = $HTTP_POST_VARS["sonntag"];
     
    $conn_id = mysql_connect("xxx","xxx","xxx"); 
    mysql_select_db("xxx",$conn_id);

    $sql = "SELECT stunden, montag, dienstag, mittwoch, donnerstag, freitag, samstag, sonntag FROM meine_tabelle WHERE 
    stunden  LIKE '%$stunden%' AND
    montag LIKE '$montag' AND
    dienstag LIKE '$dienstag' AND
    mittwoch    LIKE '$mittwoch' AND
    donnerstag LIKE '$donnerstag' AND
    freitag LIKE '$freitag' AND
    samstag LIKE '$samstag' AND
    sonntag    LIKE '$sonntag'";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result))

    ...

    ?>
    Mit diesem Code werden ja die Ergebnisse ausgegeben, in welchen alle genannten Variablen zusammenkommen; Wenn ich allerdings nur nach Mittwoch suche und die anderen Felder leer lasse, bekomme ich keine Ergebnisse. Wenn ich die selbe Suche in PHPmyAdmin von Hand mache klappt, aber da fülle ich ja auch nur die Felder aus, nach denen ich suche.

    Nun (endlich) meine konkrete Frage: wie kann ich erreichen, dass die Datenbank nun nach z.B. nur den Inhalt "Mittwoch" ausgibt wenn nur Mittwoch angegeben ist, und die anderen Tage ausser acht läßt??

    Ich hoffe dieser Post is jetzt richtig formatiert (mit dem Code) und ich hab mich verständlich ausgedrückt. Wenn nicht - seht es mit bitte nach - ich versuch mich zu bessern
    Zuletzt geändert von fain7; 14.03.2005, 00:29.

  • #2
    Ich würde es vermutlich mit dem ?-Operator von PHP machen und somit den SQL-Code dynamisch generieren.

    P.S.: http://php-resource.de/forum/showthr...threadid=50454

    Code ist leider nicht richtig formatiert, weil die PHP-Tags fehlen *g*
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Danke ich werde mal sehen, dass ich den Code dann zukünftig richtig reintu...

      Zu meinem Prob: Ich denke super wäre in meinem Fall, wenn ich verhindern könnte, dass die leeren Felder mitübergeben werden und damit das Suchergebniss vermurksen. Sprich wenn nur unter Mittwoch eine Zeit angegeben ist, wird auch nur der Mittwoch in die Suche miteinbezogen.

      Kann ich davon ausgehen dass

      PHP-Code:
      <?php
      if (!empty($_POST['tagesname']));
      ?>
      da mein Freund ist? Leider kenne ich mich dem Befehl nich aus und wäre für ein Beispiel im Sinne von "wenn das Feld leer is wird auch nich danach in der Datenbank gesucht" mehr als dankbar.

      Kommentar


      • #4
        editieren kannst du den post immer noch.

        PHP-Code:
        if(!empty($x)) {
            
        $sql .= " OR bla ";

        Kommentar


        • #5
          Okey dokey, hab ich jetzt mal schnell nachgeholt.

          Ja das Beispiel is klar. Hätte ich jetzt wohl auch so gemacht.

          Allerdings ergibt sich da das Problem, dass die Woche ja 7 Tage hat.
          Wenn man es nach diesem Ausschlussverfahren angeht, müßte ich ja 7x7 (oder 7hoch7?) mögliche abfragen angeben. Es muss doch da ne andere Möglichkeit geben, von 7 Feldern die in einem Formular übergeben werden nur die nicht leeren in die Suche mit aufzunehmen?

          Vielen Dank erstmal für die Hilfe soweit btw.

          Kommentar


          • #6
            Wenn man es nach diesem Ausschlussverfahren angeht, müßte ich ja 7x7 (oder 7hoch7?) mögliche abfragen angeben.
            warum?

            Kommentar


            • #7
              Ja, gute Frage. Doof von mir, der check is ja "ob nicht leer". Is halt schon spät

              Ich werd damit mal rumtüfteln. Danke erstmal

              Kommentar

              Lädt...
              X