Leere Felder im Formular unterdrücken ( mysql )

DJmension

Mitglied
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>
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>'; 
}
 
Du kannst abfragen, ob die Felder existieren, oder gefüllt sind und wenn nicht, dann in einer else-Anweisung entsprechend deiner Wünsche füllen.
z.B.:

PHP:
if(isset($_POST['variable'])){
$var = $_POST['variable'];
}
else{
$var = "";
}

Falls ich dich richtig verstanden habe...

empty($var) prüft zum Beispiel ob ein Wert ungleich null ist.
 
du hast mich soeben auf eine Idee gebracht !

wenn ich jetzt deinen code

Code:
if(isset($_POST['variable'])){ 
$var = $_POST['variable']; 
} 
else{ 
$var = ""; 
}

so ändere das er bei leeren Variablen , die variable füllt mit einem wert der unter garantie nicht gefunden werden kann , schalte ich ja somit die variable tot.
Also ich meine so in etwa.

Code:
if(isset($_POST['Level']))
{ 
$Level = $_POST['Level']; 
} 
else
{ 
$_POST['Level'] = "0815zeppelin1308";
$Level = $_POST['Level']; 
}
Nur ist da jetzt die Frage angebracht was dann mehr sinn macht in der where schleife ein OR oder ein AND zu verwenden ?
Ich denke ein OR wär da sicherlich das beste. Könnte mir da ein erfahrener von euch sagen ob das eine Brauchbare lösung währe ?
Es werden mehrere Felder zur suche angeboten in denen man was rein schreiben kann.Level , Name , IDnum , Beute .....

Edit:
Und das alles aus einem Formular, also 1 submit für 8 Felder
 
Zuletzt bearbeitet:
Ein AND macht Sinn, wenn alles zutreffen soll und ein OR, wenn es egal ist, welche der eingetragenen Werte gefunden werden. Also ich denke, AND ist sinnvoll, da meist das, was man eingibt, auch gefunden werden soll.

Beispiel: du suchst eine Person, die Hans heißt und auf Level 20 ist. Bei AND wird auch nur die Person gefunden, bei OR die Person Hans, aber auch alle anderen mit Level 20.
 
Ich hab das jetzt mal versucht , und ich muß sagen es funktioniert ganz gut , aber wenn ich mir das so anschaue bin ich auf den gedanken gekommen , genau das direckt in der select abfrage zu machen. Beispiel :

Code:
$sql = "SELECT * FROM goldie_s20 WHERE 
//************************ Level *************************
if $Level == "0815zeppelin1308"
{
echo '';
}
else
{
echo 'Level LIKE ('".$Level."%') OR ';
}
//************************ Name *************************
if($Name == "0815zeppelin1308")
{
echo '';
}
else
{
echo 'Name LIKE ('".$Name."%') OR ';

usw...... bis

Code:
echo 'ORDER BY datum DESC, zeit DESC"';

Sicherlich schütteln jetzt einige die das lesen müssen den kopf , aber ich bin Anfänger und ich denke mann kann merken das ich mir mühe gebe , erst ein Problem selbst zu lösen und dann erst frage , ich versuche schon seit über 4 Stunden eine if anweisung in die abfrage zu stecken, aber es will nicht hin hauen..... Liege ich da mit meinem Denkvorgang so falsch ? es wär doch nichts einfer als das so , auf dieser Weise leere Formularfelder zu eliminieren , als diese variante.
Ich habe auch Stunden damit verbracht zu erfahren ob das überhaupt mögich ist , jedoch ohne erfolg.

Also Bitte ich nochmahls um Hilfe bei den Profies

LG Andy

Edit:
Ich hab das jetzt mal ausprobiert , und es stimmt mich traurig das es eine fehlermeldung raus wirft:

Parse error: syntax error, unexpected T_LNUMBER in .........\action_suche.php on line 248

Code:
line 248 : if $Level == ("0815zeppelin1308")
{
 
Zuletzt bearbeitet:
In der ersten zeile fehlt noch ein

";



Übrigens wenn ich deinen Ansatz richtig verstanden hab dann bist du auf dem richtigen Weg.:)
PHP:
if($X!="")
Überprüft ob ein String Leer ist. Damit sparrst du dir das "totschalten"
 
Zuletzt bearbeitet:
Hey ! dein if gefellt mir irgentwie besser , darf ich das nemen ? :-)

Code:
$sql = "SELECT * FROM goldie_s20 WHERE ;
//************************ Level *************************
if ($Level != "")
{
echo '';
}
else
{
echo 'Level LIKE ('".$Level."%') OR ';

Kontrolierst du das bitte nochmal , ich denke das sieht recht gut aus :-)
 
Zuletzt bearbeitet:
Zurück