0

チェックボックスに問題があります。私がやっていることは、チェックボックスのリストを表示することです。以前にチェックした場合はチェックマークが表示され、それらを送信すると、別のphpがチェックされたものとされていないものを認識する必要があります。私のスクリプトは、以前にチェックされていなかったボックスをチェックすると正常に動作します.アクションPHPはそれを認識しますが、すでにチェックされているボックスの場合は、ボックスのNotice - undefined variable -を取得します(チェックを外したり、再度チェックしたりしても)。私は本当にこれを回避する方法を見つけることができないようです。

私のコードは

$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 を真の値として認識しないのはなぜですか? または、これを行う他の方法はありますか?ありがとう!

4

2 に答える 2

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数量詞を追加しました。

お役に立てれば。

于 2012-11-02T19:36:43.420 に答える
0

ここには多くの問題があるようです。

  • チェックボックスごとにフォームを出力するのはなぜですか?
  • フォームの送信先はどこですか?
  • checked='checked'エコーアウトする場所の前にスペースが必要です-echo " checked='checked'>"
  • フォーム出力をループの外に移動する場合は、インクリメントされた値を非表示の入力名プロパティにも追加する必要があります (または、のような配列checksにします。そうしないと、フィールドの値が 1 つしか取得されません。
于 2012-11-02T19:26:06.630 に答える