2013-05-19 42 views
0

所以我試圖把一個投票系統對線程的每個條目。每個條目都有一組單選按鈕(1,2,3),提交按鈕位於底部。我希望投票的人們確保他們爲每個條目選擇三個單選按鈕中的一個。我認爲我的代碼正在工作,但事實並非如此。最後一個條目如果被選中,而其他所有條目都不是,它仍然會說它很好。但是,如果我不選擇它正在工作的最後一個條目。如何確保至少有一個單選按鈕每組中選擇,PHP

<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!"; 
} 

它的工作原理除了最後一項,如果選擇了最後一個條目,其它的是不是仍認爲所有條目已被選中

回答

1
  1. 您應該在無線電選項之前添加具有相同名稱的隱藏值,或者再次查詢數據庫中的ID以便通過所有選項進行適當的迭代。
  2. 檢查是否每一個基團不是foreach循環內0/isset()函數不同。

簡單的解決方案:

... 
    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!"; 

BTW:不分配,如果你希望他們不存在值變量(如$例子) - 直接與isset檢查它們($ _ POST [...])

+0

非常感謝,它工作! –

0
foreach($_POST['contest_entry_id'] as $key => $something) { 
     $example = $_POST['attending'][$key]; 

這應該如何工作?您的收音機組名稱爲attending[contest-id] - 因此$_POST['contenst_entry_id']未定義 - 是嗎?

你的if/else條件應該是foreach -loop括號內。

Appart酒店從我不能告訴你任何東西 - 請張貼錯誤或做打印global$_POST迭代前,看裏面有什麼用var_dump()print_r()

+0

沒有它的命名參加[contest_entry_id。它必須是一個不同的名稱,否則如果我爲一個條目選擇一個單選按鈕,然後嘗試爲另一個組選擇另一個單選按鈕,則它只會選擇一個,而不允許所有條目都有自己的選擇。 –

+0

好,但這是/不是在代碼sniplet ...但你的if/else部分應該在foreach循環 –

+0

好吧,現在看起來像這樣: foreach($ _ POST ['contest_entry_id'] as $ key => $ something){ $ example = $ _POST ['參加'] [$ key]; 如果(!isset($例子)){ 回聲 「你需要把票投給所有條目」; exit(); } else { echo「success!」; } } 靠近!除了現在如果只選擇最上面的一個條目它打印出: 「成功!您需要爲所有條目投票「 但是,如果我不選擇頂部條目並選擇其他條目,則它會正確打印: 」您需要爲所有條目投票。「 –

相關問題