所以我试图为一个线程的每个条目组合一个投票系统。每个条目都有一组单选按钮(1,2,3),提交按钮位于底部。我希望人们投票,以确保他们为每个条目选择三个单选按钮之一。我以为我的代码工作正常,但事实并非如此。最后一个条目,如果它被选中,而所有其他条目都没有,它仍然说它很好。但是,如果我不选择最后一个条目,它就会起作用。
<form action="vote.php" method="POST" name="form1">
<? $sql = "SELECT * FROM contest_entries WHERE contest_id='$contest_id' ORDER BY id desc";
$result = mysql_query($sql) or trigger_error("SQL", E_USER_ERROR);
while ($list = mysql_fetch_assoc($result)) { $username=$list['username'];
$date=$list['date_entered'];
$pl_holder=$list['place_holder1'];
$contest_entry_id=$list['id'];
echo "1<input name='attending[$contest_entry_id]' type='radio' value='1'>
2<input name='attending[$contest_entry_id]' type='radio' value='2'>
3 <input name='attending[$contest_entry_id]' type='radio' value='3'> />";
}?>
<input type="submit" name="submit2" id="submit" value="Submit" />
然后在点击提交后点击我的vote.php页面:
foreach($_POST['contest_entry_id'] as $key => $something) {
$example = $_POST['attending'][$key];
} if (!isset($example)) {
echo "You need to vote for all entries";
exit();
}else{
echo "success!";
}
除最后一个条目外,如果最后一个条目被选中而其他条目不被选中,它仍然认为所有条目都已被选中
答案 0 :(得分:1)
简单的解决方案:
...
echo '<input type="hidden" name="' . attending[$contest_entry_id] . '" value="0">
1<input type="radio" name="' . attending[$contest_entry_id] . '" value="1">
2<input type="radio" name="' . attending[$contest_entry_id] . '" value="2">
3<input type="radio" name="' . attending[$contest_entry_id] . '" value="3">';
...
vote.php
foreach ($_POST['attending'] as $id => $value) {
if ($value == 0) {
echo 'You need to vote for all entries';
exit;
}
}
echo "success!";
顺便说一句:如果您希望它们不存在,请不要为变量赋值(如$ example) - 直接使用isset($ _ POST [...])
检查它们答案 1 :(得分:0)
foreach($_POST['contest_entry_id'] as $key => $something) {
$example = $_POST['attending'][$key];
这应该如何运作?您的广播组的名称为attending[contest-id]
- 因此$_POST['contenst_entry_id']
未定义 - 是吗?
你的if / else条件应该在foreach
- 循环括号内。
从那里我无法告诉你任何事情 - 请发布错误或打印global
$_POST
,然后再进行迭代,以查看var_dump()
或print_r()
内部的内容。< / p>