Matze: Welchen Wert hat ein Textfeld, wenn es leer ist?

Hallo,

ich möchte ein Formular erstellen und dann nach dem Abschicken auf der nächsten Seite eine SQL-Suche starten. Textfelder, die nicht gefüllt wurden, sollen jedoch nicht berücksichtigt werden.

Ich habe nun mit IF-sätzen die Felder abgefragt, aber irgendwie funktionert das nicht. Auf welchen Wert muss ich diese Felder abprüfen, wenn nix drinnen steht?

Bisher sieht es folgender maßen aus:

$query = "SELECT * FROM tuser where ShortName like '%$txtUsername%' ";

if($cmbSex != 'nothing')
   {
    $query."and Sex='$cmbSex' ";
   }

if($txtAgeFrom != "" && $txtAgeTo != "")
   {
    $query."and (to_days(curdate())-to_days(Birthday))/365 between '$txtAgeFrom' and '$txtAgeTo'";
   }

if($txtZipcode != "")
   {
    $query."and Zipcode like '%$txtZipcode%'";
   }

if($cmbHeight1 && $cmbHeight2 != 'nothing')
   {
    $query."and Height between '$cmbHeight1' and '$cmbHeight2'";
   }

if($cmbWeight1 && $cmbWeight2 != 'nothing')
   {
    $query."and Weight between '$cmbWeight1' and '$cmbWeight2'";
   }

if($cmbEyeColor != 'nothing')
   {
    $query."and EyeColor = '$cmbEyecolor'";
   }

if($cmbHairColor != 'nothing')
   {
    $query."and HairColor = '$cmbHaircolor'";
   }

if($cmbFamilystate != 'nothing')
   {
    $query."and FamilyState = '$cmbFamilystate'";
   }

if($cmbChildren != 'nothing')
   {
    $query."and Children = '$cmbChildren'";
   }

if($cmbCharacter != 'nothing')
   {
    $query."and Charact = '$cmbCharacter'";
   }

if($cmbAppearance != 'nothing')
   {
    $query."and Appearance = '$cmbAppearance'";
   }

CMB bedeuten in diesem Fall Auswahlboxen, die im nicht selektierten Status den Wert 'nothing' haben, aber auch das geht nicht.....

Vielleicht kann mir irgendjemand helfen?

  1. Hallo,

    if($deinfeld == "")
    {
    //Feld ist leer
    }

    Wenn der User Space drückt, so stimmt die Eingabe nicht mehr

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. Hallo,

      if($deinfeld == "")
      {
      //Feld ist leer
      }

      oder: if(!$deinfeld)

      0, null und Leerstring gelten als false.

      Gruß, Andreas

  2. Hello,

    $query = "SELECT * FROM tuser where ShortName like '%$txtUsername%' ";

    if($cmbSex != 'nothing')
       {

    $query.="and Sex='$cmbSex' ";

    }

    Schau Dir mal Deine String-Concatination genauer an.

    Grüße

    Tom

    1. if($cmbSex != 'nothing')
         {
           $query.="and Sex='$cmbSex' ";
         }
      Schau Dir mal Deine String-Concatination genauer an.
      Grüße
      Tom

      Ok, habs bemerkt und jetzt geändert in:

      $query = $query.="and Sex='$cmbSex' ";

      Jetzt gibt es aber überhaupt keine Suchergebnisse mehr! Ich sehe den Fehler einfach nicht....

      1. Hello Matze,

        Ok, habs bemerkt und jetzt geändert in:

        $query = $query.="and Sex='$cmbSex' ";

        Ich hoffe, bei allen Verkettungen...

        Jetzt gibt es aber überhaupt keine Suchergebnisse mehr! Ich sehe den Fehler einfach nicht....

        Und was sagt mysql_error() ?

        Grüße

        Tom

        1. Und was sagt mysql_error() ?

          Es gibt keinen Fehler! Es funktionert nur nicht! Natürlich habe ich das jetzt bei allen Verkettungen geändert. Ich weiss einfach nicht, warum es nicht klappt. Für mich sieht es theoretisch richtig aus....

          Matze

  3. Hello,

    da gibt's nur eins:

    Alles auskommentieren und langsam wieder aufbauen. Dabei immer alle
    möglichen Fehlermeldungen anzeigen.

    Du kannst j anoch einen Parameter an das Script mitgeben und um jede
    Erweiterung des Statements eine Bedingung bauen.

    if ($_GET["p"]>1) ...

    if ($_GET["p"]>2) ...

    if ($_GET["p"]>3) ...

    Dann brauchst Du das Script nur einmal hochzuladen und immer nur mit
    dem geänderten Parameter aufrufen. Spart Zeit.

    Grüße

    Tom