ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
562
562
EMPFEHLEN
-
Hi,
ich stehe grad vor nem großen kleinen Problem - oder einfach nur auf der Schlauch
Jedefalls habe ich ein Formular dass so aussieht: siehe Anhang
In diesme Formular könne, wie ihr seht 4 Antworten eingetragen werden und eine mit Hilfe der radio-Buttons als richtig markiert werden.
Nun weiss ich allerdings nicht, wie ich die Daten möglichst sinnig in meine DB eintrage
Die DB hat folgende Strktur:
| answer | correct |
Die Textfelder haben die id "answer1" bis "answer4".
Die radio-buttons haben die id "correct und die Werte "1" bis "4".
Nun soll für jeder der 4 eingetragenen Antworten ein datensatz in die DB geschrieben werden, wobei das Feld "correct" den Wert "1" bekommen soll, wenn der entsprechende radio-button ausgewählt wurde.
Wie bekomme ich das am einfachsten und logischsten hin?
Hoffe, ihr könnt mir helfen, da ich hier ziemlich auf dem Schlauch stehe.
Danke!
-
30.11.05 17:23 #2
Hallo!
Verstehe ich es richtig?!
Du hast keine Frage?
Darauf soll der User 4 Antworten geben können?
Diese Anworten soll er auch noch selbst definieren können und selbst entscheiden können welche davon korrekt ist?
Hmm, wo steckt dort die Logik?!
Mal abgesehen davon, Radio-Buttons sind nicht für eine Mehrfachauswahl gemacht.
Gruss Dr DauSchri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 29.10.2011)
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)
-
Nein, du verstehst überhaupt nix
Zitat von Dr Dau
Es handelt sich hierbei um den admin-Teil eines Quizes.
In dieser Maske werden eine Frage (der Teil ist auf dem Screenshot nicht zu sehen, da er für die Fragestellung nicht relevant ist) und 4 Antwortmöglichkeiten eingeben. Ausserdem wird über die radio-buttons 1 der Antworten als richtig markiert.
Was weiter passieren soll hab ich ja bereits oben beschrieben.
Genau da liegt ja auch mein Problem - und nicht bei Sinn und Unsinn der Eingabemaske.
Hoffe, ihr könnt mir trotzdem helfen.
-
Hi wenn ich das richtig verstanden habe könnte man es so lösen.
mfG Drade
PHP-Code:<?php
//ersetzte dur deine Configdatei etc.
include("mysqlconnect.php");
if(isset($anser1) && isset($anser2) && isset($anser3) &&isset($anser4)){
if($radio == answer1){
$insert1 = "INSERT INTO deinetabelle (answer, correct) VALUES ('$answer1','1')";
}else{
$insert1 = "INSERT INTO deinetabelle (answer, correct) VALUES ('$answer1','0')";
}
if($radio == answer2){
$insert1 = "INSERT INTO deinetabelle (answer, correct) VALUES ('$answer2','1')";
}else{
$insert1 = "INSERT INTO deinetabelle (answer, correct) VALUES ('$answer2','0')";
}
if($radio == answer3){
$insert1 = "INSERT INTO deinetabelle (answer, correct) VALUES ('$answer3','1')";
}else{
$insert1 = "INSERT INTO deinetabelle (answer, correct) VALUES ('$answer3','0')";
}
if($radio == answer4){
$insert1 = "INSERT INTO deinetabelle (answer, correct) VALUES ('$answer4,'1')";
}else{
$insert1 = "INSERT INTO deinetabelle (answer, correct) VALUES ('$answer4','0')";
}
mysql_query($insert1);
mysql_query($insert2);
mysql_query($insert3);
mysql_query($insert4);
}
?>
-
Im Prinzip richtig verstanden

Ich hatte bloß gehofft, dass es auch etwas kompakter geht...
-
Du könntest es auch in einer schleife abfragen lassen aber kompakter wird es dadurch nicht, da auch die Schleife die selben abfragen durchführen muss.
-
30.11.05 21:28 #7
- Registriert seit
- Dec 2001
- Ort
- Hannover
- Beiträge
- 4.234
Natürlich geht das kompakter...
Ich erweitere mal das an sich schon gute Beispiel:
Du gibst den Textfeldern folgende Namen:
answer[0], answer[1], answer[2], answer[3]
oder auch einfach allen
answer[]
PHP, schreibt alle angaben in ein Array. Das Gleiche passiert mit Textfeld correct. Nur das Du als Standardwert '0' wählst, und in angeklicktem zustand soll als '1' verschickt werden.
Das kannst du wie folgt abfragen.
P.S.: Ungetestet und in 2 Minuten zusammengetipptPHP-Code:<?php
// Nimm die POST Daten in Empfang und schreibe sie in ein Array
$arr_values['answer'] = $_POST['answer'];
$arr_values['correct'] = $_POST['correct'];
// Alle Werte stehen nun in einem Array bereit
//ersetzte durch deine Configdatei etc.
include("mysqlconnect.php");
// nun bilden wir eine kleine schleife
for($i=0;$i<count($arr_values['answer']);$i++){
$answer = $arr_values['answer'][$i];
$correct = $arr_values['correct'][$i];
// bilde SQL-Befehl
$sql = "INSERT INTO deinetabelle (answer,correct) VALUES ('$answer','$correct')";
// Es folgt Deine Datenbankverbindung
$query = mysql_query($sql);
}
// Die Schleife führt in diesem Beispiel 4 Verbindungen durch
?>
Und obendrein die Anzahl der Antworten quasi unbegrenzt ohne das man das Script abändern müßteGeändert von Neurodeamon (30.11.05 um 21:31 Uhr)
Copy for free - Yet another page for free software with soures:- BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
- W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
- AppStarter (Somewhat like PortableApps launcher)
- QuakeConsole (Show/Hide windows console with your tilde key)
- BetterFileRenamer (Simple file renamer that adds date and version)
-
Danke für deine Lösung!
So hab ich mir das in etwa vorgestellt.
Ein Problem gibts aber immer noch.
Wenn ich nun die Antworten in die DB schreiben lasse, so hat "correct" beim ersten datensatz immer den Wert "1", alle weiteren haben den Wert "0" - egal welchen der 4 radio-buttons ich auswähle
Hier nochmal der Code:
Der passende HTML Teil schaut so aus:PHP-Code:$arr_values['answer'] = $_POST['answer'];
$arr_values['correct'] = $_POST['correct'];
for($i=0; $i<count($arr_values['answer']); $i++)
{
$answer = $arr_values['answer'][$i];
$correct = $arr_values['correct'][$i];
$sqlab = "INSERT INTO `quiz_answers` (answer, correct) VALUES ('$answer', '$correct')";
mysql_query($sqlab);
}
Wo liegt der Fehler?HTML-Code:<tr> <td><strong>Antwort 1: </strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40" /> <input type="radio" name="correct[]" value="1" id="correct[]" /> </td> </tr> <tr> <td><strong>Antwort 2:</strong> </td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40" /> <input type="radio" name="correct[]" value="1" id="correct[]" /> </td> </tr> <tr> <td><strong>Antwort 3: </strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40" /> <input type="radio" name="correct[]" value="1" id="correct[]" /> </td> </tr> <tr> <td><strong>Antwort 4: </strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40" /> <input type="radio" name="correct[]" value="1" id="correct[]" /> </td> </tr>
-
01.12.05 19:56 #9
- Registriert seit
- Dec 2001
- Ort
- Hannover
- Beiträge
- 4.234
Ich glaube ich weiß woran es liegt. Die leeren Radiobuttons sind wahrscheinlich die Übeltäter. Ich habe eine weitere Abfrage eingefügt, welche die leeren Werte auf »0« setzt. Vermutlich wurde in der SQL-Spalte der Standardwert »1« genommen und Wert NOT NULL eingestellt.Mysql fügt die »1« ein wenn leere Werte durchlaufen.
Ich habe das Script modifiziert, es gibt jetzt keine leeren Werte:
formular.html
HTML-Code:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title></title> </head> <body> <form method="post" action="proc.php" name="test"> <table> <tr> <td><strong>Antwort 1:</strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40"> <input type="radio" name="correct[]" value="1" id="correct[]"></td> </tr> <tr> <td><strong>Antwort 2:</strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40"> <input type="radio" name="correct[]" value="1" id="correct[]"></td> </tr> <tr> <td><strong>Antwort 3:</strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40"> <input type="radio" name="correct[]" value="1" id="correct[]"></td> </tr> <tr> <td><strong>Antwort 4:</strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40"> <input type="radio" name="correct[]" value="1" id="correct[]"></td> </tr> </table> <input name="send" value="Abschicken" type="submit"> </form> </body> </html>
proc.php
Ausgabe meiner Testausgaben im Browser:PHP-Code:<?php
// Nimm die POST Daten in Empfang und schreibe sie in ein Array
$arr_values['answer'] = $_POST['answer'];
$arr_values['correct'] = $_POST['correct'];
// Alle Werte stehen nun in einem Array bereit
//ersetzte durch deine Configdatei etc.
// include("mysqlconnect.php");
// nun bilden wir eine kleine schleife
for($i=0;$i<count($arr_values['answer']);$i++){
$answer = $arr_values['answer'][$i];
$correct = $arr_values['correct'][$i];
if($correct == ''){$correct = 0;}
// bilde SQL-Befehl
$sql = "INSERT INTO deinetabelle (answer,correct) VALUES ('$answer','$correct')";
// Es folgt Deine Datenbankverbindung
// $query = mysql_query($sql);
echo $sql."<br>\n";
}
// Die Schleife führt in diesem Beispiel 4 Verbindungen durch
?>
INSERT INTO deinetabelle (answer,correct) VALUES ('Der Ball ist rund!','1')
INSERT INTO deinetabelle (answer,correct) VALUES ('Der Ball ist flach!','0')
INSERT INTO deinetabelle (answer,correct) VALUES ('Der Ball ist platt!','0')
INSERT INTO deinetabelle (answer,correct) VALUES ('Der Ball ist weg!','0')Copy for free - Yet another page for free software with soures:- BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
- W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
- AppStarter (Somewhat like PortableApps launcher)
- QuakeConsole (Show/Hide windows console with your tilde key)
- BetterFileRenamer (Simple file renamer that adds date and version)
-
Ich hab deine Änderung nun ebefalls vorgenommmen - geändert hat sich dadurch allerdings nichts

Es wird immer nur im ersten Datensatz der Wert für correct auf "1" gesetzt. Alle weiteren haben immer den Wert "0".
Noch eine Idee?
-
01.12.05 23:50 #11
- Registriert seit
- Dec 2001
- Ort
- Hannover
- Beiträge
- 4.234
Ja, habe noch eine Idee. Da natürlich (woran ich hornochse nicht gedacht habe) nur eine Checkbox übertragen wird (also eine 1), gibt das correct array nur einen unterpunkt. Alle anderen bleiben leer.
Sprich: Der erste treffer ist immer 1 (egal was man auswählt) und alle anderen werden 0
Sorry... Ich ändere es fix und editiere diesen Post hier
EDIT:
formular.html
proc.phpHTML-Code:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title></title> </head> <body> <form method="post" action="proc.php" name="asdf"> <table> <tr> <td><strong>Antwort 1:</strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40"> <input type="radio" name="correct[]" value="1" id="correct[]"></td> </tr> <tr> <td><strong>Antwort 2:</strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40"> <input type="radio" name="correct[]" value="2" id="correct[]"></td> </tr> <tr> <td><strong>Antwort 3:</strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40"> <input type="radio" name="correct[]" value="3" id="correct[]"></td> </tr> <tr> <td><strong>Antwort 4:</strong></td> <td><input name="answer[]" type="text" class="forminput" id="answer[]" size="40"> <input type="radio" name="correct[]" value="4" id="correct[]"></td> </tr> </table> <input name="send" value="Abschicken" type="submit"> </form> </body> </html>
Erläuterung:PHP-Code:<?php
// Nimm die POST Daten in Empfang und schreibe sie in ein Array
$arr_values['answer'] = $_POST['answer'];
$correct_num = $_POST['correct'][0];
// Alle Werte stehen nun in einem Array bereit
//ersetzte durch deine Configdatei etc.
// include("mysqlconnect.php");
// nun bilden wir eine kleine schleife
for($i=0;$i<count($arr_values['answer']);$i++){
$answer = $arr_values['answer'][$i];
if ($i == $correct_num-1){$correct = 1;}else{$correct = 0;}
// bilde SQL-Befehl
$sql = "INSERT INTO deinetabelle (answer,correct) VALUES ('$answer','$correct')";
// Es folgt Deine Datenbankverbindung
// $query = mysql_query($sql);
echo $sql."<br>\n";
}
// Die Schleife führt in diesem Beispiel 4 Verbindungen durch
?>
Da die Checkboxen nur eine Datenfragment versenden, wird das Array "correct" nur mit einem Wert 1 gefüllt, der an position »0« sitzt. Weitere Werte werden nicht gefüllt (was natürlich der sinn der checkbox ist). Daher habe ich einfach jede Checkbox mit einem Wert gefüllt der eindeutig ist: nämlich der Position 1-4. So wird zwar nur ein Datenfragment übertragen, aber das enthält die Zahl 1 - 4 (was 0-3 entspricht), womit wir feststellen können welche Antwort die 1 in die Datenbank bekommt und welche die 0.
So funktioniert es, habe es diesmal auch überprüft. Sorry nochmal, das hätten wir uns sparen können
Geändert von Neurodeamon (02.12.05 um 00:06 Uhr)
Copy for free - Yet another page for free software with soures:- BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
- W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
- AppStarter (Somewhat like PortableApps launcher)
- QuakeConsole (Show/Hide windows console with your tilde key)
- BetterFileRenamer (Simple file renamer that adds date and version)
-
Super!
Dank dir!
Manchmal liegt die Lösung vor einem und man findet sie trotzdem nicht...
Da kann ich ja jetzt beruhigt schlafen gehen
-
02.12.05 01:21 #13
- Registriert seit
- Dec 2001
- Ort
- Hannover
- Beiträge
- 4.234
Gern geschehen
Copy for free - Yet another page for free software with soures:- BitUnlocker (Automatic unlock multiple Bitlocker secured drives - if you use the same password)
- W7 ScrollZoom (Use Windows 7 zoom tool through your mouse wheel)
- AppStarter (Somewhat like PortableApps launcher)
- QuakeConsole (Show/Hide windows console with your tilde key)
- BetterFileRenamer (Simple file renamer that adds date and version)
Ähnliche Themen
-
SQL Abfrage: Feldname und gleichzeitig Anzahl gefüllter Felder ausgeben
Von teefit im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 13.10.09, 14:59 -
Mehrere Checkboxes in DB eintragen
Von louS im Forum PHPAntworten: 1Letzter Beitrag: 09.10.09, 15:31 -
Mehrere Datensätze eintragen
Von 22hase im Forum PHPAntworten: 3Letzter Beitrag: 22.12.08, 14:32 -
[mySQL] mehrere Formulardaten gleichzeitig eintragen
Von piano im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 26.04.08, 07:48 -
Formular 2x value eintragen ?
Von starfoxfs im Forum PHPAntworten: 5Letzter Beitrag: 01.12.04, 02:17





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren