Avatar billede michaeltryl Seniormester
12. oktober 2006 - 22:20 Der er 20 kommentarer og
1 løsning

hente data fra formular som er lavet med php

jeg er ved at lave et konkurrence system hvor jeg kan tilføje x antal spørgsmål med x antal svar muligheder

alle spørgsmål listes op og med svar mulighederne under hvert spørgsmål sådan
echo"<input type='radio' name='$parent' value='$svar' checked>$svar<br>";

dette betyder at der laves x antal radio knapper op siden og når der så trykkes på send er ACTION i formularen sat til at gå til test.php, men hvordan tjekker jeg for hvad der er markeret i alle radioknapperne?

det er lidt svært at forklare men håber en forstå ellers så spørg
Avatar billede jaw Nybegynder
13. oktober 2006 - 00:03 #1
Har du dem liggende i et array? Det ville nok være det nemmeste, og så noget foreach tror jeg.

Ellers forstår jeg ikke spørgsmålet. Hvor kommer $parent og $svar fra?
Avatar billede michaeltryl Seniormester
13. oktober 2006 - 10:37 #2
jeg er ikke inde i array og $parent og $hentes ud af databasen.
du kan se hele koden her
http://www.magiske-michael.dk/prove/konkurrence.htm

derudover har jeg problemer med at placere denne stump kode
det skal ´stå på siden hvis der $Id er tomt

else
{
echo"<h2>Du har ikke valgt nogen konkurrence. Se alle konkurrencer <a href='konkurrencer.php'>her</a></h2>";
}
Avatar billede michaeltryl Seniormester
18. oktober 2006 - 18:14 #3
har du en mulig løsning?
Avatar billede jaw Nybegynder
18. oktober 2006 - 20:14 #4
Hov undskyld, havde helt glemt den her.

Men hvis du ved alle navne og alle værdier, så er det jo bare at tjekke om hver navn har den givne værdi. Har den det, så er den jo markeret af brugeren.
Avatar billede michaeltryl Seniormester
18. oktober 2006 - 21:00 #5
jeg er ikke helt med på hvad du mener, kan du forklare lidt nærmere?
Avatar billede jaw Nybegynder
18. oktober 2006 - 21:05 #6
Ja, en tilfældig radiobutton:

<input type='radio' name='test' value='aa'>

Tjek om den er sat:
if(isset($_POST['test']) && $_POST['test'] == "aa") {
  ...
}
Avatar billede michaeltryl Seniormester
18. oktober 2006 - 21:40 #7
ja så langt er jeg med, men eftersom formularen laves med php hvordan tjekker jeg så om X antal radio buttons er sat
Avatar billede jaw Nybegynder
18. oktober 2006 - 21:43 #8
Hvis du kan lave et databaseudtræk til at lave dine radiobuttons med, kan du vel bruge det samme udtræk til at afgøre om de er sat?
Avatar billede michaeltryl Seniormester
18. oktober 2006 - 21:54 #9
dette udtræk laver formularen:

$svar1 = mysql_query("SELECT * FROM konku_spg_svar WHERE parent=$spgid") or die(mysql_error());
while ( $c = mysql_fetch_array($svar1))
{
$svar = $c[spg_svar];
$parent = $c[parent];

echo"<form name='konku' method='POST' ACTION='$side/konkurrence/test.php?id=$id'>";
echo"<input type='radio' name='$parent' value='$svar' checked>$svar<br>";

}

hvordan vil du så lave det samme udtræk og tjekke om de er sat?
Avatar billede jaw Nybegynder
18. oktober 2006 - 22:00 #10
Du skal lige flytte din <form> udenfor din while-løkke. Ellers går der rod i det.

Men så vil jeg på den test.php side, lave noget a'la:

$svar1 = mysql_query("SELECT * FROM konku_spg_svar WHERE parent=$spgid") or die(mysql_error());
while ( $c = mysql_fetch_array($svar1))
{
  $svar = $c[spg_svar];
  $parent = $c[parent];
  if(isset($_POST[$parent]) && $_POST[$parent] == $svar) {
    echo "Besvaret/markeret<br />";
  } else {
    echo "Ikke besvaret/ikke markeret<br />";
  }
}
Avatar billede michaeltryl Seniormester
18. oktober 2006 - 22:35 #11
det var smart og det virker.
i min database er alle korrekte svar markeret med et 1 tal og forkerte er markeret med 0
så jeg skal egentlig bare har lagt alle tal sammen når formularen er udfyldt og på den måde kan man se hvor mange korrekte svar der er er.
er der en smart måde til at gøre dette?
jeg vil tro det er disse to linie der skal laves noget udregning i istedet
echo "Besvaret/markeret<br />";
echo "Ikke besvaret/ikke markeret<br />";
Avatar billede jaw Nybegynder
18. oktober 2006 - 22:39 #12
Tjah, vel noget i stil med:

$correctAnswers = 0;
$svar1 = mysql_query("SELECT * FROM konku_spg_svar WHERE parent=$spgid") or die(mysql_error());
while ( $c = mysql_fetch_array($svar1))
{
  $svar = $c[spg_svar];
  $parent = $c[parent];
  if(isset($_POST[$parent]) && $_POST[$parent] == $svar) {
    $correctAnswers++;  //rigtigt svar
  } else {
    //forkert svar
  }
}

echo "Du havde: ".$correctAnswers." korrekte svar.";
Avatar billede michaeltryl Seniormester
18. oktober 2006 - 22:55 #13
ikke helt jeg glemte at skrive at tallene 1 og 0 er gemt i feltet "korrekt" i databsen jeg har indsta variablen korrekt, men kan ikke regne ud hvor den skal ind i din kode

$correctAnswers = 0;
$svar1 = mysql_query("SELECT * FROM konku_spg_svar WHERE parent=$spgid") or die(mysql_error());
while ( $c = mysql_fetch_array($svar1))
{
  $svar = $c[spg_svar];
  $parent = $c[parent];
  $korrekt = $c[korrekt];

  if(isset($_POST[$parent]) && $_POST[$parent] == $svar) {
    $correctAnswers++;  //rigtigt svar
  } else {
    //forkert svar
  }
}

echo "Du havde: ".$correctAnswers." korrekte svar.";
Avatar billede jaw Nybegynder
18. oktober 2006 - 23:02 #14
Så skal det vel være:
if(isset($_POST[$parent]) && $_POST[$parent] == $svar && $korrekt == 1) {

?
Avatar billede michaeltryl Seniormester
18. oktober 2006 - 23:19 #15
nej det virker ikke.
hvis der er to spørgsmål eller flere skriver den du "havde 1 korrekt svar" hvis der svares rigtig på det sidst udskrevne spørgsmål, men svare man forkert på det og rigtigt på et eller begge de andre skriver den "havde 0 korrekt svar"
indsætter jeg  echo "$svar<br>"; lige efter if sætningen udskriver den fint de rigtige svar hvis det er det der er svaret
hele min test.php ser lige nu sådan ud.

<?
include"../connect.php";

$id = $_GET[id];

$spg1 = mysql_query("SELECT * FROM konku_spg_svar WHERE konkuid = $id AND parent = 0") or die(mysql_error());
while ( $b = mysql_fetch_array($spg1))
{
$spgid = $b[spg_svarid];
$spg = $b[spg_svar];

$correctAnswers = 0;
$svar1 = mysql_query("SELECT * FROM konku_spg_svar WHERE parent=$spgid") or die(mysql_error());
while ( $c = mysql_fetch_array($svar1))
{
  $svar = $c[spg_svar];
  $parent = $c[parent];
  $korrekt = $c[korrekt];

if(isset($_POST[$parent]) && $_POST[$parent] == $svar && $korrekt == '1') {
    $correctAnswers++;  //rigtigt svar
  } else {
    //forkert svar
  }
}}

echo "Du havde: ".$correctAnswers." korrekte svar.";?>
Avatar billede jaw Nybegynder
18. oktober 2006 - 23:36 #16
Nu synes jeg også at du har kastet et ekstra udtræk på. Jeg har lidt svært ved at følge med nu. Kan du ikke give et eksempelt på et spørgsmål der er i radiobuttons og hvilke felter i databasen der hører til det spørgsmål?
Avatar billede michaeltryl Seniormester
19. oktober 2006 - 09:56 #17
grunden til det ekstra udtræk er at jeg skal have $spgid et sted fra og eftersom jeg sender id med formularen over på test.php kan jeg ved det ekstra udtræk hente $spgid ud
radiobutten er her under vist med -
hvad farve er en agurk?
- sort
- grøn
- blå

i databasen står de sådan
spg_svarid | konkuid | spg_svar | korrekt | parent
----------------------------------------------
      4 | 1 hvad farve er en agurk | 2 | 0
      5 | 1 sort | 0 | 4
      6 | 1 grøn | 1 | 4
      7 | 1 blå  | 0 | 4
Avatar billede michaeltryl Seniormester
19. oktober 2006 - 09:57 #18
glemte lige nogen | den står sådan i databasen
spg_svarid | konkuid | spg_svar | korrekt | parent
----------------------------------------------
      4 | 1 | hvad farve er en agurk | 2 | 0
      5 | 1 | sort | 0 | 4
      6 | 1 | grøn | 1 | 4
      7 | 1 | blå  | 0 | 4
Avatar billede jaw Nybegynder
19. oktober 2006 - 11:55 #19
Måske det bare skyldes, at du nu nulstiller vores $correctAnswers hver gang du tjekker et nyt spørgsmål. Prøv at flytte det udenfor den første lykke også, altså den her:
$correctAnswers = 0;
Avatar billede michaeltryl Seniormester
19. oktober 2006 - 12:43 #20
yes så virker det, tak for hjælpen. Smid et svar så får du point
Avatar billede jaw Nybegynder
19. oktober 2006 - 12:44 #21
Super :) Selv tak...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB