Mehrere Suchfelder / Query dazu?

felina

Grünschnabel
Hallo!

Erstmal vorab... dieses Forum hat mir schon etliche Denkanstösse gegeben, aber im Moment hilft mir die Suchfunktion irgendwie nicht weiter, aber vielleicht such ich auch einfach falsch...

Mein Problem:
Ich habe eine ellenlange Artikeltabelle mit mehreren Spalten (DIN, Güte, Länge, Durchmesser etc.). Die einfache Ausgabe dieser Tabelle klappt, auch die Ausgabe mit einer "Verfeinerungen" (z. B. "zeig alles an wo din=913").
Jetzt will ich aber dem Benutzer die Möglichkeit geben, die Tabelle mit mehreren Suchoptionen verfeinern zu lassen... Das Formular dazu hat zwei Pull-Down-Felder mit allen in der Tabelle verfügbaren DIN und Güte; ausserdem 2 Textfelder, wo Länge und Steigung eingegeben werden kann, wobei der Benutzer beliebige der Felder ausfüllen kann. d. h. es werden 4 Variablen übergeben, wobei keine bis alle vier für die Suche gebraucht werden.

Meine Frage ist jetzt, wie bastel ich mein mysql-query, dass da nur die Variablen drinstehen, die durch das Formular übergeben wurden UND einen für die Suche wichtigen Inhalt haben (also nicht leer sind oder den "Platzhalter" übergeben?)

Ich habs schon mit 4 if-Abfragen versucht, die leere Felder und Platzhalter in >0 umwandeln, aber damit funktionierte es irgendwie nicht...

Das Formular-Schnippel:
Code:
...
<form action="liste.php" name="search" method="post">
	<td width='10%'>
	<select name="dins" size="1">
	
<?php	echo $_POST['submit'], $_POST['din'], $_POST['guete'], $_POST['laenge'];
	$ausgabe=mysql_query("SELECT DISTINCT din FROM artikelliste ORDER BY din");
	while ($zeile=mysql_fetch_array($ausgabe))
	{
	print(" <option value='$zeile[din]'>$zeile[din]</option>");
	}
	print(" </select></td><td width='10%'><select name='gueten' size='1'>");

	$ausgabe=mysql_query("SELECT DISTINCT guete FROM artikelliste ORDER BY guete");
	while ($zeile=mysql_fetch_array($ausgabe))
	{
	print("	<option value='$zeile[guete]'>$zeile[guete]</option>");
	}

	print(" </select></td>
		<td width='10%'><input type='text' value='alle' name='durchmesser' size='5'></td>
		<td width='10%'><input type='text' value='alle' name='laenge' size='5'></td>
		<td width='20%'colspan='3' align='right'><input type='submit' value='Suchen' name='suchen'></td>
	</form>
...

Und mein Versuch des Auffangens der Variablen und der Ausgabe:
Code:
...
if(isset($_POST['submit'])) 
  {

  if($_POST['dins'] > "0")
    {
  $din=$_POST['dins'];
    }
    else
    {
  $din=">0";
    }

  if($_POST['gueten'] > "0")
    {
  $guete=$_POST['gueten'];
    }
    else
    {
  $guete=">0";
    }

   if($_POST['durchmesser'] == "alle")
   {
  $durchmesser=">0";
   }
   else
   {
 $durchmesser=$_POST['durchmesser'];
   }

  if($_POST['laenge'] == "alle")
   {
  $laenge=">0";
   }
   else
   {
 $laenge=$_POST['laenge'];
   }


   $ausgabe=mysql_query("SELECT * FROM artikelliste WHERE 
	din = '$din', 
	guete = '$guete', 
	durchmesser = '$durchmesser', 
	laenge = '$laenge', 
	ORDER BY din, guete, durchmesser");

 while ($zeile=mysql_fetch_array($ausgabe))
	{
	print(" <tr>
		<td>$zeile[din]</td>
		<td>$zeile[guete]</td>
		<td align='right'>$zeile[durchmesser]   x  </td>
		<td align='right'>$zeile[laenge]</td>
		<td align='right'>$zeile[steigung]</td>
		<td align='right'>$zeile[bestand]</td>
		<td align='center'>$zeile[comment]</td></tr>
		<tr><td colspan='10' border='0'><hr></td></tr>");
	}
...
:(
 
Wenn du nach den Einträgen suchen möchtest die Größer aus 0 sind müsstest du es z.B. so machen
Code:
din > '0'

Also direkt den Ausdruck in eine Variable speichern, dies würde dann so aussehen:
PHP:
  if($_POST['dins'] > "0")
    {
  $din = "din = '$_POST[dins]'";
    }
    else
    {
  $din = "din > '0'";
    }
 
Zurück