2011-06-29 6 views
2

私はチェックボックスとPHPの作業に助けが必要です。私はちょうどチェックボックスがPHPでチェックされるかどうかの値を決定しようとしています。ヘルプPHPとHTMLのチェックボックス

例:チェックボックスがオンになっていなかった場合は、それに対応する変数は、リクエストに表示されません

<?php 
$ch1 = isset($_REQUEST['ch1']); 

<?php 
include ("inc/conf.php"); 
$id = $_SESSION['id']; 

if(isset($_POST['subfrm'])){ 
    $gtid = $_REQUEST['tid']; 

    $ch1 = $_REQUEST['ch1']; 
    if($ch1 == "ON"){ 
    $gch1 = "Y"; 
    } else { 
    $gch1 = "N"; 
    } 

    $ch2 = $_REQUEST['ch2']; 
    if($ch2 == "ON"){ 
    $gch2 = "Y"; 
    } else { 
    $gch2 = "N"; 
    } 

    mysql_query("UPDATE SET ctable ch1='$gch1', ch2='$gch2' WHERE id='$gtid'"); 
} 
?> 

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
<input type="hidden" name="tid" value="<?php echo $id; ?>" /> 
<input type="checkbox" name="ch1" />Hats 
<input type="checkbox" name="ch2" />Watches 
<textarea name="thetext"></textarea> 
<input type="submit" name="subfrm" value="PUNCH ME" /> 
</form> 
+1

正確には機能しません。 – PeeHaa

+0

と照会する前にユーザーの入力を消毒してください。あなたの現在のコードでは、SQLインジェクションに脆弱です – PeeHaa

答えて

2
if(isset($_REQUEST["ch1"])){ 
    $gch1 = "Y"; 
} else { 
    $gch1 = "N"; 
} 
if(isset($_REQUEST["ch2"])){ 
    $gch2 = "Y"; 
} else { 
    $gch2 = "N"; 
} 

それがチェックされていない場合、それはいかなるデータを提出せず、それがあれば、それはonの値を提出しますので、あなたは、値が何であるかを確認するためにチェックする必要はありません。

+1

ありがとう:)私はまた、すべての原因となっているエラーがチェックボックスではなくSQLに行くテキストエリア情報であることを知りました。シンプルなmysql_real_escape_string()はすべてを解決しました。 1つのエラーが重大な頭痛を引き起こす可能性があることを驚かせます。とりあえずありがとう。今私は仕事に戻ってきました。 – yanike

2

はこれを試してみてください。

0

これをまとめてこれにより、どのチェックボックスが選択されたかを知ることができ、フォーム提出時のチェックも保持されます。

<?php 
$message = ''; 
$ch1_checked = false; 
$ch2_checked = false; 
if(isset($_POST['submit_button'])) { 
    // Form was submitted 
    $ch1_checked = isset($_POST['ch1']); 
    $ch2_checked = isset($_POST['ch2']); 

    if($ch1_checked && $ch2_checked) { 
     $message .= 'Both were checked.'; 
    } else if($ch1_checked) { 
     $message .= 'Checkbox 1 was checked.'; 
    } else if($ch2_checked) { 
     $message .= 'Checkbox 2 was checked.'; 
    } else { 
     $message .= 'Neither were checked.'; 
    } 
} 
?> 

<?php echo $message; ?> 
<form id="my_form" action="test.php" method="post"> 
    <input type="checkbox" name="ch1" value="ch1" <?php if($ch1_checked) echo 'checked'; ?> />Checkbox 1<br /> 
    <input type="checkbox" name="ch2" value="ch2" <?php if($ch2_checked) echo 'checked'; ?> />Checkbox 2<br /> 
    <input type="submit" name="submit_button" value="Go!" /> 
</form>