重要的事情首先......我的英语不是最好的,所以我请你帮助我,忽略我的英语失败......谢谢。
我知道此问题之前曾多次被问到,但所有这些答案对我没有帮助。所以我问自己。
我的表格带有6个复选框,如下所示:
<form id="product_form" method="post">
<input type="checkbox" name="edges" value="yes">
<input type="checkbox" name="light" value="yes">
<input type="checkbox" name="color_change" value="yes">
<input type="checkbox" name="white" value="yes">
<input type="checkbox" name="printed" value="yes">
<input type="checkbox" name="legs" value="yes">
<input type="submit" name="submit" value="Submit">
</form>
如果您现在单击“提交”,表单将提交到我的PHP脚本,如下所示:
if(isset($_POST['submit'])){
if($_POST['edges'] == "yes"){
$edges == "yes";
} else {
$edges == "no";
}
}
我知道我的复选框的这个代码,因为我知道,复选框只有在选中后才会被提交但是在我的脚本中,如果我转储$ edge,如果我检查它,那么复选框总是处于活动状态。无所谓。
我已经尝试检查isset($ _ POST [&#39; edge&#39;]),但这也不起作用。 当我寻找一个解决方案时,我倒下了#34; Checkbox Arrays&#34;但我认为这种方式在我的情况下工作得更好,因为我想将它们全部写入数据库,所以我会从我的Checkbox中创建一个数组,只能将它们转换回单个变量。
我不知道我在这里做错了什么......我只是假设你可以在这种情况下帮助我,我确定它只是一个小错误,但我不能自己找到这个错误...所以请指导我通往工作表格的方式! ^^
答案 0 :(得分:1)
我在查看代码时看到的第一个问题是在设置变量时使用等于运算符(==
)而不是赋值运算符(=
)。
此:
$edges == 'yes';
应该是:
$edges = 'yes';
很难从你的问题中判断出你的问题是否归结为此。
您声明您正在为每个复选框使用该代码。您的所有复选框条件都可以在单个提交isset()
块内。
E.g。
if ( isset( $_POST['submit'] ) ) {
// test for edges...
// test for light...
}
鉴于您的标记,您应该使用isset()
作为复选框。如果您发布表单并且未选中这些复选框,则不会在$_POST
中设置它们。
完整示例:
if ( isset( $_POST['submit'] ) ) {
$edges = ( isset( $_POST['edges'] ) ) ? 'yes' : 'no';
$light = ( isset( $_POST['light'] ) ) ? 'yes' : 'no';
// . . .
}
虽然使用单个变量的上述方法可行,但使用数组编写此方法的方法更为清晰。
数组示例HTML:
<input type="checkbox" name="myCheckbox[]" value="edges">
<input type="checkbox" name="myCheckbox[]" value="light">
. . .
数组示例PHP:
if ( isset( $_POST['submit'] ) ) {
// Each checkbox option should default to no.
$checkboxes = array(
'edges' => 'no',
'light' => 'no',
// . . . don't forget to add all your options here.
);
// Let's make sure we have some checkboxes posted.
if ( ! empty( $_POST['myCheckbox'] ) ) {
// Loop through each checked option.
foreach ( (array) $_POST['myCheckbox'] as $checked ) {
// If the checked option exists in our checkbox array, update value to yes.
if ( array_key_exists( $checked, $checkboxes ) ) {
$checkboxes[ $checked ] = 'yes';
}
}
}
// Do stuff with your checkbox values here...
}