0

我遇到了一个问题...我有一对我已经命名和编号的复选框。我需要标记复选框并将它们插入我的数据库。这是我创建复选框的方式:

<div class="check"><input type="checkbox" name="acharge1" value="1"> <span style="color: #0C0">$$</span><input type="checkbox" name="amenities1" value="1">Amenity 1</div>
<div class="check"><input type="checkbox" name="acharge2" value="1"> <span style="color: #0C0">$$</span><input type="checkbox" name="amenities2" value="1">Amenity 2</div>
<div class="check"><input type="checkbox" name="acharge3" value="1"> <span style="color: #0C0">$$</span><input type="checkbox" name="amenities3" value="1">Amenity 3</div>
<div class="check"><input type="checkbox" name="acharge4" value="1"> <span style="color: #0C0">$$</span><input type="checkbox" name="amenities4" value="1">Amenity 4</div>

其中一些将被检查,而另一些则不会。此外,它们并不总是成对检查,​​但我必须成对将它们上传到我的数据库。所以换句话说:acharge1 和ities1 不会被检查,但acharge2 和ities2 会被检查。所以我尝试了一个 foreach 循环,但没有奏效。我也尝试了一个while循环,但我不知道要检查什么。所以这就是我现在所拥有的:

$aa = 1;
    echo "Amenity: ".$_POST['amenities'.$aa];
    $aa++;
    while(isset($_POST['amenities'.$aa])){
        $amen = $_POST['amenities'.$aa];
        if(isset($_POST['acharge'.$aa])){
        $acharge = $_POST['acharge'.$aa];
        }else{
            $acharge = "0";
            }
        echo "Amen: ". $amen." charge: ".$acharge;  
        mysql_query("INSERT INTO hotel_amenities (amenity_code, hotel_id, charge) VALUES ('$amen','$hotel_id','$acharge')") or die(mysql_error());
        echo $aa;
        $aa++;
        }

但是正如您所看到的,这不起作用,因为如果未检查便利性 1,它将不会通过其他人执行 while 循环。无论如何,任何关于我如何实现这一目标的帮助将不胜感激!

编辑** 这是这个概念,所以你可以看到,有时他们的钱箱会与便利设施一起检查,有时则不会。 http://www.cancunelitetravel.com/ale/Capture.PNG

4

1 回答 1

3

你这样做的方式是完全错误的。如果你不确定可用选项的数量,你应该这样写:

$cnt = 0;
foeach ($_POST as $option => $value) {
    if (preg_match("/(?:acharge|amenities)(\\d+)/", $option, $matches)) {
        $cnt = max($cnt, intval($matches[1]));
    }
}
for ($i = 0; $i < $cnt; $i ++) {
    $amenity = $_POST['amenities' . $i];
    $value = "0";
    if (array_key_exists("acharge" . $i, $_POST)) {
        $value = "1";
    }
    mysql_query("INSERT INTO hotel_amenities (amenity_code, hotel_id, charge) VALUES ('$amenity','$hotel_id','$value')") or die(mysql_error());
}

我想这会为你做的。那是假设您之前已经建立了连接并处理了$hotel_id.

于 2012-10-20T02:03:20.773 回答