problem bei auswertung der formulardaten

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

  • problem bei auswertung der formulardaten

    hallo gemeinschaft

    habe ein formular, bei dem man folgende dropdownfelder hat
    - jahr
    - monat
    - person

    diese sind allerdings keine mussfelder- wenn man keins auswählt, dann soll halt die ganze tabelle ungefiltert ausgegeben werden

    so nun zu meinem prob.
    ich muss in der query ja die entsprechenden filter einbauen, wie

    WHERE $jahr = jahr and $monat= monat and $person = person

    wie bekomme ich es nun geregelt, wenn man keine auswahl getroffen hat

  • #2
    du schreibst dir ein array $where und für jeden übergebenen wert (jahr, monat, person) fügst du einen eintrag hinzu

    danach explodest du mit implode und AND (leerzeichen vor und nach AND nicht vergessen)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      ah - das ist cool - danke

      schönes we

      Kommentar


      • #4
        Original geschrieben von jhaustein
        ah - das ist cool - danke
        bitte

        schönes we
        abwarten
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          - du baust eine Abfrage ohne Where
          - du fragst alle Select-Felder ab, wenn was da ist baust du ein Array welche die Bedingungen enthält
          - du fragst ab, ob das Array nicht leer ist, wenn ja mit implode die Bedingungen in String umwandeln und mit Stringverkettungsoperation deine Abfrage zusammen bauen, wenn nein, dann tut nichts und verwende die Abfrage von oben.
          EDIT:
          GRRRR zu spät
          Zuletzt geändert von asp2php; 10.12.2004, 15:14.

          Kommentar


          • #6
            Original geschrieben von mrhappiness
            abwarten
            OffTopic:
            Nö, Thread schliessen, dann stimmt's

            Kommentar


            • #7
              OffTopic:
              Du vergisst den Ban...

              Kommentar


              • #8
                mist - ich muss dochnochmal nachfragen

                das ist der code
                PHP-Code:
                $sql "SELECT MONTHNAME(contract_lfz) as month, left(contract_lfz, 4) as year,";
                $sql .= "SUM(contract_summe) as summe FROM contract group by contract_lfz"

                $where = array(); 

                if (isset(
                $_POST['selecty']) AND ! empty($_POST['selecty'])) 
                 
                $where[] = " left(contract_lfz, 4) = '" mysql_escape_string($_POST['selecty']) . "'"

                if (isset(
                $_POST['selectm']) AND ! empty($_POST['selectm'])) 
                 
                $where[] = " MONTHNAME(contract_lfz) = '" mysql_escape_string($_POST['selectm']) . "'"

                if (
                count($where) > 0
                  
                $sql .= ' WHERE ' implode(' AND '$where); 
                das ist die meldung
                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 'WHERE left(contract_lfz, 4) = '2006' AND MONTHNAME(contract_l

                Kommentar


                • #9
                  wie sieht die komplette abfrage aus?
                  hast du auch brav die reihenfolge der schlüsselwörte (select, from, where, group, order, having, ...) beachtet?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    ach - das group muss da oben raus oder?

                    Kommentar


                    • #11
                      http://dev.mysql.com/doc/mysql/en/SELECT.html verrät dir die reihenfolge
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        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 '' WHERE ' . implode(' AND ', Array) group by contract_lfz' at l

                        wenn ich diesen code nutze
                        PHP-Code:
                        $sql "SELECT MONTHNAME(contract_lfz) as month, left(contract_lfz, 4) as year,";
                        $sql .= "SUM(contract_summe) as summe FROM contract "

                        $where = array(); 

                        if (isset(
                        $_POST['selecty']) AND ! empty($_POST['selecty'])) 
                         
                        $where[] = " left(contract_lfz, 4) = '" mysql_escape_string($_POST['selecty']) . "'"

                        if (isset(
                        $_POST['selectm']) AND ! empty($_POST['selectm'])) 
                         
                        $where[] = " MONTHNAME(contract_lfz) = '" mysql_escape_string($_POST['selectm']) . "'"

                        if (
                        count($where) > 0
                          
                        $sql .= "' WHERE ' . implode(' AND ', $where)"
                          
                        $sql .= " group by contract_lfz"

                        Kommentar


                        • #13
                          schau dir die Zeile:
                          PHP-Code:
                          $sql .= "' WHERE ' . implode(' AND ', $where)"
                          mal an

                          Kommentar


                          • #14
                            1. Lass dir die komplette Abfrage ausgeben
                            2. Schau sie dir gut an
                            3. Schau sie dir nochmal an
                            4. Und nochmal
                            5. Wenn wir schon dabei sind...
                            6. Wenn du's dann noch nicht gemerkt hast, poste die komplette Abfrage
                            7. Schäm dich
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              die komplette abfrage
                              $sql = "SELECT MONTHNAME(contract_lfz) as month, left(contract_lfz, 4) as year,";
                              $sql .= "SUM(contract_summe) as summe FROM contract ";
                              $sql .= "' WHERE ' . implode(' AND ', $where)";
                              $sql .= " group by contract_lfz";

                              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 ''WHERE ' . implode(' AND ', Array) group by contract_lfz' at li

                              ich weiss nicht, wo der fehler ist

                              Kommentar

                              Lädt...
                              X