从两个复选框中获取值并插入到mysql中

时间:2012-10-20 01:51:42

标签: php loops checkbox

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

<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和amenities1将不会被检查,但acharge2和amenities2将是。所以我尝试了一个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++;
        }

但是你可以看到这不起作用,因为如果不检查amenities1,它将不会通过其他进行while循环。无论如何,我将非常感谢您对如何实现这一目标的任何帮助!

编辑**这是一个概念,因为你可以看到,有时他们的钱箱将用舒适性进行检查,有时它不会。 http://www.cancunelitetravel.com/ale/Capture.PNG

1 个答案:

答案 0 :(得分: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的值。