mysql durchsuchen nicht so ganz !

DJmension

Mitglied
Eigenartig ! ich hab eine suchfunktion eingebaut , aber wenn ich in einem Feld was eingebe und zur suche weg schicke wirft mir die action_suche.php alle enthalltenen Datensätze aus und ignoriert meine Such anfrage.

Such Formular
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>

Auszug aus action_suche.php
Code:
$Level = $_POST["Level"];
$Name = $_POST["Name"];
$IDnum = $_POST["IDnum"];
$Beute = $_POST["Beute"];
$erwischt = $_POST["erwischt"];
$Datum = $_POST["Datum"];
$Zeit = $_POST["Zeit"];

$suchen = "SELECT * FROM goldie_s20 WHERE Level LIKE '%$Level%' OR Name LIKE '%$Name%' OR IDnum LIKE '%$IDnum%' OR Beute LIKE '%$Beute%' OR erwischt LIKE '%$erwischt%' OR Datum LIKE '$Datum' or Zeit LIKE '$Zeit' ORDER BY Zeit desc, ORDER by Datum desc";
$ergebnis = mysql_query($suchen);
while($res = mysql_fetch_assoc($ergebnis)){ 
echo '<tr><td><font size="2">&nbsp;'.$res['Level'].'</font></td>
<td><a href="http://spielwelt20.monstersgame.net/index.php?ac=raubzug&sac=gegner&searchname='.$res['Name'].'" target="_blank"></font><font size="2" color="#00B0B0"><b>&nbsp;'.$res['Name'].'</b></font></a></td>
<td><a href="http://spielwelt20.monstersgame.net/index.php?ac=showuser&showuserid='.$res['IDnum'].'" target="_blank"></font><font size="2" color="#00B0B0"><b>&nbsp;'.$res['IDnum'].'</b></font></a></td>
<td><font size="2">&nbsp;'.$res['Beute'].'</font></td>
<td><font size="2">&nbsp;'.$res['erwischt'].'</font></td>
<td><font size="2">&nbsp;'.$res['Datum'].'</font></td>
<td><font size="2">&nbsp;'.$res['Zeit'].'</font></td>

Kann mir einer sagen was hier nicht stimmt ?
 
Hallo,

vielleicht kann ich dir ja helfen.

Bei deinem sql query nimm doch mal die OR raus und setz ein AND rein dann sollte die Filterfunktion egentlich funktionieren.


OR = ODER
AND = UND

mfg Marco
 
OR ersetzt mit AND

jetzt hab ich zumindest mal eine fehlermeldung

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\GoldiesDB\Datenbank\MG\S20\action_suche.php on line 155


die line 155:

Code:
while($res = mysql_fetch_assoc($ergebnis)){
 
SOS

hat das was damit zu tun das aus dem Formular leere Felder verschickt werden ?
Ich gebe in der suche immer nur in einem Feld was ein. Und aber alle Felder , auch die leeren werden an das suche_action.php geschickt ?

Das gibts doch nicht als normale abfrage funktioniert das einwandfrei , aber sobald ich das where drin hab geht nix mehr.

das unzählig mahl abgeänderte abfrage script

Code:
include("dbconnect.php");
$query = "SELECT * FROM goldie_s20 WHERE erwischt LIKE $erwischt ORDER BY Zeit DESC, ORDER BY Datum DESC";
$result = mysql_query;

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

    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 align=center>
<a href="form_aendern.php?
id='.$row['id'].'&
Level='.$row['Level'].'&
Name='.$row['Name'].'&
IDnum='.$row['IDnum'].'&
Beute='.$row['Beute'].'&
erwischt='.$row['erwischt'].'&
Datum='.$row['Datum'].'&
Zeit='.$row['Zeit'].'&
Rechte='.$_GET['Rechte'].
'"><font size="2">Ändern </font></a>';


if($_SESSION['rechte'] == "admin")

   {
   echo ' I <a href="action_del.php?id='.$row['id'].'"><font size="2"> Löschen</font></a>';
   }
   else
   {
   echo '';
   }

echo '</td></tr>'; 
}

mysql_close($connect);

 
?>
Ich verzweifle gerade komplett ! Bitte kann mir einer helfen ich weiß nicht mehr weiter.

die Fehlermeldung bleibt und kommt immer wieder sobald ich die where funktion benutze.

Wie bekomme ich das in ordnung
 
Manchmal ist der Fehler so simpel das mann ihn nicht erkennt.

Code:
$suchen = "SELECT * FROM goldie_s20 WHERE Level LIKE '%$Level%' OR Name LIKE '%$Name%' OR IDnum LIKE '%$IDnum%' OR Beute LIKE '%$Beute%' OR erwischt LIKE '%$erwischt%' OR Datum LIKE '$Datum' or Zeit LIKE '$Zeit' ORDER BY Zeit desc, ORDER by Datum desc";

Die Variablen waren Falsch eingebunden :-) freu entlich gehts mit folgendem Code

Code:
$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";
 
Du musst berücksichtigen, dass falls eines der Variablenwerte leer ist (also „foo LIKE "%%"“), diese Teilbedingung immer wahr ist. Deswegen solltest du nur nicht-leere Werte in die Abfrage aufnehmen. Beispielsweise:
PHP:
$array = array(
	'Level'    => $Level,
	'Name'     => $Name,
	'IDnum'    => $IDnum,
	'Beute'    => $Beute,
	'erwischt' => $erwischt,
	'Datum'    => $Datum,
	'Zeit'     => $Zeit,
);
$array = array_map('mysql_real_escape_string', array_filter($array, create_function('$val', 'return trim($val)!="";'));
if( !empty($array) ) {
	$suchen = 'SELECT * FROM goldie_s20 WHERE 0';
	foreach( $array as $key => $val ) {
		$query .= ' OR '.$key.' = "%'.$val.'%"';
	}
	$query .= ' ORDER BY Zeit DESC, Datum DESC';
}
 
Zurück