MySQL-Abfrage funktioniert nicht

fotia1980

Mitglied
Hallo zusammen,

ich beschäftige mich seit einer Weile mit PHP und MySQL. bin aber noch ein Anfänger. Hat bisher aber auch ganz gut mit Google & Co. funktioniert.

Jetzt stehe ich vor einem Problem, welches mir immer nur Felhlermeldungen heraus gibt, sobald ich diesen behoben habe kommt der Nächste fehler in der selben Zeile. Ich steige da nicht hinter was falsch ist :-(

Aktuell bekomme ich folgenden Error:
Code:
Parse error: syntax error, unexpected T_VARIABLE in /homepages/33/d19063985/htdocs/L4U-2004/reloaded/rezepte_index.php on line 49

Hier auch mal meinen Ganzen Code:
PHP:
  <?php
	//Anmeldung bei der MySQL Datenbank
	include("zugriff.inc.php");
   
	$tabelle1 = "Rezept_DB";
	$tabelle2 = "Rezept_Anspruch";
	$tabelle3 = "Rezept_Kat";
	
	//Pulldown-Menu zur Auswahl der Kategorie
	echo "<form action='index.php?section=rezepte' method='post'> Kategorie wählen:<br />
    	  <select name='Kat' id='select'>";
		     
   $sql = "SELECT ID, Katname FROM $tabelle3 ORDER BY ID ASC ";
   $result = mysql_query($sql);
   while ($row = mysql_fetch_object($result)){
      echo '<option value="'.$row->ID.'">'.$row->Katname.'</option>';
   }

	echo "</select>
      	  <input type='submit' value='OK'>
  		  </form><p><span class='option'>Wichtiger Hinweis:</span> Das Online-Kochbuch befindet sich noch in der Beta-Phase. Es kann passieren, dass Zeichen nicht richtig dargestellt werden.</p>";
	
		//Abfrage der Überschrift
	if ($_POST[Kat])
		 { 
        switch($_POST[Kat]) 
        { 

			case 1:	echo "<div align='center'><h1>Gefl&uuml;gel</h1></div>";
					break;
			case 2:	echo "<div align='center'><h1>Vegetarische Gerichte</h1></div>";
					break;
			case 3:	echo "<div align='center'><h1>Fischgerichte</h1></div>";
					break;
			case 4:	echo "<div align='center'><h1>Dips</h1></div>";
					break;
			case 5:	echo "<div align='center'><h1>Dressings</h1></div>";
					break;
			case 6:	echo "<div align='center'><h1>Salate</h1></div>";
					break;

					default: echo "Keine Daten gefunden<br><br>";
		}
		}


	if (isset($_POST["submit"]) && is_numeric($_POST['Kat'])
		
					$abfrage = "SELECT * FROM $tabelle1, $tabelle2, tabelle3 WHERE $tabelle1.ID = '".mysql_real_escape_string($_POST['Kat'])."' AND $tabelle2.ID = $tabelle1.ID_Anspruch AND $tabelle3.ID = $tabelle1 = ID_Kat";
					$ergebnis = mysql_query($abfrage);
					while($row = mysql_fetch_object($ergebnis))
   					{
   						echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   					}		
?>

Weiteres Problem ist ein Verständnisproblem. ICh bekomme nicht heraus wie ich diesen Code-Schnipsel mit der If/Switch so umbaue dass er anhand der Eingabe voom Pulldown Menu die Überschrift setzt :-(:

PHP:
	if ($_POST[Kat])
		 { 
        switch($_POST[Kat]) 
        { 

			case 1:	echo "<div align='center'><h1>Gefl&uuml;gel</h1></div>";
					break;
			case 2:	echo "<div align='center'><h1>Vegetarische Gerichte</h1></div>";
					break;
			case 3:	echo "<div align='center'><h1>Fischgerichte</h1></div>";
					break;
			case 4:	echo "<div align='center'><h1>Dips</h1></div>";
					break;
			case 5:	echo "<div align='center'><h1>Dressings</h1></div>";
					break;
			case 6:	echo "<div align='center'><h1>Salate</h1></div>";
					break;

					default: echo "Keine Daten gefunden<br><br>";
		}
		}

Da ich ein Eingabe Formular habe, welches auch beinhaltet die Kategorien zu erweitern ist es so ziemlich blöde realiesiert.

Ich hatte vorher die Abfrage im selben Stil gemacht Da hat auch alles geklappt. Aber jedes mal den Quellcode bearbeiten wenn eine weitere Kategorie hinzugefügt wird ist ja nicht Sinn der sache

Wäre cool wenn mir jemand helfen könnte
 
Hi,

also Problem mit der Fehlermeldung wird wohl hier begraben liegen:

PHP:
if (isset($_POST["submit"]) && is_numeric($_POST['Kat'])

Da felht a) eine schließende runde Klammer und dann muss der IF-Block in geschweifte Klammern gesetzt werden:

PHP:
if (isset($_POST["submit"]) && is_numeric($_POST['Kat'])) { // die letzten 2 Klammern fehlen oben
// hier der PHP Code
}

Das die Überschrift nicht angezeigt wird, könnte daran liegen das du als Vergleich eine Zahl nimmst vom Formular aber die Parameter als Text geliefert werden.

Gruß Thomas
 
Ich gehe mal davon aus das Zeile 49 die hier ist.

PHP:
$abfrage = "SELECT * FROM $tabelle1, $tabelle2, tabelle3 WHERE $tabelle1.ID = '".mysql_real_escape_string($_POST['Kat'])."' AND $tabelle2.ID = $tabelle1.ID_Anspruch AND $tabelle3.ID = $tabelle1 = ID_Kat";

Schau dir mal die tabelle3 an. Da fehlt das $.
 
Hi,

also Problem mit der Fehlermeldung wird wohl hier begraben liegen:

PHP:
if (isset($_POST["submit"]) && is_numeric($_POST['Kat'])

Da felht a) eine schließende runde Klammer und dann muss der IF-Block in geschweifte Klammern gesetzt werden:

PHP:
if (isset($_POST["submit"]) && is_numeric($_POST['Kat'])) { // die letzten 2 Klammern fehlen oben
// hier der PHP Code
}
Danke Thomas die Fehlermeldung ist nun weg. aber wenn ich mir jetzt eine Auswahl treffe bleibt die seite Leer ausser die Überschrift die von dem Code gesteuert wird, den ich im 2. PHP-Code gepostet hat wird angezeigt

Das die Überschrift nicht angezeigt wird, könnte daran liegen das du als Vergleich eine Zahl nimmst vom Formular aber die Parameter als Text geliefert werden.

Gruß Thomas
Die überschriften werdeh ja angezeigt, soweit funktioniert es ja, aber ich möchte das Dynamischer haben. Also für die ganze Geschichte habe ich 3 Tabellen:

Tabelle 1: Sind die Kategorienamen gespeichert die im Pulldown auftauchen - diese möchte ich auch verwenden um die Übersicht zu wählen.

Tabelle 2: Ist die eigentliche Datenbank mit den Zutaten, Zubereitung etc.

Tabelle 3: Ist die definierung des Schwierigkeitsgrad. da die in Tabelle 2 nur mit 1,2 oder 3 angegeben sind in dieser Tabelle wird definiert des 1 = leicht, 2 = durchschnittlich, 3 = schwer

wenn ich jetzt den Teil:
PHP:
	if (isset($_POST["submit"]) && is_numeric($_POST['Kat']))
		
					$abfrage = "SELECT * FROM $tabelle1, $tabelle2, $tabelle3 WHERE $tabelle1.ID = '".mysql_real_escape_string($_POST['Kat'])."' AND $tabelle2.ID = $tabelle1.ID_Anspruch AND $tabelle3.ID = $tabelle1 = ID_Kat";
					$ergebnis = mysql_query($abfrage);
					while($row = mysql_fetch_object($ergebnis))
   					{
   						echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   					}

Gegen die Ursprüngliche Lösung tausche, nämlich diese:
PHP:
	if ($_POST[Kat])
		 { 
        switch($_POST[Kat]) 
        { 

			case 1:	$abfrage = "SELECT * FROM $tabelle1, $tabelle2 WHERE $tabelle1.ID_Kat = '1' AND $tabelle2.ID = $tabelle1.ID_Anspruch";
					$ergebnis = mysql_query($abfrage);
					while($row = mysql_fetch_object($ergebnis))
   					{
   						echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   					}
					break;
				case 2:	$abfrage = "SELECT * FROM $tabelle1, $tabelle2 WHERE ID_Kat = '2' AND $tabelle2.ID = $tabelle1.ID_Anspruch";
					$ergebnis = mysql_query($abfrage);
					while($row = mysql_fetch_object($ergebnis))
   					{
   						echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   					}
					break;
				case 3:	$abfrage = "SELECT * FROM $tabelle1, $tabelle2 WHERE ID_Kat = '3' AND $tabelle2.ID = $tabelle1.ID_Anspruch";
					$ergebnis = mysql_query($abfrage);
					while($row = mysql_fetch_object($ergebnis))
   					{
   						echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   					}
					break;
				case 4:	$abfrage = "SELECT * FROM $tabelle1, $tabelle2 WHERE ID_Kat = '4' AND $tabelle2.ID = $tabelle1.ID_Anspruch";
					$ergebnis = mysql_query($abfrage);
					while($row = mysql_fetch_object($ergebnis))
   					{
   						echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   					}
					break;
				case 5:	$abfrage = "SELECT * FROM $tabelle1, $tabelle2 WHERE ID_Kat = '5' AND $tabelle2.ID = $tabelle1.ID_Anspruch";
					$ergebnis = mysql_query($abfrage);
					while($row = mysql_fetch_object($ergebnis))
   					{
   						echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   					}
					break;
				case 6:	$abfrage = "SELECT * FROM $tabelle1, $tabelle2 WHERE ID_Kat = '6'AND $tabelle2.ID = $tabelle1.ID_Anspruch";
					$ergebnis = mysql_query($abfrage);
					while($row = mysql_fetch_object($ergebnis))
   					{
   						echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   					}
					break;

					default: echo "Ende";
		}
		}
Funktioniert auch alles! Aber die Auswertung ist zum einen zu statisch, da wenn ich eine neue Kategorie festlege muss ich einen weiteren case mit dem ganzen Rattenschwanz einfügen. Und das will ich eben nicht!

Das selbe Spiel ist eben mit der Überschrift!

@tacef
auch dir danke für das fehlende $ ;-)
 
Nur zur Verdeutlichung: Im Moment sieht die Ausgabe der betroffenen Seite so aus:

Code:
<form action='index.php?section=rezepte' method='post'> Kategorie wählen:<br />
<select name='Kat' id='select'>
     <option value="0">-----</option>
     <option value="1">Geflügel</option>
     <option value="2">Vegetarisch</option>
     <option value="3">Fischgerichte</option>
     <option value="4">Dips und Saucen</option>
     <option value="5">Dressings</option>
     <option value="6">Salate</option>
     <option value="8">Pasta</option></select>
      	  <input type='submit' value='OK'>
 </form>
<p><span class='option'>Wichtiger Hinweis:</span> Das Online-Kochbuch befindet sich noch in der Beta-Phase. Es kann passieren, dass Zeichen nicht richtig dargestellt werden.</p>
Vielleicht wird mein anliegen etwas klarer.
 
Fehler gefunden und jetzt funktioniert alles ;-)

Wem es interessiert hier der Entsprechende Code:
PHP:
<?php
	
//Anmeldung bei der MySQL Datenbank
	include("zugriff.inc.php");
   
	$tabelle1 = "Rezept_DB";
	$tabelle2 = "Rezept_Anspruch";
	$tabelle3 = "Rezept_Kat";
	
//Pulldown-Menu zur Auswahl der Kategorie
	echo "<form action='index.php?section=rezepte' method='post'> Kategorie wählen:<br />
    	  <select name='Kat' id='Kat'>";
		     
   $sql = "SELECT ID, Katname FROM $tabelle3 ORDER BY ID ASC ";
   $result = mysql_query($sql);
   while ($rows = mysql_fetch_object($result)){
      echo '<option value="'.$rows->ID.'">'.$rows->Katname.'</option>';
   }
		

	echo "</select>
      	  <input type='submit' value='OK'>
  		  </form><p><span class='option'>Wichtiger Hinweis:</span> Das Online-Kochbuch befindet sich noch in der Beta-Phase. Es kann passieren, dass Zeichen nicht richtig dargestellt werden.</p>";

//Abfrage der Kategorie und Ausgabe als Überschrift
	$sql = "SELECT ID, Katname FROM $tabelle3 WHERE ID = '".mysql_real_escape_string($_POST[Kat])."' ORDER BY ID ASC";
	$result = mysql_query($sql);
	$rows = mysql_fetch_object($result);
	
	echo nl2br("<div align='center'><h1>$rows->Katname</h1></div>"); 
		
//Abfrage und Ausgabe der Datensätze der ausgewählten Kategorie 
	$abfrage = "SELECT * FROM $tabelle1, $tabelle2, $tabelle3 WHERE $tabelle1.ID_Kat = '".mysql_real_escape_string($_POST[Kat])."' AND $tabelle2.ID = $tabelle1.ID_Anspruch AND $tabelle3.ID = $tabelle1.ID_Kat";
	$ergebnis = mysql_query($abfrage);
	while($row = mysql_fetch_object($ergebnis))
   		{
   		echo nl2br("<div align='center'><h1>$row->Titel</h1></div>F&uuml;r $row->Personen Personen<br><br><span class='option'>Zutaten:</span><br>$row->Zutaten<br><br><span class='option'>Zubereitung:</span><br>$row->Zubereitung<br><br><span class='option'>Schwierigkeitsgrad:</span> $row->Anspruch<br><span class='option'>Zeitaufwand:</span> $row->Dauer<br><hr><br>");
   		}
?>
 
Zurück