2012-10-20 76 views
0

我遇到了一個問題...我有一對複選框,我已命名和編號。我需要將複選框標記並將它們插入到我的數據庫中。這裏是我如何創建複選框:從兩個複選框獲取值並插入到mysql

<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循環,但沒有奏效。我也嘗試了一段時間循環,但我不知道要檢查什麼。因此,這是我現在有:

$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

+0

它們必須插入mysql中的同一行。 – liveandream

回答

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的值。

+0

這是不完全正確的,$阿門是其他輸入複選框,我需要得到。他們是兩個。一個是酒店設施,另一個是旁邊的複選框,這意味着它是否會收取額外費用。 – liveandream

+0

我添加了一個圖像,以更好的想法。非常感謝! – liveandream

+0

我試過這個,並得到一個錯誤:警告:preg_match()[function.preg-match]:分隔符不能是C:\ wamp \ www \ olympus-backend \ inc \ add-hotel.php上的字母數字或反斜槓79行 – liveandream

相關問題