FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
Hej!
Jag håller på med ett projekt där det bland annat skall finnas frågor med svar. Jag vill att en av dessa n antal frågor skall vara rätt. Nu så har jag delat upp det i två tabeller, en med frågor och en med svar. I normalfallet så har en fråga tre svar varav ett är korrekt. I tabellen med frågorna finns en kolumn med ref. till det id i svarstabellen som är rätt. Det jag nu kört fast på som jag inte vet hur jag skall lösa är att jag har ett <form> där jag har frågan och alla svar. Det finns även en ruta för att markera vilket svar som är rätt. Dilemmat är hur jag uppdaterar rätt svar. Det finns ett id-nummer på frågan och ett id-nummer på svaren. Hur skall jag kunna skicka svars-id'n till svars-tabellen och vice versa? Kan man i PHP på något sätt göra substr() eller liknanade på själva variabelnamnet? Ex. om man skickar med svar43, svar, 44 och svar45 samtidigt som fraga44. Någon som har en idé? / Mats |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Fungerar det inte om du har flera radiobuttons med samma name, fast olika values? Då kan man bara välja ett svar, och det POST-värdet kommer att vara t.ex. $_POST['svar'] = 43 om den första radioknappen är vald.
För mer info, se: http://www.w3.org/TR/html401/interact/forms.html#radio (kolla även checkboxes, där står om hur de beter sig) samt http://www.w3.org/TR/html401/interac...l#control-name |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Medlem
|
Jo det funkar nog... men problemet är hur jag skall i samma POST uppdatera svaren. Så att jag inte av misstag uppdaterar en fråga som har samma id som ett svar.
$_POST['43'] = "Vad heter Sveriges huvudstad?"; $_POST['svar'] = "152"; $_POST['151'] = "Göteborg"; $_POST['152'] = "Stockholm"; $_POST['153'] = "Malmö"; Hur ska jag göra för att de tre senaste skall uppdatera svarstabellen och inte frågetabellen.. |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
döp inte fälten till endast ID utan ta med typ answer_xx.
|
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Medlem
|
Citat:
|
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Förlåt, men jag hänger verkligen inte med. En $_POST i sig kan inte göra något med databasen, utan det är ju databasfrågan som gör det. Vill du uppdatera svarstabellen skriver du den i queryn. Såvida du inte kör något framework som automatiskt uppdaterar databasen utefter vad variablerna i POST'en heter? Och skapar formuläret utefter hur databasen ser ut?
Edit: Det kanske är jag som är trött och virrig ... förlåt mig i så fall ![]() |
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Medlem
|
Jag har alltså ett formulär <form> som innehåller en ruta för frågan.. och x antal rutor för svaren plus en möjlighet att markera vilket av svaren som är rätt. Sedan har jag två tabeller. En med frågor och en med svar. Detta för att jag skall kunna ha x antal svar till varje fråga. I frågetabellen finns sedan en kolumn som innehåller id på det svar som är korrekt till den frågan.
Så i formuläret har jag ett id på frågan.. som jag sedan i update.php gör "UPDATE questions SET question = "Vad heter..?" WHERE id = 52" tex. Sedan har jag då ett antal svarsalternativ som jag också benämner med siffror. Frågan är alltså hur jag kan skilja på frågans id och svarens id när jag skall uppdatera de olika tabellerna. Säg tex. att jag har ett svar som också har id = 52. |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
Ok, en eller två sista frågor innan jag är med
![]() Finns redan alla frågor och svar, och sidan är till för att folk ska gissa rätt svar? Varför har du då det rätta svaret i formuläret? Det är här det blir snurrigt för mig.. Eller är det så att sidan är till för att skapa frågor och spara i databasen? Men du verkar redan ha alla frågor och id? eller är det till för att editera alla frågor och svar? |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
Alltså om du har tre radioknappar med samma name så kommer ju bara det valda värdet att POSTas.
typ <input type=radio name="question_152" value="12"> Ja <input type=radio name="question_152" value="17"> Nej <input type=radio name="question_152" value="32"> Kanske Har man då valt "Kanske" så blir $_POST['question_152'] 32 foreach ($_POST as $key=>$val) { if (preg_match("/^question\_(\d+)$/", $key, $matches)) { echo 'SVAR PÅ FRÅGA '.$matches[1].' ÄR '.$val; } } |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Medlem
|
Sedan kollar du vilket svar som är rätt för fråga x och om det svaret som postats är det rätta. Ha inte med rätt svar i formuläret för då kan man ju fuska
![]() |
||
![]() |
![]() |
Svara |
|
|