Datenbankausgabe mit preg_match-Auswahl

Nutzer

Grünschnabel
Hallo,

habe größeres Problem:

Seit langem schon probiere ich meine Datenbanktabelle " tabelle_lehrer "
mit einem Suchformular für die Schüler(PLZ oder Wohnort-Suche + Auswahl von Schulfach aus Drop-Menü) und anschließender Trefferanzeige auf folgender Seite zu verbinden.

Die Übergabe habe ich mit folgendem Befehl gelöst:

Code:
<form action="ergebnis_lehrersuche.php" method="post" input type="text" name="plz" value="<?php print $plz ?>">
<form action="ergebnis_lehrersuche.php" method="post" input type="text" name="wohnort" value="<?php print $wohnort ?>">
	<form action="ergebnis_lehrersuche.php" method="post" input type="text" name="faecher" value="<?php print $faecher ?>">



Das Ergebnis für die Lehrersuche habe ich so hinterlegt:

PHP:
<?php
$where_string = " WHERE ";
$operator = " = ";

$form_input = $_POST;

$first = true;
$suchmuster = "/dbsearch_([a-zA-Z0-9]*)_(.*)/";
$op_suchmuster = "/OP(.*)_(.*)/";
if(is_array($form_input)) {
	foreach($form_input AS $key => $value) {
		if(preg_match($suchmuster, $key, $treffer)) {
		  $op = $operator;
		  if(preg_match($op_suchmuster, $treffer[2], $op_treffer)) {
		    switch($op_treffer[1]) {
		      case "SAME":
		        $op = " = ";
		        break;
		      case "LIKE":
		        $op = " LIKE ";
		        break;
		      case "NOTSAME":
		        $op = " NOT = ";
		        break;
		      case "NOTLIKE":
		        $op = " NOT LIKE ";
		        break;
		      default:
		        $op = $operator;
		        break;
        }
      }
			if(!empty($value)) {
				$where_string.= $first ? $treffer[1] . $op . "'". $value . "'" : " AND ". $treffer[1] . $op . "'". $value . "'";
				$first = false;
			}
		}
	}
}
?>
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Ergebnis Lehrersuche</title>
</head>

<body>

<?PHP
// Verbindung zum Datenbankserver   
$connect = @mysql_connect("xxxxxx", "xxxxx", "xxxxxx");

if (!$connect) 
{
echo( "<p>Zur Zeit keine Verbindung  " .
            "zum Datenbankserver m&ouml;glich.</p>" );
			       exit();
}
// Datenbank auswaehlen     
if (! @mysql_select_db("xxxxxxx") ) 
{
echo( "<p>Auswahl der Nachhilfe-Datenbank  " .
             "zur Zeit nicht m&ouml;glich.</p >" );
       exit();
}
echo("<p> Ihre Suchergebnisse </p>");
// Einträge abfragen

$result = @mysql_query("SELECT * FROM tabelle_lehrer WHERE plz or wohnort = 'value' AND faecher = 'value'");
if (!$result) {
echo("<p>Fehler bei der Ausf&uuml;hrung der Abfrage: " . mysql_error() . "</p>");
exit();
}
?>
 <table cellpadding=5 cellspacing=2 border=0>
<tr bgcolor="#66cc66"><th>ID<th>Vorname<th>Nachname<th>Strasse<th>PLZ<th>Wohnort<th>Vorwahl-Telefon<th>Telefon<th>Vorwahl-Handy<th>Handy<th>Email<th>Lehrerart<th>
<?PHP
// Text jedes Eintrages in einem Absatz anzeigen
while ( $row = mysql_fetch_array($result)) {
  printf("<tr bgcolor=\"#cc%scc\">" , ($i++%2?"ff":"cc"));
  printf("<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>" ,$row["id"] ,$row["vorname"] ,$row["nachname"] ,$row["strasse"] ,$row["plz"] ,$row["wohnort"] ,$row["vorwahl_telefon"] ,$row["telefon"], $row["vorwahl_handy"] ,$row["handy"] ,$row["email"] ,$row["lehrerart"]);
}
?>
<p>
<body>
<p>
<?PHP
echo 'Neue Abfrage: <a href=Nachhilfe_Zugang.php>hier</a><br>';
?>
</body>
</html>

Was ist falsch an meinem Code ?

Im Moment zeigt er mir nur auf der Ergebnisseite alle Einträge an, die in der tabelle_lehrer stehen. Schön ordentlich mit grünen Feldüberschriften !!
Aber egal was ich in der Suche auch eingebe, immer das gleiche Ergebnis.

Wo liegt der Fehler


Danke schonmal.

Für mich ist das sehr schwierig, da ich blutiger Anfänger bin.
 
Zuletzt bearbeitet:
Weiß ich allerdings nicht so ganz genau - habe den Code so übernommen, da ich ihn auf anderer Seite dafür passend fand !!


Bitte um Hilfe, wo mein Fehler in der Abfrage liegen konnte oder in der Ausgabe ?
 
Zuletzt bearbeitet:
Denn die einzige Datenbankabfrage im Skript hat eine fixe Bedingungsklausel. Dass alle Datensätze ausgewählt werden, liegt daran, dass die Bedingung „plz“ immer wahr ergibt, enthält die Spalte nicht den Wert 0.
 
Zurück