Seltsames Verhalten bei 2 Skripten

Hallo,

ich habe hier eine Seite:

raetselstunde.de/quizfrage-des-tages.html

auf der ich 2 Skripte zum Einbinden anbiete. Jedes Skript für sich allein funktioniert einwandfrei. Nur wenn ich die beiden zusammen auf einer Seite einbinde, kommt es zu folgendem Fehler:

Beim allerersten Aufruf, d. h. wenn die Seite zum ersten Mal geladen wird und ich auf eine Antwort klicke, fehlt im erscheinenden Alert die Lösung und es fehlen die Antworten. Wenn ich einen Reload der Seite mache funktioniert es so wie es soll. Da es ein bisschen schwierig zu erklären ist, hier mal ein Screenshot:

Und hier sind die Codes:

Quizfrage des Tages:

[code]

<?php @mysql_connect("Server", "Benutzername", "Passwort") or die ("Fehler beim Connect"); @mysql_select_db("Datenbank") or die ("Datenbank nicht vorhanden"); function resetDate() { $query = "Update quizfrage set datum='0000-00-00'"; mysql_query($query) or die ("MySQL-Fehler: " . mysql_error()); } function getQuestion(&$id, &$question, &$antwortr, &$antwortf1, &$antwortf2, &$antwortf3) { $result = false; // Frage des Tages schon mal ermittelt? $query = "Select id, question, antwortr, antwortf1, antwortf2, antwortf3 from quizfrage where datum=curdate()"; $result = mysql_query($query) or die ("MySQL-Fehler: " . mysql_error()); if (mysql_num_rows($result)) { $row = mysql_fetch_array($result); $id = $row['id']; $question = $row['question']; $antwortr = $row['antwortr']; $antwortf1 = $row['antwortf1']; $antwortf2 = $row['antwortf2']; $antwortf3 = $row['antwortf3']; $result = true; } else { // Es wurde noch keine Frage des Tages ermittelt $query = "Select id, question, antwortr, antwortf1, antwortf2, antwortf3 from quizfrage where datum='0000-00-00' order by rand()"; $result = mysql_query($query) or die ("MySQL-Fehler: " . mysql_error()); if (mysql_num_rows($result)) { $row = mysql_fetch_array($result); $id = $row['id']; $question = $row['question']; $antwortr = $row['antwortr']; $antwortf1 = $row['antwortf1']; $antwortf2 = $row['antwortf2']; $antwortf3 = $row['antwortf3']; $result = true; // Die Frage haben wir, jetzt Datum aktualisieren $query = "Update quizfrage set datum=curdate() where id = $id"; mysql_query($query) or die ("MySQL-Fehler: " . mysql_error()); $result = true; } else { // Alle Fragen durch, Datum resetten resetDate(); $result = getQuestion($id, $question, $antwortr,$antwortf1,$antwortf2,$antwortf3); } } return $result; } $result = getQuestion($id, $question, $antwortok, $antwortf1, $antwortf2, $antwortf3); if(!isset($_POST['senden'])){ $antworten_qft = array ($antwortok,$antwortf1,$antwortf2,$antwortf3); shuffle ($antworten_qft); $_SESSION['antworten_qft[0]']=$antworten_qft[0]; $_SESSION['antworten_qft[1]']=$antworten_qft[1]; $_SESSION['antworten_qft[2]']=$antworten_qft[2]; $_SESSION['antworten_qft[3]']=$antworten_qft[3]; $_SESSION['question']=$question; $_SESSION['antwortok']=$antwortok; } else { $antworten_qft = array ($_SESSION['antworten_qft[0]'],$_SESSION['antworten_qft[1]'],$_SESSION['antworten_qft[2]'],$_SESSION['antworten_qft[3]']); $antwortok=$_SESSION['antwortok']; $question=$_SESSION['question']; } unset ($id,$antwortf1,$antwortf2,$antwortf3); if ($result === true) { echo ""; echo "
"; echo "$question"; echo "
"; echo " $antworten_qft[0]
"; echo " $antworten_qft[1]
"; echo " $antworten_qft[2]
"; echo " $antworten_qft[3]
"; echo ""; echo "
"; echo "
"; echo "Quizfrage des Tages - powered by www.raetselstunde.de"; echo "
"; echo ""; } else echo "Mist, da ist was schiefgelaufen."; if(isset($_POST['antwort'])) { $eingabe=$_POST[antwort]; if ($eingabe === $antwortok) echo ''; else echo ''; } ?>[/code]

Zufalls-Quizfrage:

[code]<?php
@mysql_connect(“Server”, “Benutzer”, “Passwort”) or
die (“Fehler beim Connect”);

@mysql_select_db("Datenbank") or
  die ("Datenbank nicht vorhanden");

function getQuestion(&$question,&$antwortr,&$antwortf1,&$antwortf2,&$antwortf3)
{
// Zufallsfrage ermitteln
$query = “Select
question,
antwortr,
antwortf1,
antwortf2,
antwortf3
from
quizfrage
order by rand()”;

   $result = mysql_query($query) or 
     die ("MySQL-Fehler: " . mysql_error());         
     
       $row = mysql_fetch_array($result);
       $question  = $row['question'];
	   $antwortr  = $row['antwortr'];
	   $antwortf1 = $row['antwortf1'];
	   $antwortf2 = $row['antwortf2'];
	   $antwortf3 = $row['antwortf3'];	
       $result = true;
	   
   return $result;

}

$result = getQuestion($question,$antwortr,$antwortf1,$antwortf2,$antwortf3);

$antworten = array ($antwortr,$antwortf1,$antwortf2,$antwortf3);
shuffle($antworten);
unset ($antwortf1,$antwortf2,$antwortf3);

if ($result === true) {
echo “”;
echo “

”;
echo “$question”;
echo “
”;
echo " $antworten[0]
";
echo " $antworten[1]
";
echo " $antworten[2]
";
echo " $antworten[3]
";
echo “”;
echo “
”;
echo “
”;
echo “Zufalls-Quizfrage - powered by www.raetselstunde.de”;
echo “
”;
echo “”;
}
else
echo “Mist, da ist was schiefgelaufen.”;

if(isset($_POST[‘antwort’]))
{
$antwortalt=$_SESSION[‘antwortalt’];
$eingabe=$_POST[antwort];

if ($eingabe === $antwortalt) echo ’'; else echo ’';
}
$_SESSION[‘antwortalt’]=$antwortr;
?> [/code]

Kann der Fehler vielleicht daher kommen, dass beide Skripte die gleiche Datenbank nutzen?

Moin,

für die Datenbank ist das völlig irrelevant. Das dürfte wohl eher beim JS harken bzw. beim Neuaufruf d. Seite, wenn die Antwort falsch war. Aber die Datenbank kannste schon mal ausschliessen :smiley:

MfG
myPages

hm keine ahnung von js, aber vielleicht hast du 2 variablen gleichgesetzt bzw variablenwert werden überschrieben

Ich bin jetzt einen Schritt weiter gekommen.

Ich habe herausgefunden, dass es was mit session_start() zu tun hat. Ursprünglich hatte ich session_start() in beiden php-Dateien drin. Dann kam allerdings eine Warnung, dass vorher schon eine Ausgabe erfolgt. Deshalb habe ich session_start() in den Dateien quizfrage.html und quizfrage-zufall.html ganz an den Anfang, noch vor den Doctype, gesetzt. Deshalb hat der Befehl auch im php-Code gefehlt. Die beiden html-Dateien haben jeweils ein include drin für die jeweilige php-Datei.

Jetzt habe ich in die php.ini mal session.auto-start = 1 eingetragen und in den html-Dateien das session_start() rausgenommen.

Die gute Nachricht ist, es funktioniert jetzt einwandfrei auf meiner Seite. Die schlechte Nachricht ist, die beiden Skripte stehen noch auf einer anderen Domain auf einer Seite. Dort tritt weiterhin der gleiche Fehler auf. Wer die andere Domain haben will --> PN.

Hat noch jemand eine Idee, was ich tun könnte, damit es überall funktioniert?

Erstell dir doch einfach ne index.php mit einer Weiche?

$seite = $_GET['seite'];
switch($seite) {
case 'kp' : include("kp.php"); break;
case 'np' : include("np.php"); break;
// usw
default: include("startseite.php");
}

MfG

Ich habe jetzt mal eine Testseite erstellt. Es tritt der Fehler auf, das, wenn man auf Prüfen drückt, beim erstenmal die Lösung fehlt und/oder dass danach die 4 Antworten fehlen. Hier ist der Link:

cujo.bplaced.net/quizfrage-des-tages.html

Könnt ihr es euch bitte nochmal angucken? Es wäre mir sehr wichtig, dass ich den Fehler finde.

Es hat sich erledigt. Ich habe anstatt SESSION versteckte Felder benutzt. Jetzt funktioniert es einwandfrei :smiley: