tabelle filtern

Dann musst die entsprechend vorher ermitteln.Ein Beispiel, mit dem man alle eingetragenen Schulen ermitteln kann.
Code:
SELECT * FROM buecher GROUP BY schule
Edit
Du hast doch für die Schulen eine Tabelle, für die Klassen und für die Fächer - sind die immer auf dem aktuellen Stand?
 
Zuletzt bearbeitet:
Wo liegt dann das Problem, einfach alle Daten zu ermitteln, getrennt in Selects zur Auswahl anbieten und entsprechend auf die Auswahl zu reagieren?
 
So, hier ist mal die Datei, wo ich angefangen hab, die aber nur mit der Schule funktioniert.

PHP:
<?php require_once('Connections/datenbank.php'); ?>
<?php
if (!isset($_SESSION)) {
  session_start();
}
$MM_authorizedUsers = "VIP";
$MM_donotCheckaccess = "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { 
  // For security, start by assuming the visitor is NOT authorized. 
  $isValid = False; 

  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
  // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
  if (!empty($UserName)) { 
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
    // Parse the strings into arrays. 
    $arrUsers = Explode(",", $strUsers); 
    $arrGroups = Explode(",", $strGroups); 
    if (in_array($UserName, $arrUsers)) { 
      $isValid = true; 
    } 
    // Or, you may restrict access to only certain users based on their username. 
    if (in_array($UserGroup, $arrGroups)) { 
      $isValid = true; 
    } 
    if (($strUsers == "") && false) { 
      $isValid = true; 
    } 
  } 
  return $isValid; 
}

$MM_restrictGoTo = "formular_angemeldet.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
  $MM_qsChar = "?";
  $MM_referrer = $_SERVER['PHP_SELF'];
  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0) 
  $MM_referrer .= "?" . $QUERY_STRING;
  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  header("Location: ". $MM_restrictGoTo); 
  exit;
}
?><?php
$currentPage = $_SERVER["PHP_SELF"];

$maxRows_gesamte_tabelle = 10;
$pageNum_gesamte_tabelle = 0;
if (isset($_GET['pageNum_gesamte_tabelle'])) {
  $pageNum_gesamte_tabelle = $_GET['pageNum_gesamte_tabelle'];
}
$startRow_gesamte_tabelle = $pageNum_gesamte_tabelle * $maxRows_gesamte_tabelle;

mysql_select_db($database_datenbank, $datenbank);
$query_gesamte_tabelle = "SELECT Schulname, Buchname, BNr, ISBN_Nr, Verlagsname, Anzahl, Fachname, Klasse FROM buecher ORDER BY BNr ASC";
$query_limit_gesamte_tabelle = sprintf("%s LIMIT %d, %d", $query_gesamte_tabelle, $startRow_gesamte_tabelle, $maxRows_gesamte_tabelle);
$gesamte_tabelle = mysql_query($query_limit_gesamte_tabelle, $datenbank) or die(mysql_error());
$row_gesamte_tabelle = mysql_fetch_assoc($gesamte_tabelle);

if (isset($_GET['totalRows_gesamte_tabelle'])) {
  $totalRows_gesamte_tabelle = $_GET['totalRows_gesamte_tabelle'];
} else {
  $all_gesamte_tabelle = mysql_query($query_gesamte_tabelle);
  $totalRows_gesamte_tabelle = mysql_num_rows($all_gesamte_tabelle);
}
$totalPages_gesamte_tabelle = ceil($totalRows_gesamte_tabelle/$maxRows_gesamte_tabelle)-1;

mysql_select_db($database_datenbank, $datenbank);
$query_Verlag = "SELECT * FROM verlag";
$Verlag = mysql_query($query_Verlag, $datenbank) or die(mysql_error());
$row_Verlag = mysql_fetch_assoc($Verlag);
$totalRows_Verlag = mysql_num_rows($Verlag);

mysql_select_db($database_datenbank, $datenbank);
$query_Fach = "SELECT * FROM fach";
$Fach = mysql_query($query_Fach, $datenbank) or die(mysql_error());
$row_Fach = mysql_fetch_assoc($Fach);
$totalRows_Fach = mysql_num_rows($Fach);

mysql_select_db($database_datenbank, $datenbank);
$query_Klasse = "SELECT * FROM klasse";
$Klasse = mysql_query($query_Klasse, $datenbank) or die(mysql_error());
$row_Klasse = mysql_fetch_assoc($Klasse);
$totalRows_Klasse = mysql_num_rows($Klasse);

mysql_select_db($database_datenbank, $datenbank);
$query_Schule = "SELECT * FROM schule";
$Schule = mysql_query($query_Schule, $datenbank) or die(mysql_error());
$row_Schule = mysql_fetch_assoc($Schule);
$totalRows_Schule = mysql_num_rows($Schule);

$queryString_gesamte_tabelle = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_gesamte_tabelle") == false && 
        stristr($param, "totalRows_gesamte_tabelle") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_gesamte_tabelle = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_gesamte_tabelle = sprintf("&totalRows_gesamte_tabelle=%d%s", $totalRows_gesamte_tabelle, $queryString_gesamte_tabelle);
?>

<!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>VIP-Intern</title>
<link rel="stylesheet" type="text/css" href="css/schule.css" />
</head>

<body>

<h2 align="center">Gesamte Tabelle</h2>


<table width="964" border="1" align="center" cellpadding="2">
  <tr>
      <td width="202"><div align="center"><strong>Schule</strong></div></td>
      <td width="142"><div align="center"><strong>Buch-Titel</strong></div></td>
      <td width="142"><div align="center"><strong>ISBN_Nr</strong></div></td>
      <td width="142"><div align="center"><strong>Verlag</strong></div></td>
      <td width="52"><div align="center"><strong>Anzahl</strong></div></td>
      <td width="102"><div align="center"><strong>Kursfach</strong></div></td>
      <td width="102"><div align="center"><strong>Klasse</strong></div></td>
  </tr>
  <?php do { ?>
    <tr>
      <td width="182"><?php echo $row_gesamte_tabelle['Schulname']; ?></td>
      <td width="142"><?php echo $row_gesamte_tabelle['Buchname']; ?></td>
      <input type="hidden" name="BNr" value="<?php echo $row_gesamte_tabelle['BNr']; ?>" />
      <td width="142"><?php echo $row_gesamte_tabelle['ISBN_Nr']; ?></td>
      <td width="142"><?php echo $row_gesamte_tabelle['Verlagsname']; ?></td>
      <td width="52"><?php echo $row_gesamte_tabelle['Anzahl']; ?></td>
      <td width="102"><?php echo $row_gesamte_tabelle['Fachname']; ?></td>
      <td width="102"><?php echo $row_gesamte_tabelle['Klasse']; ?></td>
    </tr>
    <?php } while ($row_gesamte_tabelle = mysql_fetch_assoc($gesamte_tabelle)); ?>
</table>
<br />
Datens&auml;tze <?php echo ($startRow_gesamte_tabelle + 1) ?> bis <?php echo min($startRow_gesamte_tabelle + $maxRows_gesamte_tabelle, $totalRows_gesamte_tabelle) ?> von <?php echo $totalRows_gesamte_tabelle ?>

<table border="0" width="50%" align="center">
  <tr>
    <td width="23%" align="center"><?php if ($pageNum_gesamte_tabelle > 0) { // Show if not first page ?>
          <a href="<?php printf("%s?pageNum_gesamte_tabelle=%d%s", $currentPage, 0, $queryString_gesamte_tabelle); ?>"><img src="Bilder/back_back_button.gif" alt="Erster" border="0" /></a>
          <?php } // Show if not first page ?>
    </td>
    <td width="31%" align="center"><?php if ($pageNum_gesamte_tabelle > 0) { // Show if not first page ?>
          <a href="<?php printf("%s?pageNum_gesamte_tabelle=%d%s", $currentPage, max(0, $pageNum_gesamte_tabelle - 1), $queryString_gesamte_tabelle); ?>"><img src="Bilder/back_button.gif" alt="Zurück" border="0" /></a>
          <?php } // Show if not first page ?>
    </td>
    <td width="23%" align="center"><?php if ($pageNum_gesamte_tabelle < $totalPages_gesamte_tabelle) { // Show if not last page ?>
          <a href="<?php printf("%s?pageNum_gesamte_tabelle=%d%s", $currentPage, min($totalPages_gesamte_tabelle, $pageNum_gesamte_tabelle + 1), $queryString_gesamte_tabelle); ?>"><img src="Bilder/vor_button.gif" alt="Vor" border="0" /></a>
          <?php } // Show if not last page ?>
    </td>
    <td width="23%" align="center"><?php if ($pageNum_gesamte_tabelle < $totalPages_gesamte_tabelle) { // Show if not last page ?>
          <a href="<?php printf("%s?pageNum_gesamte_tabelle=%d%s", $currentPage, $totalPages_gesamte_tabelle, $queryString_gesamte_tabelle); ?>"><img src="Bilder/vor_vor_button.gif" alt="Letzter" border="0" /></a>
          <?php } // Show if not last page ?>
    </td>
  </tr>
</table>

<br />
Hier erscheint das suchformular
<form action="suchergebnis.php" method="post" name="Suche">

<select name="Schule">
  <?php
do {  
?>
  <option value="<?php echo $row_Schule['Schulname']?>"><?php echo $row_Schule['Schulname']?></option>
  <?php
} while ($row_Schule = mysql_fetch_assoc($Schule));
  $rows = mysql_num_rows($Schule);
  if($rows > 0) {
      mysql_data_seek($Schule, 0);
	  $row_Schule = mysql_fetch_assoc($Schule);
  }
?>

</select>

<select name="Verlag">
  <?php
do {  
?>
  <option value="<?php echo $row_Verlag['Verlagsname']?>"><?php echo $row_Verlag['Verlagsname']?></option>
  <?php
} while ($row_Verlag = mysql_fetch_assoc($Verlag));
  $rows = mysql_num_rows($Verlag);
  if($rows > 0) {
      mysql_data_seek($Verlag, 0);
	  $row_Verlag = mysql_fetch_assoc($Verlag);
  }
?>

</select>

<select name="Fach">
  <?php
do {  
?>
  <option value="<?php echo $row_Fach['Fachname']?>"><?php echo $row_Fach['Fachname']?></option>
  <?php
} while ($row_Fach = mysql_fetch_assoc($Fach));
  $rows = mysql_num_rows($Fach);
  if($rows > 0) {
      mysql_data_seek($Fach, 0);
	  $row_Fach = mysql_fetch_assoc($Fach);
  }
?>

</select>

<select name="Klasse">
  <?php
do {  
?>
  <option value="<?php echo $row_Klasse['Klasse']?>"><?php echo $row_Klasse['Klasse']?></option>
  <?php
} while ($row_Klasse = mysql_fetch_assoc($Klasse));
  $rows = mysql_num_rows($Klasse);
  if($rows > 0) {
      mysql_data_seek($Klasse, 0);
	  $row_Klasse = mysql_fetch_assoc($Klasse);
  }
?>

</select>

<input type="submit" value="Suchen" name="Suchen" />

</form>

  <br />
  <br />
<div align="center"><a href="formular_angemeldet.php" title="Sartseite" target="_self"><img src="Bilder/abmelden.gif" alt="Startseite" border="0" /></a>
</div>


</body>
</html>
<?php
mysql_free_result($gesamte_tabelle);

mysql_free_result($Verlag);

mysql_free_result($Fach);

mysql_free_result($Klasse);

mysql_free_result($Schule);
?>

vielleicht hilft eucgh das ja weiter. Ich weiß nicht, was ich da ändern muss und vorallem wie dann die "suchergebnis.php" datei aussehen muss.

suchergebnis.php:

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

$colname_verlag = "-1";
if (isset($_POST['Verlag'])) {
  $colname_verlag = (get_magic_quotes_gpc()) ? $_POST['Verlag'] : addslashes($_POST['Verlag']);
}
mysql_select_db($database_datenbank, $datenbank);
$query_verlag = sprintf("SELECT Schulname, Buchname, ISBN_Nr, Verlagsname, Anzahl, Fachname, Klasse FROM buecher WHERE Verlagsname = '%s'", $colname_verlag);
$verlag = mysql_query($query_verlag, $datenbank) or die(mysql_error());
$row_verlag = mysql_fetch_assoc($verlag);
$totalRows_verlag = mysql_num_rows($verlag);
?>

<!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);

mysql_free_result($verlag);
?>
 
Gratuliere Umständlicher geht wohl kaum noch!
Mich wunderst nicht das du immer die Selbe Liste rausbekomst.
Du frag ja auch immer die ganzen Tabellen ab ohne die Beziehung zwischen tabellen in keinsten fall zu beachten.

Um nur mal die letzten 2 Sql befehl her zunehmen.
SELECT Schulname, Buchname, ISBN_Nr, Verlagsname, Anzahl, Fachname, Klasse FROM buecher WHERE Schulname = 'suchname';

Was glaubst welche Ergebnis du da bei der Abfrage bekommst.Richtig alles was in Tabelle buecher steht und wo der Schulname dem suchnamen entspricht.

Nun der 2 Sql befehl
SELECT Schulname, Buchname, ISBN_Nr, Verlagsname, Anzahl, Fachname, Klasse FROM buecher WHERE Verlagsname = 'suchname'

Was kommt da raus.Auch wieder Richtig alles was in Tabelle buecher steht wo der Verlagsname dem suchnamen entspricht.

Fällt dir dabei was auf? Da kans sich nix ändern wenn ein faktor dazu kommt. Weil du die Daten unabhängig vom such faktor abfragst. Beim 2 Sql befehl würdest auch alle bücher bekommen die allen Schulen angehören.

Wenn dann müßtes schon beide sachen in einem Sql befehl abfragen und natürlich auch die Beziehung im Sql mitreinehmen sonst bekomste am ende einen unsin raus.

Mfg Splasch
 
Toll, so eine schlaue Antwort hät ich mir auch geben können.

Wie muss denn nun mein SQL befehl aussehen, damit es funktioniert oder was ich ändern muss.

Was bitte kann ich dafür wenn ich nicht so sehr viel ahnung hab wie ihr, ich bin grad erst dabei das zu erlernen. Doch das geht nicht so schnell. Aller Anfang ist schwer und jeder hat mal klein angefangen.
 
Den Sql befehl haben dir chainy und ich schon einigemale gepostet bräuchstes ja nur oben nach zulesen.

Auserdem hab ich dir schon parr mal gesagt das deine Tabellen nicht so Stimmen.
Wenn du willst kann ich dir Links geben wo die Datenbank entwiklung ein wenig erklärt wird bwz. was es auch mit den Beziehungen aufsich hat.

Zunächst mal änderst du die Tabelle Buecher um da sind einige spalten falsch drin um ein differenziertes ergebniss zuerhalten.

In Tabelle buecher machste aus
Verlangsname wird f_Verlagid ( Fremdschlüssel aus tabelle verlag und gibt int als datentyp an
Schulname wird zu f_Schulid (Fremdschlüssel aus der tabelle Schule) typ int

Die Abfrage sieht dann in so etwa aus bwz für die anderen sachen muß man die tabellen dann noch anpassen hab dir nur mal die genannt die nötig sind um die 2 sachen abzufragen

PHP:
SELECT Schulname, Buchname, ISBN_Nr, Verlagsname, Anzahl, Fachname, Klasse FROM
 Schule,buecher,verlag
 WHERE buecher.f_Schulid=schule.SNr AND Verlag.VNr=buecher.f_Verladid and Verlagsname='suchname' and Schulname='schulsuchname';
Mfg Splasch
 
Zuletzt bearbeitet:
Ich werde es zu hause mal ausprobieren.

Wenn ich meine Tabellen jetzt dahingehend änder, das ich in die Tabelle buecher nur noch den Fremdschlüssel der anderen tabellen verwende, haute irgendwas bei der dynamisch erzeugten tabelle nicht mehr hin, da hab ich dann auch immer nur die Fremdschlüssel bekommen und nicht den wert dafür Aber das ist ja ein anderes Thema.

Für mich ist immernoch unklar, warum ich es über Fremdschlüssel hinbekomme, aber es nicht klappt, wenn da statt dem schlüssel einfach schon der wert steht den ich suche
 
Für mich ist immernoch unklar, warum ich es über Fremdschlüssel hinbekomme, aber es nicht klappt, wenn da statt dem schlüssel einfach schon der wert steht den ich suche

Ganz einfach weil sich sonst die Werte nicht zuordnen lassen also keinen Anker punkt haben genau das ist der Grund warum man Beziehungen braucht.

Überleg mal wenn du nur 1 Tabelle hättes und dort 2 Schulen dann müßte man die Ankerpunkte manuell legen das heißt immer alle info die dazugehören in eine Zeile (1 Datensatz) alles doppelt,dreifach und noch mehr mal speichern.Der sin bei Beziehung ist das vermeiden von unötigen doppelten einträgen.Zudem ist die Spalten anzahl begrenzt. Das heißt irgendwann kommste dann aus der Sackgasse nicht mehr raus.

Ohne Beziehung müßte jeder Datensatz alle benötigten werte wieder drin haben die schon in anderen Datensätzen stehen.Dann würde der gleiche Buchname buchnummer unso weiter zick mal doppelt und öfterst in deiner Tabelle stehen das geht bei einfach sachen noch gut.

Daher machs gleich richtig und setz Beziehung dann hast es nacher viel einfacher und läufst auch nicht gefahr irgendwann mal in einer Sackgasse zulanden.

Hier mal parr links zur Datenbank entwiklung dort werden auch die Beziehungen teilweise erklärt:
http://www.little-idiot.de/mysql/mysql-254.html
http://www.dfpug.de/konf\konf_1998\07_c_s\d_sql2/d_sql2.htm
http://reeg.junetz.de/DSP/node7.html

Mfg Splasch
 
Zuletzt bearbeitet:
Zurück