Arachno: keine leeren Formularfelder ( php / mysql )

Ich habe folgendes Formular für eine such abfrage ( mysql )

[CODE]
<form method="POST" action="action_suche.php">
<td align="center">
<input type="text" name="Level" size="5" class="input"></td>
<td align="center">
<input type="text" name="Name" size="15" class="input"></td>
<td align="center"><font size="2">
<input type="text" name="IDnum" size="12" class="input"></td>
<td align="center"><font size="2">
<input type="text" name="Beute" size="8" class="input"></td>
<td align="center">
<select size="1" name="erwischt" class="input">
<option value=""></option>
<?
include("dbconnect.php");
$query = "SELECT username FROM login_s20";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
while($row = mysql_fetch_assoc($result)){
echo '<option value="'.$row['username'].'">'.$row['username'].'</option>';
}
?>
</select></td>
<td align="center"><font size="2">
<input type="text" name="Datum" size="13" class="input"></font></td>
<td align="center"><font size="2">
<input type="text" name="Zeit" size="12" class="input"></font></td>
<td>
<p align="center"><font size="2">
<input type="submit" value="Suchen" name="B1" class="input"></font></td>
</form>
[/CODE]
Jetzt will ich aber , da es zu Suchproblemen führt das leere Felder nicht übermittelt werden , so als wenn sie garnicht existieren würden, Wie lässt sich das machen ?
und vor allem wie ändere ich folgende abfrage ab ?

[CODE]
$Level = $_POST["Level"];
$Name = $_POST["Name"];
$IDnum = $_POST["IDnum"];
$Beute = $_POST["Beute"];
$erwischt = $_POST["erwischt"];
$Datum = $_POST["Datum"];
$Zeit = $_POST["Zeit"];
include("dbconnect.php");
$sql = "SELECT * FROM goldie_s20 WHERE Level LIKE ('".$Level."%') OR Name LIKE ('".$Name."') OR IDnum LIKE ('".$IDnum."') OR erwischt LIKE ('".$erwischt."') OR Datum LIKE ('".$Datum."') OR Zeit LIKE ('".$Zeit."') ORDER BY datum DESC, zeit DESC";
$res = mysql_query($sql);
if (mysql_errno()) echo mysql_error ();

while($row = mysql_fetch_array($res)){

echo '<tr><td><font size="2">&nbsp;'.$row['Level'].'</font></td>
<td><a href="http://spielwelt20.monstersgame.net/index.php?ac=raubzug&sac=gegner&searchname='.$row['Name'].'" target="_blank"></font><font size="2" color="#00B0B0"><b>&nbsp;'.$row['Name'].'</b></font></a></td>
<td><a href="http://spielwelt20.monstersgame.net/index.php?ac=showuser&showuserid='.$row['IDnum'].'" target="_blank"></font><font size="2" color="#00B0B0"><b>&nbsp;'.$row['IDnum'].'</b></font></a></td>
<td><font size="2">&nbsp;'.$row['Beute'].'</font></td>
<td><font size="2">&nbsp;'.$row['erwischt'].'</font></td>
<td><font size="2">&nbsp;'.$row['Datum'].'</font></td>
<td><font size="2">&nbsp;'.$row['Zeit'].'</font></td>
</td></tr>';
}
[/CODE]

  1. Hi,

    Jetzt will ich aber , da es zu Suchproblemen führt das leere Felder nicht übermittelt werden , so als wenn sie garnicht existieren würden, Wie lässt sich das machen ?

    Gar nicht.
    (Klar, es ginge mit Javascript, aber es waere bloedsinnig.)

    und vor allem wie ändere ich folgende abfrage ab ?

    So, dass du Felder, die "leer" uebermittelt wurden, gar nicht mit in die Abfrage aufnimmst.

    MfG ChrisB

    1. Hallo,

      So, dass du Felder, die "leer" uebermittelt wurden, gar nicht mit in die Abfrage aufnimmst.

      da ist es dann diskussionswürdig, wie man feststellt, ob ein Feld leer ist.
      Die Funktion empty() wird hier wahrscheinlich nicht immer geeignet sein, da sie auch validiert, wenn in einer Variablen "0" drinsteht.

      Die Bedingung müsste also z.B. so lauten

      if(isset($_POST['formularfeldname']) and strlen(trim($_POST['formularfeldname'])) > 0)
        {
           // Feld ist nicht leer
        }
        else
        {
          // Feld ist leer
        }

      LG
      Chris©