Datenbankausgabe mittels Formular, flexiebel bleiben

solala123

Erfahrenes Mitglied
Hallo zusammen,
habe mich wieder mal festgebissen.

Die Ausgabe meiner Datenbank erfolgt mit einem Formular. Es sind 6 Felder und die sind momentan statisch mit OR verknüpft.
Ich möchte aber flexiebel werden. D.h. nur die Felder, bei denen etwas eingetragen ist, soll mit AND verknüpft werden.

Hab schon etwas im Netz gefunden aber so richtig funktioniert es nicht. Es werden alle Daten der Datenbank ausgegeben!

hier mal der Code:
PHP:
require_once ('konfiguration-ResBar.php');


$garten       = $_POST['garten'];
$kueche       = $_POST['kueche'];
$plz          = $_POST['plz'];
$ort          = $_POST['ort'];
$behindert    = $_POST['behindert'];
$nacht        = $_POST['nacht']; 



 echo "$garten";
 echo "$kueche";
 echo "$plz";
 echo "$ort";
 echo "$behindert";
 echo "$nacht";






//if (isset($_POST["sub"]))
 //{      //  if Klammer auf und ganz am Schluß Klammer zu
 
 
 
  $sql="SELECT * FROM ResBar WHERE ";
if ($_POST['plz']!=''){  // normales Input-Text-Feld
   $sql.="plz='".mysql_real_escape_string($_POST['plz'])."' AND ";}
if ($_POST['kueche']!='') { // dito
   $sql.="kueche='".mysql_real_escape_string($_POST['kueche'])."' AND ";}
 // weitere Felder
$sql.="1=1"; // Damit kein SQL-Fehler entsteht
$db_erg=mysqli_query($sql );

 echo "$sql";
 
 
 
 
 
													//					$query  =   sprintf(
													//					"SELECT * FROM ResBar WHERE garten='%s'  AND kueche='%s'   OR plz='%s'    OR ort='%s'   OR behindert='%s'   OR nacht='%s'  ",
													//								mysqli_real_escape_string($db_link, $garten),
													//								mysqli_real_escape_string($db_link, $kueche),
													//								mysqli_real_escape_string($db_link, $plz),
													//								mysqli_real_escape_string($db_link, $ort),
													//								mysqli_real_escape_string($db_link, $behindert),
													//								mysqli_real_escape_string($db_link, $nacht)
													//								);   
													//					 
																		$db_erg = mysqli_query( $db_link, $query );
																	if ( ! $db_erg )
																		{
																		die('Ungültige Abfrage: ' . mysqli_error());
																		}


// }// Klammer von submit
 
 
 
 
 echo "<table width='100%' class='altrowstable' id='alternatecolor' >
  <tbody>
     
      <td background='images/leiste-schatten-ausgabetabelle.gif' width='5%' >  Bild                 </td>
      <td background='images/leiste-schatten-ausgabetabelle.gif'><a href=\" Anzeige.php?Anzeige=$Lokalname\">Lokalname</td>
      <td background='images/leiste-schatten-ausgabetabelle.gif'>  Küche                            </td>
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Garten                           </td>
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Ruhetage                         </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Über- <br>nachtung               </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Behinderten- <br>freundlich      </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Telefon                          </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Postleitzahl                     </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Ort                              </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Straße                           </td> 
	  <td background='images/leiste-schatten-ausgabetabelle.gif'>  Homepage                         </td> 	  
   
   ";

 
 
 
 

while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
		echo "<tr>";
		echo "<td>". $zeile['bild'] .           "</td>";
		echo "<td>". $zeile['restaurantname'] . "</td>";
		echo "<td>". $zeile['kueche'] .         "</td>";
		echo "<td>". $zeile['garten'] .         "</td>";
		echo "<td>". $zeile['montag']  .' '.  $zeile['dienstag'] .' '.  $zeile['mittwoch'] . ' '.  $zeile['donnerstag'] . ' '.  $zeile['freitag']     .' '               . $zeile['samstag'] . ' '.  $zeile['sonntag'] . "</td>";
		echo "<td>". $zeile['nacht'] .          "</td>";
		echo "<td>". $zeile['behindert'] .      "</td>";
		echo "<td>". $zeile['telefon'] .        "</td>";
		echo "<td>". $zeile['plz'] .            "</td>"; 
		echo "<td>". $zeile['ort'] .            "</td>";    
		echo "<td>". $zeile['strasse'] .        "</td>";  

        // Escaping für Kontextwechsel nach HTML
        $e = function ($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); }; 
        //homepage Anzeige als Link
        echo '<td><a href="' . $zeile['homepage'] . '">' . $zeile['homepage'] . '</a></td>';  		 
	
		echo "</tr>";
}


 
mysqli_free_result( $db_erg ); 

echo "</tbody></table>";

echo "&nbsp;";  // Leerzeile


und hier mein Formular:
HTML:
<form action="Anzeige.php" method="post" name="finden" >


<fieldset><legend><span class="Stil1">Suchkriterien</span></legend>

<table width="100%" border="0" cellpadding="2" cellspacing="0"   bgcolor="#2F2F2F"><tr><td colspan="3" ><table width="100%" border="0" cellpadding="2" cellspacing="0" bgcolor="#EBC09A">
  <tr>
    <th colspan="5" scope="col"><img src="images/leiste-schatten-oben-braun.gif" width="100%" height="24" /></th>
  </tr>
  <tr>
    <td width="1%">&nbsp;</td>
    <td width="25%"><span class="Stil3">Plz. mind. 3 Stellen</span></td>
    <td width="26%"><span class="Stil3">Ort</span></td>
    <td colspan="2">&nbsp;</td>
  </tr>
  
  
  <tr>
    <td>&nbsp;</td>
    <td>
    <input name="plz" id="plz" type="text" size="6" maxlength="6" />     </td>
    
    <td colspan="3">
    <input name="ort" type="text" size="40" maxlength="38" />    </td>
  </tr>
  
  
  <tr>
    <td><span class="Stil2"></span></td>
    <td width="25%"><span class="Stil3">Art der K&uuml;che</span></td>
    <td width="25%"><span class="Stil3">Garten</span></td>
    <td width="25%"><span class="Stil3">Behinderten gerecht</span></td>
    <td width="25%"><span class="Stil3">&Uuml;bernachtung m&ouml;glich</span></td>
  </tr>
  
  
  
<tr>
    <td>&nbsp;</td>
    <td>
        <select name="kueche" id="kueche"  size="1" maxlength="30" >
        <option> </option>
        <option>fränkisch</option>
        <option>deutsch</option>
        <option>italienisch</option>
        </select>    </td>
    <td>
        <select name="garten" id="garten"  size="1" maxlength="5" >
        <option> </option>
        <option>ja</option>
        <option>nein</option>
        </select>    </td>
    <td>
        <select name="behindert" id="behindert"  size="1" maxlength="5" >
        <option> </option>
        <option>ja</option>
        <option>nein</option>
        </select>    </td>
    <td>
        <select name="nacht" id="nacht"  size="1" maxlength="5" >
        <option> </option>
        <option>ja</option>
        <option>nein</option>
        </select>   </td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td colspan="2">&nbsp;</td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td colspan="2">&nbsp;</td>
</tr>
<tr>
    <td colspan="5" >&nbsp;
        <input type="submit" name="sub" value="suchen" />
        <input type="reset" value="Löschen" onClick="return confirm('Wirklich Eingaben verwerfen?')" /></td>
 </tr>
 <tr>
    <td colspan="5">
        <img src="images/leiste-schatten-unten-braun.gif" width="100%" height="24" />    </td>
</tr>
</table></td>
</tr>
</table>
</fieldset>          
</form>

vielen Dank
Gruß
Rainer
 
Hallo,
hier die Lösung zu dem Problem:
PHP:
	$sql  = (empty($_POST['garten']))    ? '' : " AND garten    = '".$_POST['garten']      ."'";
	$sql .= (empty($_POST['ort']))       ? '' : " AND ort       = '".$_POST['ort']         ."'";
	$sql .= (empty($_POST['kueche']))    ? '' : " AND kueche    = '".$_POST['kueche']      ."'";
	$sql .= (empty($_POST['plz']))       ? '' : " AND plz       = '".$_POST['plz']         ."'";
	$sql .= (empty($_POST['behindert'])) ? '' : " AND behindert = '".$_POST['behindert']   ."'";
	$sql .= (empty($_POST['nacht']))     ? '' : " AND nacht     = '".$_POST['nacht']       ."'"; 
	
	$sql = substr($sql, 5);
	$sql = ($sql == '') ? ""  : " WHERE ".$sql;

Guß
Rainer
 
Zurück