Das "AND" in einem variablen Statement

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

  • Das "AND" in einem variablen Statement

    Hallo zusammen,

    ich hab ein kleines Problem und komme deshalb nicht weiter mit meiner Arbeit.

    Folgendes:

    Ich hab ein Formular mit mehrerer Eingabefeldern. Alle Felder sind optional. Alle Felder werden anschließend auf Inhalt überprüft, um daraus mein SQL-Statement zu erhalten. Den Variablen aus dem Formular wird eine Toleranz zugestanden.

    Das sieht dann so aus (nach vorhergegangen if-abfragen):

    PHP-Code:
    $c_min $_POST['Kohle'] - $_POST['ctol'];
    $c_max $_POST['Kohle'] + $_POST['ctol'];

    $si_min $_POST['Silizium'] - $_POST['sitol'];
    $si_max $_POST['Silizium'] + $_POST['sitol']; 
    Etwa 8 Felder hab ich die so "verarbeitet" werden.

    Da aber auch nur ein Feld oder nur z.B. 3 Felder ausgefüllt werden könnten, ergibt sich ein Problem mit dem "AND":

    PHP-Code:
    if ($_POST['Kohle'] != "0") {
    $sqlkohle "cmi > $c_min AND cma < $c_max";
    }
    if (
    $_POST['Silizium'] != "0") {
    $sqlsilizium "AND simi > $si_min AND sima < $si_max";

    Da jetzt z.B. nur Silizium ausgefüllt wurde, kann ich das nicht mehr sinnvoll in meinem Statement einbauen.

    Welche Möglichkeiten seht ihr?

    Vielen Dank schonmal

  • #2
    PHP-Code:
    $sql ' ... WHERE 1';

    if( 
    $bedingung1 $sql .= ' AND ... ';
    if( 
    $bedingung2 $sql .= ' AND ... '
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Original geschrieben von TBT
      PHP-Code:
      $sql ' ... WHERE 1';

      if( 
      $bedingung1 $sql .= ' AND ... ';
      if( 
      $bedingung2 $sql .= ' AND ... '
      Danke, aber soweit war ich auch schon. Was ist denn wenn nur bedingung1 oder 2 greift? Dann steht im Statement:

      SELECT xyz from abc WHERE AND oh = ah

      Kommentar


      • #4
        Nein, steht da nicht! Lies dir den Beitrag von TBT noch mal durch...

        Kommentar


        • #5
          Ich werde es morgen mal ausprobieren und melde mich dann nochmal.

          Ist die 1 irgendwie als Platzhalter zu verstehen?

          Kommentar


          • #6
            Nö, ich würde sie einfach als TRUE verstehen.

            Kommentar


            • #7
              Danke für den Tipp, hat super geklappt.

              Kommentar

              Lädt...
              X