Kom ihåg mig?
Home Menu

Menu


Fråga, flera svar, POST och MySQL

 
Ämnesverktyg Visningsalternativ
Oläst 2008-11-19, 15:13 #1
msjoedins avatar
msjoedin msjoedin är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 108
msjoedin msjoedin är inte uppkopplad
Medlem
msjoedins avatar
 
Reg.datum: May 2006
Inlägg: 108
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
msjoedin är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 15:19 #2
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
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
Syke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 15:23 #3
msjoedins avatar
msjoedin msjoedin är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 108
msjoedin msjoedin är inte uppkopplad
Medlem
msjoedins avatar
 
Reg.datum: May 2006
Inlägg: 108
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..
msjoedin är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 16:05 #4
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
döp inte fälten till endast ID utan ta med typ answer_xx.
allstars är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 16:07 #5
msjoedins avatar
msjoedin msjoedin är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 108
msjoedin msjoedin är inte uppkopplad
Medlem
msjoedins avatar
 
Reg.datum: May 2006
Inlägg: 108
Citat:
Originally posted by allstars@Nov 19 2008, 17:05
döp inte fälten till endast ID utan ta med typ answer_xx.
Javisst. Det var min idé också... men hur gör jag sedan för att extrahera answer_xx så att jag enbart får xx. Dvs. göra typ substr på själva $_POST variabelnamnet..
msjoedin är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 16:08 #6
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
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
Syke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 16:18 #7
msjoedins avatar
msjoedin msjoedin är inte uppkopplad
Medlem
 
Reg.datum: May 2006
Inlägg: 108
msjoedin msjoedin är inte uppkopplad
Medlem
msjoedins avatar
 
Reg.datum: May 2006
Inlägg: 108
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.
msjoedin är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 16:48 #8
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
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?
Syke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 17:04 #9
mbomelin mbomelin är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 248
mbomelin mbomelin är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 248
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;
}
}
mbomelin är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-19, 17:05 #10
mbomelin mbomelin är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 248
mbomelin mbomelin är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 248
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
mbomelin är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 21:30.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017