3

I have an invoice in a HTML table. You select item name then item lot and the item #. There is a check box at the end to mark if it is sold out.

<input type="checkbox" name="soldout[]">

When I process the form the $_POST array of check boxes obviously don't contain the unchecked boxes. That leads me to problems when matching up the check boxes to the item

foreach($productID as $key=>$id){
    $p = $id;
    if(isset($soldout[$key])){
        $so = true;
    }
}

So if I have three line items and the first and last are marked sold out it processes as the first 2 sold out and the last one not sold out.

I don't think i can do this:

<input type="checkbox" name="soldout[<?php echo $i; ?>]">

because I am adding empty invoice lines with javascript when needed and wouldn't know how to increment the array key.

Any ideas on how to handle this?

4

4 に答える 4

1

JS を使用して配列を増やす場合は、名前を soldout_new に変更してから、変数を増やします。

このようなもの:

var soldout_new = 0;

function add()
{
'<input type="checkbox" name="soldout_new[' + soldout_new + ']">';

soldout_new += 1;
}

または、変数をphpからのidに設定することもできます:

var soldout = <?php echo $i; ?>;

function add()
{
'<input type="checkbox" name="soldout[' + soldout + ']">';

soldout += 1;
}
于 2013-03-01T02:23:48.670 に答える
1

これに対する単純な HTML ソリューションはありません。Javascript がオプションである場合はそこを見ることができますが、単純な HTML ソリューションが必要な場合は、チェックされていないチェックボックスは PHP に表示されませんが、ラジオ ボタンは表示されます。

<input type="radio" name="soldout[<?php echo $i; ?>]" value="true"> Yes
<input type="radio" name="soldout[<?php echo $i; ?>]" value="false"> No

次に、PHPで次のようにアクセスできます

foreach($productID as $key=>$id){
    $p = $id;
    if($soldout[$key] == "true"){
        $so = true;
    }
    else {
        $so = false;
    }
}

"true"文字列なので、周りの引用符を覚えておいてください


繰り返しますが、サーバー側でチェックボックスを設定している場合は、おそらくどの値が存在する必要があるかを知っている必要があります$_POST

foreach ($availableProductIDs as $id) {
    if(isset($_POST['soldout'][$id]){
        $so = true;
    }
    else {
        $so = false;
    }
}
于 2013-03-01T02:21:07.113 に答える
0

なぜこのようなことをしないのですか?

<input type="checkbox" name="soldout[]" value="<?= $productID[0] ?>">
<input type="checkbox" name="soldout[]" value="<?= $productID[1] ?>">

次に、PHPで

foreach($productID as $key=>$id) {
    $p = $id;
    if(in_array($id, $soldout) {
        $so = true;
    }
}
于 2013-03-01T04:46:48.950 に答える