Quiz - Button 'nächste Frage'

Recht schönen Dank schon mal für die Hilfe.
Aber das haut noch nicht so ganz hin. Bei mir wird die nächste Frage nicht angezeigt, bzw. es bleibt die erste stehen. In dieser Art hatte ich es auch in etwa auch schon probiert.

Code:
 ...
 if (!$id) {
 $id = 1;
 $result = mysql_query("SELECT $id, frage, antwort_a, antwort_b, antwort_c, antwort_d, beispiel, antwort FROM quiz_fragen WHERE id = $id");
 $row = mysql_fetch_row($result);

 echo"<table border=\"1\">";
 echo"<form action=\"\" method=\"post\">";
 echo"<input type=\"hidden\" name=\"action\" value=\"antworten\">";
 echo"<input type=\"hidden\" name=\"id\" value=\".$row[0].\">";
 echo"<tr>";
 echo"<td colspan=\"2\" align=\"left\">Frage&nbsp;".$row[0]."</td>";
 echo"</tr>";
 echo"<tr>";
 echo"<td colspan=\"2\" align=\"center\">".$row[1]."</td>";
 echo"</tr>";
 echo"<tr>";
 echo"<td><input type=\"radio\" name=\"check\" value=\"antwort_a\">".$row[2]."</a></td>";
 echo"<td><input type=\"radio\" name=\"check\" value=\"antwort_b\">".$row[3]."</a></td>";
 echo"</tr>";
 echo"<tr>";
 echo"<td><input type=\"radio\" name=\"check\" value=\"antwort_c\">".$row[4]."</a></td>";
 echo"<td><input type=\"radio\" name=\"check\" value=\"antwort_d\">".$row[5]."</a></td>";
 echo"</tr>";
 echo"<tr>";
 echo"<td colspan=\"2\" align=\"right\">Beispiel:&nbsp;".$row[6]."</a></td>";
 echo"</tr>";
 echo"<td colspan=\"2\" align=\"center\">".$row[7]."</td>";
 echo"</table>";
 echo"<td colspan=\"2\" align=\"right\"><input type=\"submit\" value=\"enter\">";
 echo"</form>";
 print("<a href=\"$PHP_Self?id=$id++\">Nächste Frage</a>");
 }
 ...
 
Jetzt macht es das alles aber nur wenn $id NICHT gesetzt ist (da du alles in der IF-Bedingung hast).

Du musst natürlich nur $id auf 1 oder so setzten wenn es $id noch nicht gibt, alles andere musst du immer machen...
 
deep_popel,

lass Dich nicht von der "unsauberen" Programmierung abschrecken. Das Bsp. was aquasonic oben gebracht hat, sollte so aussehen:

PHP:
if (!$id) { $id = 1; }
$result1 = mysql_query("SELECT frage, antwort_a, antwort_b, antwort_c, antwort_d, beispiel, antwort FROM quiz_fragen WHERE id = $id"); 
$result = mysql_fetch_row($result1); 
//Hier dann das Ganze ausgeben 
print("<a href=\"$PHP_Self?id=$id++\">Nächste Frage</a>");
 
Irgendwas stimmt da immer noch nicht ganz. Hab hin und her probiert, komm aber nicht auf's ergebnis. Also ich musste den action-Befehl hinzufügen, sonst wurde mir gar keine frage mehr angezeigt, aber weiterzählen macht er trotzdem nicht. Ich lösche auch extra immer meinen Temp-Ordner.
Code:
if (!$id or $action=="nfrag") {
 $id = 1;
 $result = mysql_query("SELECT frage, antwort_a, antwort_b, antwort_c, antwort_d, beispiel, antwort FROM quiz_fragen WHERE id=$id");
 $row = mysql_fetch_row($result);
 echo...
 ...
 print("<a href=\"$PHP_Self?id=$id++&action=nfrag\">Nächste Frage</a>");
 }
 
PHP:
if (!$id) { $id = 1; }
if($action=="nfrag") {
 $result = mysql_query("SELECT frage, antwort_a, antwort_b, antwort_c, antwort_d, beispiel, antwort FROM quiz_fragen WHERE id=$id");
 $row = mysql_fetch_row($result);
 echo...
 ...
 print("<a href=\"$PHP_Self?id=$id++&action=nfrag\">Nächste Frage</a>");
 }

Aber ich glaube das mit der If-Abfrage und ID kannste eh rauslassen. Aber das kann ich erst genau sagen, wenn ich mal die Struktur Deines Scriptes gesehen habe.
 
He nichts gegen meine "saubere" Programmierung ;-)

Nein die id musst du schon setzten, aber du musst nicht alles in die IF-Bedingung reinschreiben...

kopier mal folgenden Code:

PHP:
if (!$id or $action=="nfrag") {
 $id = 1;
}
 $result = mysql_query("SELECT frage, antwort_a, antwort_b, antwort_c, antwort_d, beispiel, antwort FROM quiz_fragen WHERE id=$id");
 $row = mysql_fetch_row($result);
 echo...
 ...
 print("<a href=\"$PHP_Self?id=$id++&action=nfrag\">Nächste Frage</a>");
 
so wird das nix... $id wird so nicht inkrementiert.
ausserdem darf wegen der IF-Bedingungwenn darf bei $id != 1
kein action angehängt werden. Also so:
PHP:
if (!$id or $action=="nfrag")
	echo "<a href=\"$PHP_Self?id=1&action=nfrag\">Nächste Frage</a>";
else
	echo "<a href=\"$PHP_Self?id=".++$id."\">Nächste Frage</a>";
 
Zuletzt bearbeitet:
@aquasonic: naja das ist Preincrement, was du meinst ist Postincrement:

hier mal ein Auszug aus der Befehlreferenz:

PHP:
echo "<h3>Postincrement</h3>";
$a = 5;
echo "Should be 5: " . $a++ . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";

echo "<h3>Preincrement</h3>";
$a = 5;
echo "Should be 6: " . ++$a . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";
 
Zurück