2016-08-11 9 views
1

私のプロジェクトにPHPとMYSQLIを使用しています。私は1つのテキスト入力フィールドと3つのチェックボックスを含むフォームを持っています。ユーザーが3つのうち2つのボックスをチェックし、テキスト入力フィールドに入力せずにフォームを送信すると、エラーが表示されます。フォームがPHPでエラーとともに送信されたときにチェックボックスの値が失われる

ここで私が達成したいのは、ユーザーがチェックした特定のチェックボックスが、エラーが表示されたときにチェックを外すべきではないということです。カテゴリフィールドは、フォームのすべてのチェックボックスで同じになることをご理解ください。

マイフォームの例は以下の通りです:

<?php if(isset($_POST['submit'])) {  
    $full_name=$db->real_escape_string($_POST["full_name"]); 
    $checkbox = implode(',', $_POST["fruits"]); 

    if(empty($checkbox)) { 
     $errors = 'Please choose at least one fruit.'; 
    } 

    if(!isset($errors)) { 
     // I am inserting the data 
    } else { 
     $errors; 
    } 
} 
?> 

<form method="post" action="add.php"> 
<input type="text" name="full_name"> 
<input type="checkbox" name="fruits[]" value="Apple"> 
<input type="checkbox" name="fruits[]" value="Banana"> 
<input type="checkbox" name="fruits[]" value="Carrot"> 
<input type="submit" name="submit" value="Submit"> 
</form> 
+0

PHPコードを投稿できますか? – pmahomme

+0

PHPコードに合うように自分のコードを更新しました。 – FrankerZ

答えて

0

は、果実が配列であるかどうかを確認するためにin_array()チェックを行い、その後、それは(再び)]チェックボックスをオンに持ってchecked="checked"をエコー。

<?php 
if(isset($_POST['submit'])) { 
    $errors = array(); 

    $full_name = $db->real_escape_string($_POST["full_name"]); 
    //Initialize empty array (In case fruits isn't sent, if they didn't check any boxes) 
    $fruits = array(); 

    //We get an array? Cool, set it to $fruits 
    if (isset($_POST['fruits']) && is_array($_POST['fruits'])) { 
     $fruits = $_POST['fruits']; 
    } 

    if (empty($full_name)) { 
     $errors[] = 'Please enter your name.'; 
    } 

    if(empty($fruits)) { 
     $errors[] = 'Please choose at least one fruit.'; 
    } 

    if(empty($errors)) 
    { 
     //Change $fruits into a string 
     $fruits = implode(', ', $fruits); 
     // I am inserting the data 
    } else { 
     foreach ($errors as $error) 
     { 
      echo '<p class="error">', $error, '</p>'; 
     } 
    } 
} 

?> 

<form method="post" action="add.php"> 
    <input type="text" name="full_name" value="<?=htmlspecialchars($_POST['full_name'])?>" /> 
    <input type="checkbox" name="fruits[]" value="Apple"<?=(in_array('Apple', $fruits) ? ' checked="checked"' : '') ?> /> 
    <input type="checkbox" name="fruits[]" value="Banana"<?=(in_array('Banana', $fruits) ? ' checked="checked"' : '') ?> /> 
    <input type="checkbox" name="fruits[]" value="Carrot"<?=(in_array('Carrot', $fruits) ? ' checked="checked"' : '') ?> /> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 
+1

あなたの早い返信のためにFrankerZありがとう、これは私の問題を解決し、期待どおりに働いています。もう一度ありがとう、良い一日を。 – user2945468

関連する問題