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がチェックされている限り正常に機能します。ただし、データを挿入する必要がありますが、値を1ではなく0にして、スクリプトがデータを非表示にする必要があることを認識します。

これは私の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

single_color_show属性を他の属性と同様に非表示フィールドにし、javascriptを使用して、チェックボックスが変更されるたびにその値を0と1の間で切り替えることができます。

于 2013-03-19T21:29:13.160 に答える
0

チェックボックス-HTMLコードとチェックボックス-配列で作業する必要があります。

(1)HTML
各チェックボックスにvalue0から始まる一意の値を付けます。

<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)mysql_*の代わりにmysqli_*またはPDOを使用します;-)

--->ここでライブデモを参照してください:http://codepad.viper-7.com/jUPseH

于 2013-03-19T21:41:12.663 に答える