2012-11-02 38 views
0

我在複選框中遇到問題。我正在做的是顯示一個複選框列表,如果以前檢查他們會顯示覆選標記,然後您提交他們,另一個PHP應該識別哪些被檢查,哪些不是。我的腳本適用於以前未選中的框,如果您檢查它們的動作php可以識別它,但對於已經檢查過的框,我會得到通知 - 未定義變量 - 對於框(即使未選中/再次檢查)。我似乎無法找到解決辦法。默認選中的複選框在php中未定義

我的代碼是

$ind=0; //counting variable 
//generating checkboxes from an xml 
foreach($xml as $checkbox) 

{  
    $checks=$xml->checkbox[$ind]->active; //the active tag has a 0 or 1 stored. 

echo "Activate ".$ind; // shows activate 0, activate 1, etc... 

echo "<form name='checkb' action='show.php' method='post'> 
    echo "<input type='checkbox' name='checks[]' class='act' value='".$ind."'"; 
    if($checks==0){ echo ">";} else{echo " checked ='checked'>";} 
    echo "<input type='hidden' name='ind' value=".$ind.">"; 
$ind=$ind+1; 
echo "<input type='submit' name='sub' value='Submit'/> </form>"; } 

在我的行動PHP我有

$chks = $_POST['checks']; 
$N = count($chks); 
echo("Active checkboxes "); 
for($i=0; $i < $N; $i++) 
{ 
     echo($chks[$i] . " ");} 

這一切運作良好,直到我決定,如果箱子已經被先前檢查顯示。所以我想問題是,爲什麼不會將php認出checked = checked爲真實值?或者還有其他方法可以做到這一點嗎? 謝謝!

+0

缺少XML。從你所描述的它只是不在那裏。 – hakre

+0

你確實意識到這個代碼循環遍歷每個複選框,每次創建一個具有相同名稱的新表單。你有沒有試過看看生成的HTML? – jjs9534

+0

@hakre,我沒有包括XML,沒想到這是必要的,因爲代碼的那部分似乎工作,也許我應該包括它? – biobio

回答

0

似乎很多問題在這裏。

  • 你爲什麼要爲每個複選框輸出一個表單?
  • 你在哪裏提交表格?
  • 您需要的checked='checked'前面的空間,你回聲出來 - echo " checked='checked'>"
  • 如果移動形式輸出圈外的,您需要將您的增加值增加了隱藏的輸入名稱屬性以及(或者使一個數組一樣checks,否則你會 只得到一個字段的值。
+0

謝謝,我剛剛添加了提交部分並添加了空格。我輸出各種形式的原因是因爲每個表單都包含更多信息,並且我希望動作php返回特定於該表單的增量編號。我決定不顯示所有表單代碼來簡化問題(因爲一切正常,直到我添加了checked = checked部分)。 – biobio

+0

我剛剛意識到我已經錯誤地複製了我的代碼,

以外的foreach,不在裏面!謝謝 – biobio

0

我試圖嘗試清理了一點。

$ind = 0; 
echo "<form name='checkb' action='show.php' method='post'>"; 
foreach($xml as $checkbox){ 
    echo "Activate $ind"; 
    echo "<input type='checkbox' name='checks[]' class='act' value='$ind' ".(($checks == 0) ? " />" : " checked='checked' />"; 
    echo "<input type='hidden' name='ind_$ind' value='$ind' />"; 
    $ind++ 
} 
echo "</form>"; 

通知,像邁克說在此之前checked ='checked'之前有空格,以便組件之間有分離。另外,你的隱藏元素都有相同的名稱,所以我添加了$ ind量詞。

希望這會有所幫助。

+0

謝謝。進行了更改,但仍未定義... – biobio