复选框不会将值传递给数据库


Checkboxes don't pass on value to DB

我使用 php 在我的网站上创建了一个联系表单,其中一些值,更具体地说是具有复选框类型输入的值,不会发送到我的数据库。我认为我使用复选框的方式一定有问题或其他东西。提交表格后,我会收到一些这样的通知:

注意:未定义的索引:熨烫 /Applications/XAMPP/xamppfiles/htdocs/wordpress/demo.php 在第 79 行

注意:未定义的变量:开机自检 /Applications/XAMPP/xamppfiles/htdocs/wordpress/demo.php 在第 94 行

其余代码似乎工作正常,数据已加载到我的数据库中。

这是我在demo-form.php文件中的一些我认为错误的代码:

<h4>i) Cleaningservice:</h4>
     <p>Experience (in years): <input type="number" name="cleanExpInYears"/> </p>
     <p>Skills: <br>
       <input type="checkbox" name="basic" value="yes"> Basic cleaning<br>
       <input type="checkbox" name="kitchen" value="yes"> Kitchen tools<br>
       <input type="checkbox" name="laundry" value="yes"> Laundry<br>
       <input type="checkbox" name="ironing" value="yes"> Ironing<br>
       <input type="checkbox" name="window" value="yes"> Windows<br>
     <p> Please tell us about other skills: <input type="text" name="other_clean"/> </p>
     </p>

这是相应的demo.php文件,它连接到数据库并在那里存储数据:

/* Cleaningservice data is gathered... */
$clean_value1 = $_POST['cleanExpInYears'];
$clean_value2 = $_POST['basic'];
$clean_value3 = $_POST['kitchen'];
$clean_value4 = $_POST['laundry'];
$clean_value5 = $_POST['ironing'];
$clean_value6 = $_POST['window'];
$clean_value7 = $_POST['other_clean'];
/* ...and inserted into the table cleaningservice */
$sql = "INSERT INTO cleaningservice (applicant_id, cleanExpInYears, basic, kitchen, laundry, ironing, window, other)
        VALUES (LAST_INSERT_ID(),'$clean_value1', '$clean_value2', '$clean_value3', '$clean_value4', '$clean_value5', '$clean_value6', '$clean_value7')";
if (!mysql_query($sql)) {
 die('Error: ' . mysql_error());
}

我在这里错过了什么??提前致谢

浏览器仅在实际选中复选框时才将复选框传递给 PHP 脚本。

因此,在 PHP 中,您必须在使用 $_POST 变量的内容之前检查其是否确实存在,并提供 UNCHECK,即默认选项(如果不存在)。

/* Cleaningservice data is gathered... */
$clean_value1 = $_POST['cleanExpInYears']);
$clean_value2 = isset($_POST['basic']) ? $_POST['basic'] : 'No';
$clean_value3 = isset($_POST['kitchen']) ? $_POST['kitchen'] : 'No';
$clean_value4 = isset($_POST['laundry']) ? $_POST['laundry'] : 'No';
$clean_value5 = isset($_POST['ironing']) ? $_POST['ironing'] : 'No';
$clean_value6 = isset($_POST['window']) ? $_POST['window'] : 'No';
$clean_value7 = $_POST['other_clean'];

为了避免像"数组索引不存在"这样的错误消息,您应该检查所有 POST/GET 值都像这样存在。

/* Cleaningservice data is gathered... */
$clean_value1 = isset($_POST['cleanExpInYears']) ? $_POST['cleanExpInYears'] : '';
$clean_value2 = isset($_POST['basic']) ? $_POST['basic'] : 'No';
$clean_value3 = isset($_POST['kitchen']) ? $_POST['kitchen'] : 'No';
$clean_value4 = isset($_POST['laundry']) ? $_POST['laundry'] : 'No';
$clean_value5 = isset($_POST['ironing']) ? $_POST['ironing'] : 'No';
$clean_value6 = isset($_POST['window']) ? $_POST['window'] : 'No';
$clean_value7 = isset($_POST['other_clean']) ? $_POST['other_clean'] : '';

必须在名称和值之间切换

     <p>Skills: <br>
       <input type="checkbox" value="basic" name="yes"> Basic cleaning<br>
       <input type="checkbox" value="kitchen" name="yes"> Kitchen tools<br>
       <input type="checkbox" value="laundry" name="yes"> Laundry<br>
       <input type="checkbox" value="ironing" name="yes"> Ironing<br>
       <input type="checkbox" value="window" name="yes"> Windows<br>
     <p> Please tell us about other skills: <input type="text" name="other_clean"/> </p>
     </p>

在 PHP 方面,您将在 var_dump($_POST['yes']) 中找到您选择的值