Unexpected { - Bitte um Rat

Sweetlover

Mitglied
Hallo tutorial user, ich habe versucht ein GB Script zu schreiben aber ich komme wegen einem Fehler nicht weiter, ich habe schon alles versucht, was mir eingefallen ist, es will aber nicht funzen

Bitte um Hilfe und bedanke mich im Voraus!

PHP:
<?php
include("../config/config.php");
if($connect_sql)
{
mysql_select_db($sql_database);
$hole_gb_eintraege = "SELECT * FROM gb ORDER BY Datum DESC;";
$ergebnis = mysql_query($hole_gb_eintraege) OR die(mysql_error());
echo("<p>Einträge: ".mysql_num_rows($ergebnis)."</p>\n");
echo("<hr>\n");
	if(mysql_num_rows($ergebnis))
	{
while($row = mysql_fetch_assoc($ergebnis))
		{
Hier oben (unter while) meckert er: unexpected '{'
PHP:
            echo("<table width=\"100%\" id=\"gb_maintable\">");
            echo("  <tr>");
            echo("    <td width=\"50\" id=\"gb_datum\">");
            echo($row['Datum']);
            echo("    </td>");
            echo("    <td width=\"50%\" id=\"gb_titel\">");
            echo($row['Titel']);
            echo("</td>");
            echo("  </tr>");
            echo("  <tr>");
            echo("    <td width=\"50%\" colspan=\"2\" id=\"gb_inhalt\">");
            echo($row['Inhalt']);
            echo("</td>");
            echo("  </tr>");
            echo("</table>");
		}
}
else
{
echo("<p>Keine Einträge vorhanden.</p>\n");
}
}
else
{
	echo("Es konnte keine Verbindung aufgebaut werden");
}
?>
 
"unexpected" heisst soviel wie "unerwartet", d.h. da ist eine geöffnete geschweiffte Klammer, die da nicht sein sollte. Ich nehme an, Du hast vergessen sie zu schließen.
 
also was es heißt wusste ich schon, nur das merkwürdige ist ja, dass ich wie man oben sehen kann ALLE klammern geschlossen habe...
 
Dadurch das Du eine Datei includes, stimmen die Zeilenzahlen nicht, die PHP ausspuckt. Ich würde mal in die config.php schauen ....

Du hast einige Angewohnheiten, die Du schnell ablegen solltest. Es ist bei echo() üblich ohne klammern zu arbeiten.
Nicht, weil es nicht gehen würde, sondern weil es eine weitere Fehlerquelle ist, wenn man z. B. eine Klammer vergißt :-)

Also echo "string"; oder echo $var; und nicht echo ("string");.

Und mach Deinen Quelltext ein wenig übersichtlicher, z. B. so:
PHP:
<?php

include("../config/config.php");

if($connect_sql){
	mysql_select_db($sql_database);
	$hole_gb_eintraege = "SELECT * FROM gb ORDER BY Datum DESC;";
	$ergebnis = mysql_query($hole_gb_eintraege) OR die(mysql_error());
	echo"<p>Einträge: ".mysql_num_rows($ergebnis)."</p>\n";
	echo"<hr>\n";
	if(mysql_num_rows($ergebnis)){
		while($row = mysql_fetch_assoc($ergebnis)){
			echo "<table width=\"100%\" id=\"gb_maintable\">";
			echo "  <tr>";
			echo "    <td width=\"50\" id=\"gb_datum\">";
			echo $row['Datum'];
			echo "    </td>";
			echo "    <td width=\"50%\" id=\"gb_titel\">";
			echo $row['Titel'];
			echo "</td>";
			echo "  </tr>";
			echo "  <tr>";
			echo "    <td width=\"50%\" colspan=\"2\" id=\"gb_inhalt\">";
			echo $row['Inhalt'];
			echo "</td>";
			echo "  </tr>";
			echo "</table>";
		}
	} else {
		echo "<p>Keine Einträge vorhanden.</p>\n";
	}
} else {
	echo "Es konnte keine Verbindung aufgebaut werden";
}
?>
 
Zuletzt bearbeitet:
Mir ist aufegfallen, dass in deiner While-Shleife ein = als Vergleichszeichen steht. meines Wissens muss da ein == stehen.

Außerdem muss in der SQL-Anweisung am Ende kein Strichpunkt stehen. (Glaube bringt auch einen Fehler. Bin mir aber nicht sicher)

Der Übersicht halber (im Quellcode) solltest du die Echos mit \n beenden. (Zeilenumbruch)

Ganz unten bei der Fehlermeldung fehlten noch <p> und </p>.
PHP:
<?php

include("../config/config.php");

if($connect_sql){
	mysql_select_db($sql_database);
	$hole_gb_eintraege = "SELECT * FROM gb ORDER BY Datum DESC";
	$ergebnis = mysql_query($hole_gb_eintraege) OR die(mysql_error());
	echo"<p>Einträge: ".mysql_num_rows($ergebnis)."</p>\n";
	echo"<hr>\n";
	if(mysql_num_rows($ergebnis)){
		while($row == mysql_fetch_assoc($ergebnis)){
			echo "<table width=\"100%\" id=\"gb_maintable\">\n";
			echo "  <tr>\n";
			echo "    <td width=\"50\" id=\"gb_datum\">\n";
			echo $row['Datum']."\n";
			echo "    </td>\n";
			echo "    <td width=\"50%\" id=\"gb_titel\">\n";
			echo $row['Titel']."\n";
			echo "</td>\n";
			echo "  </tr>\n";
			echo "  <tr>\n";
			echo "    <td width=\"50%\" colspan=\"2\" id=\"gb_inhalt\">\n";
			echo $row['Inhalt']."\n";
			echo "</td>\n";
			echo "  </tr>\n";
			echo "</table>\n";
		}
	} else {
		echo "<p>Keine Einträge vorhanden.</p>\n";
	}
} else {
	echo "<p>Es konnte keine Verbindung aufgebaut werden</p>\n";
}
?>

Ich hoffe, dass es so funktioniert.
Ich sehe keine Fehler mehr.

MfG,
DeadKenny
 
Wieso sollte es bei echo() üblich sein, ohne Klammern zu arbeiten? Bei Funktionen werden doch immer die Parameter innerhalb der Klammer übergeben.
 
Original geschrieben von Gumbo
Wieso sollte es bei echo() üblich sein, ohne Klammern zu arbeiten? Bei Funktionen werden doch immer die Parameter innerhalb der Klammer übergeben.

Lesen....
Nicht, weil es nicht gehen würde, sondern weil es eine weitere Fehlerquelle ist, wenn man z. B. eine Klammer vergißt.

Es ist einfach nicht üblich. Schau Dir mal 99% aller Scripte an ...
 
DeadKenny: In dem ist das einfache Gleichheitszeichen richtig, weil der Variable $row solange die Ergenbnisse von mysql_fetch_assoc() zurückliefert, bis alle Datensätze abgearbeitet sind.
 
if(mysql_num_rows($ergebnis))

stach mir sofort ins auge...
mach da ein
PHP:
if(mysql_num_rows($ergebnis) > 0)
draus
 
danke für die hilfe,
und natürlich für alle tipps, denn als PHP anfänger sollte man natrülich nur das "übliche" lernen :)

THX an alle
 
Zurück