1

我试图从如下所示的表单中插入数据:

<input type="checkbox" name="single_color_show[]" value="1" id="1" checked>
<input type="text" name="single_color_val[]" class="input-admin-val" value="0" id="1">
<input type="hidden" name="single_color_name[]" value="Vit: (NCS S0502-Y)" id="1">
<input type="hidden" name="single_color_head[]" value="colors" id="1">
<input type="hidden" name="single_color_standard[]" value="1" id="1">
<input type="hidden" name="single_color_order[]" value="1" id="1">
<input type="hidden" name="single_color[]" value="1" id="1"></td>

等等...

我想要的是所有值都存储在数据库中。只要检查了 single_color_show,它就可以正常工作。但无论如何我都需要插入数据,但其值为 0 而不是 1,因此脚本知道它应该被隐藏。

这是我的 php 代码:

$single_color_show = $_POST['single_color_show'];
$single_color = $_POST['single_color'];
$single_color_name = $_POST['single_color_name'];
$single_color_val = $_POST['single_color_val'];
$single_color_head = $_POST['single_color_head'];
$single_color_standard = $_POST['single_color_standard'];
$single_color_order = $_POST['single_color_order'];

foreach($single_color_order as $key => $n) {
$s_color = "INSERT INTO product_attributes (products_id, att_name, att_head, att_val, att_standard, att_order, att_show) VALUES ('".$products_id_enkel."', '".$single_color_name[$key]."', '".$single_color_head[$key]."', '".$single_color_val[$key]."', '".$single_color_standard[$key]."', '".$single_color_order[$key]."', '".$single_color_show[$key]."');";
$q = mysql_query($s_color) or die ('Error posting data enkeldörr färg');
}

只要我选中所有选项,它就可以保存数据,但由于我需要检索数据以供将来编辑,所以我需要所有呈现的选项与所选属性一起使用。

如果我检查让我们说 3 个选择中的 2 个,我希望将数据存储为

products_id, att_name, att_head, att_val, att_standard, att_order, att_show
12           Red       Color      80          1            1          1
12           Blue      Color      50          0            2          0
12           Green     Color      70          0            3          1

这就是我现在得到的:

products_id, att_name, att_head, att_val, att_standard, att_order, att_show
12           Red       Color      80          1            1          1
12           Green     Color      70          0            3          1
4

2 回答 2

0

您需要处理 checkbox-HTML-code 和 checkbox-array:

(1) HTML从0开始
给每个checkbox一个唯一的:value

<input type="checkbox" name="box[]" value="0"/>
<input type="checkbox" name="box[]" value="1"/>
<input type="checkbox" name="box[]" value="2"/>
<input type="checkbox" name="box[]" value="3"/>
<input type="checkbox" name="box[]" value="4"/>
<input type="checkbox" name="box[]" value="5"/>

(2) PHP
提交后处理数组...

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

    $max = count($_POST['single_color']); // get max number of elements in "full" array

    for ($i = 0;$i < $max;$i++)
        $box[$i] = intval(in_array($i,$_POST['box']));
} else $box = array();

(3) 使用 mysqli_* 或 PDO 代替 mysql_* ;-)

---> 在此处查看现场演示:http: //codepad.viper-7.com/jUPSeH

于 2013-03-19T21:41:12.663 回答
0

您可以将 single_color_show 属性设置为像其他属性一样的隐藏字段,然后在复选框更改时使用 javascript 在 0 和 1 之间切换它的值。

于 2013-03-19T21:29:13.160 回答