tabelle filtern

also ich habe jetzt nochmal etwas herumprobiert und bin zu einem Ergebnis gekommen:

suchergebnis.php

PHP:
<?php
$fachsuche_schule = "-1";
if (isset($_POST['Fach'])) {
  $fachsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Fach'] : addslashes($_POST['Fach']);
}
$klassesuche_schule = "-1";
if (isset($_POST['Klasse'])) {
  $klassesuche_schule = (get_magic_quotes_gpc()) ? $_POST['Klasse'] : addslashes($_POST['Klasse']);
}
$schulsuche_schule = "-1";
if (isset($_POST['Schule'])) {
  $schulsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Schule'] : addslashes($_POST['Schule']);
}
$verlagsuche_schule = "-1";
if (isset($_POST['Verlag'])) {
  $verlagsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Verlag'] : addslashes($_POST['Verlag']);
}
mysql_select_db($database_datenbank, $datenbank);
$query_schule = sprintf("SELECT Schulname, Buchname, ISBN_Nr, Verlagsname, Anzahl, Fachname, Klasse FROM buecher WHERE Schulname = '%s' AND Verlagsname = '%s' AND Fachname = '%s' AND Klasse = '%s'", $schulsuche_schule,$verlagsuche_schule,$fachsuche_schule,$klassesuche_schule);
$schule = mysql_query($query_schule, $datenbank) or die(mysql_error());
$row_schule = mysql_fetch_assoc($schule);
$totalRows_schule = mysql_num_rows($schule);
?>

also damit kann ich in allen 4 selectboxen etwas auswählen und bekomme dann auch nur das was ich wissen will zu sehen.
Klappt soweit echt gut, doch irgendwie ist dass noch nicht das optimale, denn man kann jetzt nicht nur nach den schulen filtern oder so, er berücksichtigt immer alle 4 selectboxen.
 
PHP:
$arrWhere = array();
if( isset($_POST['Fach']) && !empty($_POST['Fach']) )
	$arrWhere[] = "Fachname = '". mysql_real_escape_string($_POST['Fach']) ."'";

if( isset($_POST['Klasse']) && !empty($_POST['Klasse']) )
	$arrWhere[] = "Klasse = '". mysql_real_escape_string($_POST['Klasse']) ."'";
	
if( isset($_POST['Schule']) && !empty($_POST['Schule']) )
	$arrWhere[] = "Schulename = '". mysql_real_escape_string($_POST['Schule']) ."'";
	
if( isset($_POST['Verlag']) && !empty($_POST['Verlag']) )
	$arrWhere[] = "Verlagsname = '". mysql_real_escape_string($_POST['Verlag']) ."'";

if( sizeof($arrWhere) === 0 )
{
	$strSql = "SELECT * FROM buecher";
}
else
{
	$strSql = "SELECT * FROM buecher ".
			. "WHERE ". implode(' AND ', $arrWhere);
}
Jetzt musst du nur noch dafür sorgen, dass jede Selectbox einen leeren
Eintrag an erster Stelle hat, damit auch wirklich nur nach den ausgewählten Kriterien gesucht werden kann.
 
danke, aber wo genau muss ich den code denn jetzt einsetzen oder muss ich den alten dafür ersetzen? denn irgendwie haut da etwas nicht ganz hin

mein kompletter Quelltext:
PHP:
<?php require_once('Connections/datenbank.php'); ?>
<?php
$fachsuche_schule = "-1";
if (isset($_POST['Fach'])) {
  $fachsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Fach'] : addslashes($_POST['Fach']);
}
$klassesuche_schule = "-1";
if (isset($_POST['Klasse'])) {
  $klassesuche_schule = (get_magic_quotes_gpc()) ? $_POST['Klasse'] : addslashes($_POST['Klasse']);
}
$schulsuche_schule = "-1";
if (isset($_POST['Schule'])) {
  $schulsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Schule'] : addslashes($_POST['Schule']);
}
$verlagsuche_schule = "-1";
if (isset($_POST['Verlag'])) {
  $verlagsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Verlag'] : addslashes($_POST['Verlag']);
}
mysql_select_db($database_datenbank, $datenbank);
$query_schule = sprintf("SELECT Schulname, Buchname, ISBN_Nr, Verlagsname, Anzahl, Fachname, Klasse FROM buecher WHERE Schulname = '%s' AND Verlagsname = '%s' AND Fachname = '%s' AND Klasse = '%s'", $schulsuche_schule,$verlagsuche_schule,$fachsuche_schule,$klassesuche_schule);
$schule = mysql_query($query_schule, $datenbank) or die(mysql_error());
$row_schule = mysql_fetch_assoc($schule);
$totalRows_schule = mysql_num_rows($schule);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<table border="1" cellpadding="2">
  <tr>
    <td>Schulname</td>
    <td>Verlagsname</td>
    <td>Anzahl</td>
    <td>Fachname</td>
    <td>Klasse</td>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_schule['Schulname']; ?></td>
      <td><?php echo $row_schule['Verlagsname']; ?></td>
      <td><?php echo $row_schule['Anzahl']; ?></td>
      <td><?php echo $row_schule['Fachname']; ?></td>
      <td><?php echo $row_schule['Klasse']; ?></td>
    </tr>
    <?php } while ($row_schule = mysql_fetch_assoc($schule)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($schule);
?>

P.S. ICh habe meine Datenbank jetzt schon dahingehend geändert, das als erstes immer ein leeres Feld steht.
 
Aus:
PHP:
<?php require_once('Connections/datenbank.php'); ?>
<?php
$fachsuche_schule = "-1";
if (isset($_POST['Fach'])) {
  $fachsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Fach'] : addslashes($_POST['Fach']);
}
$klassesuche_schule = "-1";
if (isset($_POST['Klasse'])) {
  $klassesuche_schule = (get_magic_quotes_gpc()) ? $_POST['Klasse'] : addslashes($_POST['Klasse']);
}
$schulsuche_schule = "-1";
if (isset($_POST['Schule'])) {
  $schulsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Schule'] : addslashes($_POST['Schule']);
}
$verlagsuche_schule = "-1";
if (isset($_POST['Verlag'])) {
  $verlagsuche_schule = (get_magic_quotes_gpc()) ? $_POST['Verlag'] : addslashes($_POST['Verlag']);
}
mysql_select_db($database_datenbank, $datenbank);
$query_schule = sprintf("SELECT Schulname, Buchname, ISBN_Nr, Verlagsname, Anzahl, Fachname, Klasse FROM buecher WHERE Schulname = '%s' AND Verlagsname = '%s' AND Fachname = '%s' AND Klasse = '%s'", $schulsuche_schule,$verlagsuche_schule,$fachsuche_schule,$klassesuche_schule);
$schule = mysql_query($query_schule, $datenbank) or die(mysql_error());
$row_schule = mysql_fetch_assoc($schule);
$totalRows_schule = mysql_num_rows($schule);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<table border="1" cellpadding="2">
  <tr>
    <td>Schulname</td>
    <td>Verlagsname</td>
    <td>Anzahl</td>
    <td>Fachname</td>
    <td>Klasse</td>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_schule['Schulname']; ?></td>
      <td><?php echo $row_schule['Verlagsname']; ?></td>
      <td><?php echo $row_schule['Anzahl']; ?></td>
      <td><?php echo $row_schule['Fachname']; ?></td>
      <td><?php echo $row_schule['Klasse']; ?></td>
    </tr>
    <?php } while ($row_schule = mysql_fetch_assoc($schule)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($schule);
?>
wird:
PHP:
<?php require_once('Connections/datenbank.php'); ?>
<?php
$arrWhere = array();
if( isset($_POST['Fach']) && !empty($_POST['Fach']) )
    $arrWhere[] = "Fachname = '". mysql_real_escape_string($_POST['Fach']) ."'";

if( isset($_POST['Klasse']) && !empty($_POST['Klasse']) )
    $arrWhere[] = "Klasse = '". mysql_real_escape_string($_POST['Klasse']) ."'";
    
if( isset($_POST['Schule']) && !empty($_POST['Schule']) )
    $arrWhere[] = "Schulename = '". mysql_real_escape_string($_POST['Schule']) ."'";
    
if( isset($_POST['Verlag']) && !empty($_POST['Verlag']) )
    $arrWhere[] = "Verlagsname = '". mysql_real_escape_string($_POST['Verlag']) ."'";

if( sizeof($arrWhere) === 0 )
{
    $query_schule = "SELECT * FROM buecher";
}
else
{
    $query_schule = "SELECT * FROM buecher ".
            . "WHERE ". implode(' AND ', $arrWhere);
}  
mysql_select_db($database_datenbank, $datenbank);

$schule = mysql_query($query_schule, $datenbank) or die(mysql_error());
$row_schule = mysql_fetch_assoc($schule);
$totalRows_schule = mysql_num_rows($schule);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<table border="1" cellpadding="2">
  <tr>
    <td>Schulname</td>
    <td>Verlagsname</td>
    <td>Anzahl</td>
    <td>Fachname</td>
    <td>Klasse</td>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_schule['Schulname']; ?></td>
      <td><?php echo $row_schule['Verlagsname']; ?></td>
      <td><?php echo $row_schule['Anzahl']; ?></td>
      <td><?php echo $row_schule['Fachname']; ?></td>
      <td><?php echo $row_schule['Klasse']; ?></td>
    </tr>
    <?php } while ($row_schule = mysql_fetch_assoc($schule)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($schule);
?>
 
Danke, aber da gibt es ein paar probleme, denn er sagt immer einen Fehler:

Parse error: syntax error, unexpected '.' in C:\Programme\xampp\htdocs\schulbuch_neu\suchergebnis.php on line 23

PHP:
            . "WHERE ". implode(' AND ', $arrWhere);

Desweiteren meckert Dreamweaver rum, dass er die Datensatzgruppe schule nicht mehr findet.

PHP:
  <?php do { ?>
    <tr>
      <td><?php echo $row_schule['Schulname']; ?></td>
      <td><?php echo $row_schule['Verlagsname']; ?></td>
      <td><?php echo $row_schule['Anzahl']; ?></td>
      <td><?php echo $row_schule['Fachname']; ?></td>
      <td><?php echo $row_schule['Klasse']; ?></td>
    </tr>
    <?php } while ($row_schule = mysql_fetch_assoc($schule)); ?>

hmm, was muss man da noch anders machen?
 
Da ist ein "." zuviel, ist wohl mein Fehler, sorry.
PHP:
$query_schule = "SELECT * FROM buecher "
            . "WHERE ". implode(' AND ', $arrWhere);
 
ok, damit ist der Fehler weg und jetzt kommt immer:

Unknown column 'Schulename' in 'where clause'

aber das lag nur daran das da ein e zuviel war, danke
Es klappt prima
Super

Mfg Skyhead
 
Zurück