Anfänger Fehler[MySql/Switch Fehler?]

Rai

Mitglied
Hallo,
ich habe hier ein relativ einfaches Script:
Es soll eine zufällige Vokabel aus einer Datenbank holen und diese dem User zum Übersetzen anzeigen lassen ( Nach einenm Klick auf den Submit Button wird im die richtige Lösung angezeigt.)
Außerdem soll per Zufall ausgewählt werden, ob man Deutsch->Franz oder Franz->Deutsch übersetzen muss ( Zeile 11ff).

Der Fehler:
$angegeben und $antwort werden nicht angezeigt
PHP:
 <?
        if($_Post[$antwort]!=0) {
echo "Die L&ouml;sung war $antwort";
}
 $verbindung = mysql_connect("localhost","root","passwort");
 mysql_select_db("usr_web4_1");
$zufall = 1; #rand(1,1);
$abfrage3 = "SELECT * FROM vok WHERE id='$zufall'";
$ergebnis3 = mysql_query($abfrage3);
$row = mysql_fetch_object($ergebnis3);
$zufall2 = rand(1,2);
switch ($zufall) {
case 1:
$antwort = $row->franz;
$angegben = $row->deutsch;
break;
case 2:
$angegben = $row->franz;
$antwort = $row->deutsch;
break;
Default:
$angegben = $row->franz;
$antwort = $row->deutsch;
}
?>
&Uuml;bersetze ! <?php 
echo $angegeben;
?><hr>
L&ouml;sung eingeben: <form action="training.php?" method="POST">
<input type="hidden" name="antwort" value"<?php
echo $antwort;
?>">
<input name="answer" type="text"><input type="submit" value="Senden !"></form>
  <?
  mysql_close($verbindung);?>

Vielen Dank für eure Mühen meinetwegen :-)
 
$row ist ein objekt? Von welchem Typ eventuell musst du das casten:
$row = (typvonrow)mysql_fetch_object($ergebnis3);

Lass dir mal mit einem var_dump($row); Ausgeben was du aus der Datenbank erhällst vieleicht kommst du dann weiter und weißt wo der Fehler ist.

Des weiteren was mir auffällt du solletst nie Scripte schreiben die auf deine Datenbank mit dem user root connecten.



Gruß Steff
 
var_dump:
PHP:
object(stdClass)#1 (3) { ["id"]=>  string(1) "1" ["deutsch"]=>  string(5) "essen" ["franz"]=>  string(6) "manger" }
( Kompletter Datenbankinhalt)

Die Angabe vom Typ hat leider nicht geholfen.

Den User root habe ich sowieso nur auf meinem lokalen Apache :-)
 
Was mir gerade mal noch auffällt kontrollier mal deine Schreibweise du schreibst einmal:

$angegben

und an anderer Stelle

$angegeben

...

An dieser Stelle fehlt ein =
Code:
name="antwort" value"<?php
echo $antwort;
?>">
Gruß Steff

P.s. ansonsten hast du schonmal probiert den Inhalt von row also $row->deutsch direkt mit echo auszugeben nur um zu gucken ob das funktioniert?
 
Zuletzt bearbeitet:
Rechtschreibfehler sind nun korrigiert.

echo $row->franz;
oder echo $row->deutsch;
gibt auch nichts aus.
Vielleicht ein Fehler bei den Attributen der Felder ?
Screen
 
Nein das problem wird sein das du dich verschrieben hast dun das da an der einen Stelle das "=" fehlt wie ich vorher schon gepostet habe.

Gruß Steff
 
Oh sry das hab ich überlesen :-);
hast du mal probiert anstatt mysql_fetch_objekt mit mysql_fetch_array zu arbeiten
Gruß Steff
 
Zuletzt bearbeitet:
PHP:
<?php
if(isset($_POST['answer'])) {
if($_POST['answer'] == $_POST['antwort']) {
echo "Richtig! Die L&ouml;sung war ".$_POST['antwort'].".";
} else { echo "Falsch! Die L&ouml;sung war ".$_POST['antwort']."."; }
} else { 

$verbindung = mysql_connect("localhost","user","pass");
mysql_select_db("test");
$zufall = 1; #rand(1,1);
$abfrage3 = mysql_query("SELECT * FROM vok WHERE id='$zufall'");
$row = mysql_fetch_object($abfrage3);
$zufall2 = rand(1,2);
switch ($zufall) {
case 1:
$antwort = $row->franz;
$angegeben = $row->deutsch;
break;
case 2:
$angegeben = $row->franz;
$antwort = $row->deutsch;
break;
Default:
$angegeben = $row->franz;
$antwort = $row->deutsch;
}
?>
&Uuml;bersetze ! <?php 
echo $angegeben;
?><hr>
L&ouml;sung eingeben: <form action="test.php" method="POST">
<input type="hidden" name="antwort" value="<?php
echo $antwort;?>">
<input name="answer" type="text"><input type="submit" value="Senden !"></form>
  <? 
  mysql_close($verbindung); 
}
?>
So klappts bei mir...
Und bedenke, dass Groß- und Kleinschreibung bei Variablen wichtig sind, es heißt $_POST nicht $_Post !

Wenn das auch nicht klappt, würde ich mal mysql_error ausgeben lassen. Ich vermute, da ist dann ein Fehler drin.

Erm, habs auch noch stellenweise verändert... Konnte es einfach nicht lassen... ;)
 
Hallo!

Wobei man sich hiermit
PHP:
<input type="hidden" name="antwort" value="<?php 
echo $antwort;?>">
vor jedem absenden die korrekte Antwort ansehen kann.

Gibt es irgendwas zu gewinnen?
Wenn ja, wo? :-)

Gruss Dr Dau
 
Zurück