문제

so I have this problem. When I select a radio button of question one for example it selects the radio button. But when I select another radio button from a different question, the first radio button that I've selected isn't selected anymore and the other radio button is selected. I've tried searching for a solution,but I can't find any. It's for a school project, we have to make a poll. Here's the code:

<?php

mysql_connect("  ", "    ", "   ");
mysql_select_db("  ") or die(mysql_error());

if(isset($_POST['verzenden'])) {
$query="UPDATE optie SET stemmen = stemmen + 1 WHERE id='" . $_POST['item']. "'";
}
if(mysql_query($query)){
echo"Stem opgeslagen! <br /><br/>";
} else {
echo"Fout tijdens opslaan stem!<br /><br/>";
}

$result = mysql_query("SELECT * FROM poll");

while($data = mysql_fetch_assoc($result)){

echo"<b>" . $data['vraag'] . "</b><br/><br />";

echo"<form method='post' action=''>";
echo "<fieldset>";

$result2 = mysql_query("SELECT * FROM optie WHERE poll ='" . $data['id'] . "'");
while($data2 = mysql_fetch_assoc($result2)){
echo"<input type='radio' name='item' value='" . $data2['id'] . "'/>" . $data2['optie'] . "<br />";
}
echo"<br/>";
echo"</fieldset>";
}
?>
<input type='submit' name='verzenden' value='Verzenden'>
</form>

<a href="checkbox.php">Ga verder</a>

I hope that someone can help me. bye, Catherine

도움이 되었습니까?

해결책

That's happening because all of your radio button sets have the same name: item. Here are a couple ways you can make the radio button sets unique; pick the one that's best for you.

  1. Append the poll.id value to each button name:

    $result2 = mysql_query("SELECT * FROM optie WHERE poll ='" . $data['id'] . "'");
    while($data2 = mysql_fetch_assoc($result2)){
      echo"<input type='radio' name='item_" . $data['id'] . "' value='" . $data2['id'] . "'/>" . $data2['optie'] . "<br />";
    }
    
  2. Append a sequence number to each button name:

    $result2 = mysql_query("SELECT * FROM optie WHERE poll ='" . $data['id'] . "'");
    $buttonNumber = 0;
    while($data2 = mysql_fetch_assoc($result2)){
      ++$buttonNumber;
      echo"<input type='radio' name='item_$buttonNumber' value='" . $data2['id'] . "'/>" . $data2['optie'] . "<br />";
    }
    

Finally, note that the mysql_query family of functions is deprecated because it can leave you vulnerable to SQL Injection attacks. See here and other places for information about using mysqli or PDO instead.

다른 팁

You should use different name for each set of radio buttons,

Change your radio button to something like below ,

echo"<input type='radio' name='item_". $data2['id'] ."' value='" . $data2['id'] . "'/>

this may work.

It seems below lines should be before first while loop

echo"<form method='post' action=''>";
echo "<fieldset>";
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top