2012-03-24 11 views
4

私はチェックボックスをチェックしたら、データベースに値を挿入する必要があります。チェックボックスをオフにすると、データベースからデータを削除する必要があります。チェックボックスからチェックされていない値を取得する方法は?

私がチェックボックスに値を割り当てる場合、私はチェックされたチェックボックスの値だけを得ることができます。 私は隠しフィールドを使用している場合、私はチェックボックスのすべての値を取得することができますが、私は1をチェックし、どの1はチェックを外します。

誰でも手助けできますか?チェックボックスのための

$num="3"; 
    for($i=1;$i<10;$i++){ 
    ?> 
    <form name="form1" method="post" action="testcheckbox.php"> 
     <input type="hidden" name="task" value="validatesn"> 
     <input type="hidden" name="validate[]" value="<?php echo $i;?>"> 
     <input type="checkbox" name="validate[]" <?php if($num==$i){ echo "checked=checked";} ?> />Serialno<?php echo $i."<br/>"; ?> 
    <?php 
     $i++; 
    } 
    ?> 
     <input type="submit" name="submit" value="Validate" /> 
    </form> 

    <?php 
    if($_REQUEST['task'] == 'validatesn'){ 
     $valid=$_POST['validate']; 
     foreach($valid as $v){ 
      echo $v; //show all checkbox values 
      //if checkbox= checked then insert value into database 
      //if untick the checked checkbox then delete data from database 
    } 
    } 
?> 
+0

誰かがチェックボックスをクリックするたびに、本当にDBに書き込む必要がありますか? – Castilho

+0

@Castilho彼らはそうではありません。クエリはフォームが送信された後にのみ発生します。 – octern

答えて

6

マークアップはそうのようになります。

<input type="checkbox" value="myvalue" name="validate[]"> 

フォームを投稿するとき、あなたは配列が$_POSTvalidateと呼ばれる表示されます。

その配列が空の場合、チェックボックスはチェックされませんでした。その配列に "myvalue"が含まれている場合、チェックボックスがチェックされています。

あなたは、このような複数のチェックボックスを扱っている場合:

<input type="checkbox" value="myvalue1" name="validate[]"> 
<input type="checkbox" value="myvalue2" name="validate[]"> 

スクリプトは$_POSTvalidate配列がmyvalue1myvalue2の値を含めることができることを知っておく必要があります。次に、$_POST['validate']を調べ、その値が配列に存在する場合は、そのチェックボックスがチェックされています。 array_diff()を使うと、ループを書くことなく簡単にこれを行うことができます。

2

私が最初に同じ名前と、チェックボックスがオフになっている時に送信する値を持つ非表示の入力を導入することから成る、blog溶液(セマンティックが、動作していない)、これを見つけた:

<input type="hidden" name="box1" value="0" /> 
<input type="checkbox" name="box1" value="1" /> 

いくつかの欠点があります。特に、複数のチェックボックスを配列として送信する場合は、一般的なシナリオではそのトリックを行います。

1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form name="chk" action="" method="post"> 
<?php $num=2; 
for($q=0; $num>$q; $q++) 
{ 
?> 
<input type="text" name="fruits[<?php echo $q; ?>][a]" > 
<input type="text" name="fruits[<?php echo $q; ?>][b]"> 
<input type="text" name="fruits[<?php echo $q; ?>][c]"> 
<input type="hidden" name="fruits[<?php echo $q; ?>][d]" value="0" /> 
<input type="checkbox" name="fruits[<?php echo $q; ?>][d]" value="1" /> 
<input type="hidden" name="fruits[<?php echo $q; ?>][e]" value="0" /> 
<input type="checkbox" name="fruits[<?php echo $q; ?>][e]" value="1" /> 
<br /> 
<?php 
} 
?> 
<input type="submit" name="ok" value="ok" /> 
</form> 
<?php 


if(isset($_POST['ok'])) 
{ 

foreach($_POST['fruits'] as $company=>$row){ 

    foreach($row as $fruit){ 

       echo $fruit; 

    } 
} 
} 
?> 
</body> 
</html> 
+0

s.Gnanasekar vilangulathur – user1900387

関連する問題