Auswahlkriterien von Datensätzen

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

  • Auswahlkriterien von Datensätzen

    Hi,

    per Formular möchte ich dem User die möglichkeit geben nach bestimmten Kriterien Datensätze aus einer Datenbank auszuwählen. Das mit dem Formular und der Übermittlung der entsprechenden Variablen funzt soweit.

    Aber wenn ich beispielsweise im Formular keine Eingrenzung vornehme (d.h. alle Datensätze sollen ausnahmslos angezeigt werden) klappt das nicht ... dann werden nur 300 Einträge von 500 angezeigt.

    Aus dem Formular werden die Variablen $select01 bis $select05 übergeben. Anschließend prüfe ich, ob ein sinnvoller Wert übergeben wurde und packe das anschliessend in die WHERE-Abfrage. Das ganze sieht dann so aus:

    PHP-Code:
    if ($select01 == "0"){$selection01 "typ >= ''";} else { $selection01 "typ = '$select01'" ;} 
    ... das spiele ich für alle fünf Variablen durch ($select01 == "0" gibt dabei an, dass keine Eingrenzung vorgenommen wurde).

    Die Datenbankabfrage sieht dann so aus:

    PHP-Code:
    "SELECT * FROM pv_autor WHERE $selection01 AND $selection02 AND $selection03 AND $selection04 AND $selection05
    Was mache ich falsch? Ist das überhaupt ein gängiger Weg? Wie kann man das besser lösen, damit es anschliessend auch funzt?

    Für konstruktive Vorschläge stehts dankbar:
    b.s.e.k

  • #2
    Bei Deiner Abfrage müssen alle AND Bedingungen erfüllt sein.

    Ist das auch so gewünscht ( ich glaube kaum oder ??)
    Bei Risiken und Nebenwirkungen fragen Sie Dr.Alban

    Kommentar


    • #3
      poste nebenbei mal die query, die du an die db sendest, wenn nichts eingegeben wurde.

      Kommentar


      • #4
        Original geschrieben von Arni
        Bei Deiner Abfrage müssen alle AND Bedingungen erfüllt sein.

        Ist das auch so gewünscht ( ich glaube kaum oder ??)
        Wow Ihr seit aber schnell

        Das große "AND-Problem" - da grübel ich schon seit ein paar tagen drüber ... Ja, eigentlich würde es ja Sinn machen nur die $selection-Variablen in die WHERE-Abfrage zu packen, die auch tatsächlich eine Auswahl vornehmen sollen. das hatte ich auch schon mal ansatzweise versucht - sah dann so aus:

        PHP-Code:
        if ($select01 == "0"){$selection01 "";} else { $selection01 "typ = '$select01'" ;}
        if (
        $select01 == "0"){$and01 "";} else { $and01 "AND" ;} 
        zusammengeschustert sah das dann so aus:

        PHP-Code:
        "SELECT * FROM pv_autor WHERE $selection01 $and01 $selection02 $and02 $selection03 $and03 $selection04 $and04 $selection05
        das ganze hatte zwei Hacken: 1) ohne jegliche Auswahl würde

        PHP-Code:
        "SELECT * FROM pv_autor WHERE" 
        an die DB übergeben und da beschwert die sich zurecht.

        und 2) erfordert diese Variante, dass immer zumindest die letzte Variable ($select05 bzw. $selection05) einen sinnigen Wert aufweist - denn sonst endet die Abfrage mit:

        PHP-Code:
        "SELECT * FROM pv_autor WHERE blablabla AND blablabla AND" 
        Habt Ihr vielleicht einen patentierten Weg, wie ich mein "AND-Problem" lösen kann - denn das würde zudem gleich die Lösung für das anfangs beschriebene Dilemma sein.

        Kommentar


        • #5
          Hi,

          indem du die Query, bevor du sie absendest, noch mal bearbeitest. Angenommen, du hast dein Statemaent in ner Variable $sql_select, dann mach doch einfach:
          PHP-Code:
          $sql_select preg_replace("/ AND$/","",$sql_select); 

          Kommentar


          • #6
            danke. das klingt sinnvoll. werde ich gleich nachher mal ausprobieren.

            herzliche grüße aus jena nach jena

            Kommentar


            • #7
              Original geschrieben von TobiaZ
              poste nebenbei mal die query, die du an die db sendest, wenn nichts eingegeben wurde.

              Kommentar

              Lädt...
              X