Avatar billede hypofysen Nybegynder
11. marts 2009 - 16:58 Der er 6 kommentarer og
1 løsning

tjekke om radio button er checked hvordan?

hvordan tjekker jeg om alle felter er checked?

Her er min form:

<form action="formhandler.php?step=<?php echo $_GET['step'] ?>" method="post">

<tr>
<td width="200">Spørgsmål</td><td width="100" align="center">Super godt</td><td width="100" align="center">Godt</td><td width="100" align="center">Mindre godt</td><td width="100" align="center"    >Latterligt</td>
</tr>
<?php
$step = $_GET['step'];

$query = mysqli_query($GLOBALS['db'], "SELECT * FROM tblquestion WHERE category = '".$_GET['step']."'");
    while($result = mysqli_fetch_array($query)){

        echo "<tr>";
        echo     "<td>".$result['question']."</td>
               
                <td align=\"center\"><input type=\"radio\" name=\"".$result['id']."\" value=\"1\" /></td>
                <td align=\"center\"><input type=\"radio\" name=\"".$result['id']."\" value=\"2\" /></td>
                <td align=\"center\"><input type=\"radio\" name=\"".$result['id']."\" value=\"3\" /></td>
                <td align=\"center\"><input type=\"radio\" name=\"".$result['id']."\" value=\"4\" /></td>";
   
        echo "</tr>";
    };
?>
<tr height="50">
<td colspan="5" align="right"><input type="submit" name="submit" value="næste" /></td>
</tr>
</form>

og min action:

if(!isset($_SESSION['question']) && !is_array($_SESSION['question'])){
$_SESSION['question'] = array();
};

if(isset($_POST['submit'])){
    foreach($_POST as $id => $answer){

            $_SESSION['question'][$id] = $answer;
    };
};
Avatar billede jakobdo Ekspert
11. marts 2009 - 17:26 #1
Hvis du ved hvor mange radio buttons du har, kan du så ikke tjekke hvor mange af dem som netop er sat ?

Hvis du f.eks. retter:

name=\"".$result['id']."\"
til:

name=\"radio_answer[".$result['id']."]\"

Så kan du måske se noget ide i:

foreach($_POST['radio_answer'] AS $key => $val){
echo 'KEY : ' . $key . ' : Value : ' . $val . '<br />';
}
Avatar billede hypofysen Nybegynder
11. marts 2009 - 20:14 #2
lykkedes ikke, men brugte dette i stedet:

<script type="text/javascript">
function validate(form){
var errors = [];

if ( !checkRadioArray(form. <?php echo "svar".$result['id']; ?>) ) {
  errors[errors.length] = "Alle spørgsmål skal besvares";
}
if (errors.length > 0) {
  reportErrors(errors);
  return false;
}

return true;
}

function checkRadioArray(radioButtons){
for (var i=0; i < radioButtons.length; i++) {
  if (radioButtons[i].checked) {
  return true;
  }
}
return false;
}

function reportErrors(errors){
var msg = "";
var numError;
for (var i = 0; i<errors.length; i++) {
  numError = i + 1;
  msg += "\n" + numError + ". " + errors[i];
}
alert(msg);
}
</script>
Avatar billede olebole Juniormester
12. marts 2009 - 13:25 #3
<ole>

- men det sikrer jo ikke, at brugeren har checked en radio. Det kan du kun være sikker på, hvis du tjekker på serveren  ;o)

/mvh
</bole>
Avatar billede hypofysen Nybegynder
12. marts 2009 - 13:41 #4
Det tror jeg måske lige jeg er nød til at få forklaret..

lige nu kommer der jo en alertbox frem hvis ikke der er checked i felterne..

er det hvis javascript er slået fra du mener?
Avatar billede jakobdo Ekspert
12. marts 2009 - 17:36 #5
Ja, eller en person laver en "kopi" af din side, og sender det til serveren som håndtere svaret.
Avatar billede olebole Juniormester
14. marts 2009 - 22:53 #6
- eller, hvis brugeren ændrer dine scripts eller din form via JavaScript i adresselinjen:
    http://dengodekode.dk/bm_artikel.html

Validering med JS er kun til for brugerens mageligheds skyld ... det er der ingen sikkerhed i. Sikkerhed kan du kun håndtere på serveren
Avatar billede hypofysen Nybegynder
18. marts 2009 - 06:10 #7
Beklager den sene kommentar men så først indlæggene nu..!

Da jeg i dette tilfælde kun skulle bruge valideringen til at tjekke om radiobuttons var checked i et simpelt spørgeskema, er valideringen vel ok, men tak for linket ole virkeligt brugbart :)
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