Tja und hier wird auch deutlich warum es doch Sinn macht Arrays zu verwenden, statt der direkten Ausgabe in der while-Schleife: Als Ausgabe kriege ich jetzt nur die Antworten aus der letzten Reihe der Tabelle in der DB.
Beiträge von Krendipont
-
-
Bei der Auswertung hole ich mir nochmal die IDs und die Antwortoptionen:
Codewhile ($row = mysql_fetch_assoc($result)){ $id= $row["id"]; $A1 = $row["Antwort1"]; $A2 = $row["Antwort2"]; $A3 = $row["Antwort3"]; $A4 = $row["Antwort4"]; $A5 = $row["Antwort5"];
Jetzt will ich ausgeben welche Antwort der Benutzer gewählt hat. Dazu brauche ich Variablen mit $A und $_POST['antwort'][$id] als Nummern. Wenn der User z.B Antwort drei nimmt, dann ist ja $_POST['antwort'][$id]== 3 ; Diese 3 muss ich jetzt nach $A schreiben damit ich die Variable $A3 habe. -
Ja dein Formular ist schon simpler und elleganter, aber das hilft mir bei meinem jetzigen Problem auch nicht viel.Selbst wenn ich die DB jetzt nochmal neu schreibe so wie du es vorgeshlagen hast bleibt eben das problem bestehen, wenn ich in meiner Auswertung die vom Benutzer angeklickte Antwort ausgeben möchte. Mit $_POST['antwort'][$id] habe ich auch lediglich den Value der Antwort. Um den Antworttext aus der DB zu holen, muss ich diesen Value immer noch in eine Variable einarbeiten.
-
Wofür steht 'Dein Eintrag'?
Außerdem kriege ich für echo($$zwi) als Ausgabe $A42 , statt der zugehörigen Antwort aus der DB. -
Na dann habe ich das falsch erklärt. Ich weiß ja nicht ob ich $A22[1], $A32[1], ... habe. Deswegen ja der Umstand mit $Fr[$q9]. In diesem Array ist der Wert der getriggerten Antwort. Abhängig von diesem Wert will ich die Antwort aus der DB holen. Also wenn $Fr[$q9]=1 ist will ich $A12 kriegen und für $Fr[$q9]=2, $A22. Ich mache das alles ja nur um eben die Antwort auszugeben, die die Testperson ausgewählt hat. Aus meiner fragenseite kriege ich aber nur die Info über den Wert der gedrückten Checkbox geschickt. Mithilfe dieser Info will ich mir dann die Antwort aus der DB holen.
-
OK, also vergiss alles was ich geschrieben habe. Um zu deiner Lösung zurückzukommen: $zwi ist jetzt A22, oder? Durch $$zwi = array(1 => 'Dein Eintrag') entsteht jetzt ein Array,oder? Aber wie kriege ich es jetzt hin durch echo $A22[1] ; als Ausgabe meine Antwort zu bekommen?
-
Das genau ist ja mein Problem. Wie kann ich das Array so in die Variable einbauen, dass $Fr[$q9] die erste Zahl bei $A22[1] darstellt. Die zweite Zahl und der Array-Index müssen auch damit verknüpft werden, damit eben die Variable $A22[1] entsteht.
-
Ich will das $A irgendwas $Fr[$q9] irg. 2 irg. [1] , $A22[1] ist. Ich muss also das Array (welches eine Zahl ist, hier soll es 2 sein) als Teil meiner Vraiablen verwenden.
-
Ist das überhaupt möglich es so hinzukriegen?
-
Ja, danke. $Fr muss ein Array sein -> deswegen $Fr[$q0]
Ich habe jetzt noch ein Problem. Das hat mit dem vorangegengenen zwar nix zu tun, aber ich will jetzt nicht extra ein neues Thema aufmachen.
Bei der Auswertung der Antworten der Fragen des Iq-tests sieht der Benutzer als Ausgabe folgenden Text:
Frage1: 15, 25, 37, 51, 67, ihre Antwort 85 ist richtig! bzw.
Frage3: 30, 29, 27, 26, 24, ihre Antwort: 45 Richtige Antwort: 23
Nun habe ich auch Fragen, die mithilfe von Radiocheckbuttons beantwortet werden müssen. In meiner DB habe ich eine Tabelle mit den Fragen samt Antwortoptionen.Wenn nun eine Testperson eine der Checkboxen anklickt wird der Wert(1 oder 2 oder ...) der markierten Box auf die Auswertungsseite in das Array z.B. $Fr[$q9] geschrieben. Wenn die Testperson die Frage falsch beantwortet will ich eben die falsche Antwort nochmal anzeigen lassen. Die auswerung geschieht folgendermaßen:Code$query= "SELECT * FROM `Maße und Gewichte` WHERE id ='$q9'"; $result = mysql_query($query, $db); while ($row = mysql_fetch_assoc($result)){ $F2[1] = $row["Frage"]; $A12[1] = $row["Antwort1"]; $A22[1] = $row["Antwort2"]; $A32[1] = $row["Antwort3"]; $A42[1] = $row["Antwort4"]; $A52[1] = $row["Antwort5"];
Um die falsche Antwort anzuzeigen muss ich z.B. dastehen haben:
Welche Antwort jetzt gewählt wurde ist ja im oben genannten Array $Fr[$q9] gespeichert. Das Problem ist:
Ich muss es irgendwie hinkriegen mit $A ???? $Fr[$q9] ??? 2 ???? [1] als $A22[1] dastehen zu haben. -
Hi,
ich programmiere einen IQ-test. Dafür habe ich eine Datenbank mit Fragen und Antworten erstellt. Die Fragen werden bei jedem Seitenaufruf zufällig aus der DB ausgewählt. Ich habe nun für den Admin eine Seite programmiert, mit der er neue Fragen in die DB hinzufügen kann. Damit meine Auswertung dynamisch auf die Fragen reagieren kann musste ich folgendes machen:PHP
Alles anzeigenwhile ($row = mysql_fetch_assoc($result)){ $id1[] = $row["id"]; $F1[] = $row["Frage"]; $A1[] = $row["Antwort"]; } <tr><td>Frage1:</td></tr> <tr><td><?php echo($F1[0]); ?></td> <td> <input name="F<?php echo($id1[0]); ?>" type="text" size="4" ></td></tr> <?php $q0=$id1[0]; $_SESSION['q0']=$q0;?>
In die Auswertung werden die Eingaben nun mit hidden-Feldern übertragen:
Jetzt will ich den übertragenen Wert in einer Variable speichern, damit ich ihn dann mit der Lösung abgleichen kann:
Für diese Zeile kriege ich jedoch die Fehlermeldung:
Fatal error: Can't use function return value in write context...
Kann mir jemand sagen warum das nicht funktioniert? -
Jo vielne Dank, aber ich habe die von dir vorgeschlagene zweite Option ,it dem Array gewählt.Ich habe dadurch zwar einen Haufen Arrays, die ich aber alle mit dem Index ganz leicht abrufen und in meine HTML-Maske per echo setzen kann.Hier ein Beispiel:
PHP
Alles anzeigen<?php $query= "SELECT * FROM `textaufgaben2` ORDER BY RAND() LIMIT 5;"; $result = mysql_query($query, $db); while ($row = mysql_fetch_assoc($result)){ $id[] = $row["id"]; $F6[] = $row["Frage"]; $A16[] = $row["Antwort1"]; $A26[] = $row["Antwort2"]; $A36[] = $row["Antwort3"]; $A46[] = $row["Antwort4"]; $A56[] = $row["Antwort5"]; } ?> Frage26: <?php echo($F6[0]); ?> <input name="F26" type="radio" value="3" ><?php echo($A16[0]); ?> <input name="F26" type="radio" value="5" ><?php echo($A26[0]); ?> <input name="F26" type="radio" value="1" ><?php echo($A36[0]); ?> <input name="F26" type="radio" value="4" ><?php echo($A46[0]); ?> <input name="F26" type="radio" value="2" ><?php echo($A56[0]); ?>
-
Könntest du das vielleicht ein bisschen erläutern? Irgendwie kapier ich nicht so ganz was das alles bedeuten soll.
Hast du dir meinen Quellcode angeschaut?
Ich habe in meiner query die 5 ausgewählten Fragen.Aber die stehen alle in der Spalte F. Wenn ich sie mir mit mysql_fetch_array hole, dann wird in $row nur die letzte Frage aus der query gespeichert. Ich brauche Zugriff auf alle 5 Fragen.
Es ist das gleiche als hätte ich in miner DB eine Tabelle mit einer Spalte "Login". Dort sind 'Peter', 'Heinz' und 'klaus' gespeichert. Ich mache meine Query und will alle 3 Namen ausgeben. Wie geht das? -
Schau doch mal oben in meinen Quellcode. Da hab ich das ja schon(ich habe statt mysql_fetch_array , mysql_fetch_assoc verwendet. Problem: Ich habe in meiner DB in der Spalte F, 10 Fragen.5 davon werden per Zufall ausgesucht. $row['F'] liefert mir aber lediglich eine von den 5 Fragen. Ich brauche aber alle.
-
Ok natürlich völliger Quatsch was ich geschrieben habe.
Das PROBLEM ist: $row['F'] liefert mir lediglich eine von 5 Fragen. Wie kriege ich die anderen vier? -
Also das oben war ein bisschen schwammig formuliert. Das Problem ist, dass ich nicht weiß was der key ist bei meinem $F, $A1....
-
Also das Formular und die Auswertung sind kein Problem. Ich scheitere leider schon davor. Ich habe jetzt die fünf Fragen mit Antworten. Das Problem ist, dass ich sie nicht aufrufen kann. $F ist doch ein assoziatives Array in dem alle 5 Fragen gespeichert sind, oder? Wie rufe ich jetzt die 5 veschiedenen Fragen auf.
Ich weiß es ist total simpel und blöd aber ich hab irgendwie ein Brett vorm Kopf.
Wenn ihr mir das beantworten könnt seid ihr mich los(hoffentlich ). -
Na ja, ich bin doch dabei diesen Zustand zu ändern. Unter Druck zu arbeiten hat noch niemandem geschadet.
Deine Lösung funktioniert auch nicht. Ich möchte aus meiner Datenbank ja fünf per Zufall ausgewählte Fragen samt Antworten in meine HTML-Maske kriegen und diese dann auch auswerten. -
Also ich konkretisiere mal ein bisschen wie meine Datenbank aufgebaut ist. Der IQ-Test besteht aus mehreren Teilen (zahlenreihen,Textaufgaben, Wortanalogien...). Für jeden Teil habe ich eine eigene Tabelle erstellt. In den Tabellen ist in jeder Reihe enthalten, die ID, die Frage und die Antwort(en).Ich habe bei jeder Tabelle bei den IDs mit 1 angefangen.
Nun mache ich das beispielsweise so:Code
Alles anzeigen$query= "SELECT * FROM Wortanalogien ORDER BY RAND() LIMIT 5;"; $result = mysql_query($query, $db); while ($row = mysql_fetch_assoc($result)){ $id = $row["id"]; $F = $row["F"]; $A1 = $row["A1"]; $A2 = $row["A2"]; $A3 = $row["A3"]; $A4 = $row["A4"]; $A5 = $row["A5"]; }
Wie bekomme ich es jetzt hin, die 5 ausgewählten Fragen samt Antwortoptionen in meinen Fragenteil zu kriegen. Dabei muss auch berücksichtigt werden, dass ich dia Anworten ja auch noch auswerten muss, d.h ich muss genau wissen wo welche Frage steht.
Sorry wenn ich stresse, aber meine Programmierkentnisse sind äußerst beschränkt. -
Hi,
ich bin gerade dabei meinen IQ-Test zu programmieren. Dafür habe ich viele Fragen in einer Datenbank gespeichert. Ich möchte nun immer einen Teil der Fragen per Zufall aus der Datenbank auswählen und in meinen Test integrieren. Die simpelste Möglichkeit wäre wohl es so zu machen:
Das Problem ist, dass ich dann zwar die Fragen habe, ich sie aber einzeln in meine HTML-Maske schreiben muss:Code
Alles anzeigen<tr><td>Frage1:</td></tr> <tr><td> Hier kommt die Frage hin. </td> <td> <input name="F1" type="text" size="4" ></td></tr> Frage8: Hier kommt wieder eine Frage hin. <input name="F8" type="radio" value="2" > Und hier die Antworoptionen bei Multiple choice. <input name="F8" type="radio" value="5" > <input name="F8" type="radio" value="3" > <input name="F8" type="radio" value="4" > <input name="F8" type="radio" value="1" >
Ich habe in meiner Datenbank die Fragen mit nur einer Antwortoption logischerweise in einer anderen Tabelle gespeichert als die mit Multiple Choice.
Problem Nummer1 ist, wie kriege ich jetzt die per Zufall ausgewählten Fragen samt Antwortoptionen in meine Maske?
Problem Nummer 2 ist wie erkenne ich bei der Auswertung der Antworten welche Frage eigentlich gestellt wurde und was somit die richtige Antwort ist?