2014-02-21 95 views
0

我正在進行一項調查,我想將數據發佈到我的數據庫。但我碰到一個問題,如果我想發佈複選框數據,它只會發佈最後一個複選框。希望我能得到一些幫助,這裏是代碼:PHP發佈複選框數據

HTML

<form name="x" id="submit1" action="confirm_medici.php" method ="post" onsubmit="validator();return false;" target="_self"> 

<input type="checkbox" name="opsystem" value="Android">Android<br> 
<input type="checkbox" name="opsystem" value="Windowsphone">Windows Phone<br> 
<input type="checkbox" name="opsystem" value="Ios">IOS (Apple)<br><br> 
Else: <input type="text" name="opsystem" size="75"><br> 


PHP

<?php 
$con=mysqli_connect("x","x","x","x"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 


$question1=$_POST['opsystem']; 

$sql="INSERT INTO medici (colum1) 
VALUES 
('$question1')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 
echo "1 record added"; 

mysqli_close($con); 
?> 

回答

3

重命名字段,以便在名稱結尾字符[]。然後,PHP將以數組的形式公開它,而不是傾銷除最後一項之外的所有內容。

name="opsystem[]" 

$_POST['opsystem'] 
+0

這是第一步,但是那裏是數組的值的'INSERT'。 –

+0

@ChrisForrence - 在數組中循環使用for循環,並在每次循環時插入。 – Quentin

1

如果您的複選框是多項選擇,您可以將[]添加到複選框名稱的末尾。

<input type="checkbox" name="opsystem[]" value="...">...</input> 

然後在PHP中:

$checkbox = $_POST['opsystem']; 

foreach ($checkbox as $item) { 
    ... Database Insertion Code For Each Checkbox Here 
} 

在foreach然後你可以運行一個查詢答案插入到數據庫。或者你可以implode數組而不是運行foreach,並將新字符串插入到數據庫中。

隨着破滅:

$checkbox = $_POST['opsystem']; 

$checkboxResults = implode(',', $checkbox); 

$sql = 'INSERT INTO medici (column1) VALUES ('.$checkboxResults.')'; 

我也指出,這SQL是不好的!它是開放的sql注入。

+0

我試過了,但每次嘗試使用爆炸或預測函數時,都會收到如下錯誤消息:Warning:implode()[function.implode]:在 – user3337999

+0

中傳遞的無效參數如果它是用implode給出該錯誤,聽起來像你的'$ _POST'不包含''opsystem'。嘗試'var_dump($ _ POST)'並確保'$ _POST'包含您使用表單發送的數據。 – Joe