PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP/MySQL: Filterproblem...


Savage
2004-02-13, 18:06:07
Hallo,

ich habe gerade angefangen mit PHP und MySQL ein Script zu schreiben. Wie man hier: URL (http://www.eduardseibel.de/projekte/test/index.php) sehen kann möchte ich nach verschiedenen Modi Filtern. Das heißt wenn jemand z.B. 2on2 "anhackt" soll die MySQL Query entsprechend die Einträge rausfiltern...

Allerdings tritt bei meiner Umsetzung folgendes Problem auf: Sobald jemand 1on1 und irgendein anderen Modus anklickt funktioniert alles prima, nur sobald man 1on1 nicht aktiviert dafür aber ein anderen Modi, gibt es Fehler in der Syntax. Was auch logisch ist weil gleich nach "WHERE Modus LIKE" ein "OR" kommt... hier der CODE:

<?
@$one = $HTTP_POST_VARS['1on1'];
@$two = $HTTP_POST_VARS['2on2'];
@$three = $HTTP_POST_VARS['3on3'];
@$four = $HTTP_POST_VARS['4on4'];
@$five = $HTTP_POST_VARS['FFA'];
@$five = $HTTP_POST_VARS['FFA'];
@$sortby = $HTTP_POST_VARS['dsort'];


if(isset($one) || isset($two) || isset($three) || isset($four) || isset($five)){ $filter_modi = "WHERE Modus LIKE $one $two $three $four $five";}
else{ $filter_modi = "";}
echo "<br><b>Teil Query Anweisung:</b>".$filter_modi.$sortby."<br><br>";



$res = mysql_query("SELECT * FROM $sqlTable $filter_modi $sortby") or die("Nix geht: ".mysql_error());
$num = mysql_num_rows($res);
$i = 0;
while ( $i < $num )
{
$row = mysql_fetch_array($res);
echo $row['Modus']." - ".$row['Datum']."<br>";
$i++;}

?>

Ich habe leider absolut keine Idee wie ich dem die richtige Syntax "beibringen" soll... vieleicht hat ja von euch einer eine Idee?

Ich hoffe jemand hat mich verstanden... Bei
Teil Query Anweisung: wird die Teilsyntax ausgegeben damit man sich orentieren kann welcher Filter was ausgibt....

grakaman
2004-02-13, 18:38:09
Hallo Savage

Am besten gehst du wie folgt vor. Gib allen Checkboxen den selben Namen und numeriere sie durch, z.B.:

<input type="checkbox" name="Auswahl_1" value="1on1">
<input type="checkbox" name="Auswahl_2" value="2on2">
...

<input type="hidden" name="BoxNumber" value="5">

Wenn die Page submitted wird, rufst du im folgenden Script dann den Inhalt der Checkboxen ab, z.B:

(Pseudo Code)

arr[] boxValues = new arr[BoxNumber]

for(int i = 1; i <= BoxNumber; i++)
{
arr[i] = Request.Form("Auswahl_" + i)
}

strSQL = "Select * from Tabelle"

if(arr.Length > 0)
{
strSQL += "Where Mode like "

for(int i = 0; i < arr.Length; i++)
{
if(i == 0)
strSQL += arr[i]
else
strSQL += " or " + arr[i]
}
}

Dann müsste es gehen...

Aqualon
2004-02-13, 19:02:58
Als erstes: Raus mit dem OR aus dem Input-Feld. SQL-Anweisungen haben da nix zu suchen.

Als zweites seh ich gerade, dass grakaman schon geantwortet hat und es so klappen müsste.

Aqua