2013-11-24 36 views
8

我似乎無法找到或找出一個工作解決方案,從窗體插入多個複選框值到表中。我已經到來的關閉只是將一個複選框值的值插入到表中。請指出我如何插入多個複選框值,而不僅僅是一個。如何將多個複選框值插入表中?

查找下面是我到目前爲止有:

我的形式:

<html> 
<body> 
<form method="post" action="chk123.php"> 
Flights on: <br/> 
<input type="checkbox" name="Days" value="Daily">Daily<br> 
<input type="checkbox" name="Days" value="Sunday">Sunday<br> 
<input type="checkbox" name="Days" value="Monday">Monday<br> 
<input type="checkbox" name="Days" value="Tuesday">Tuesday <br> 
<input type="checkbox" name="Days" value="Wednesday">Wednesday<br> 
<input type="checkbox" name="Days" value="Thursday">Thursday <br> 
<input type="checkbox" name="Days" value="Friday">Friday<br> 
<input type="checkbox" name="Days" value="Saturday">Saturday <br> 
<input type="submit" name="submit" value="submit"> 
</form> 
</body> 
</html> 

我的PHP文件的讀取和值插入到表:

<?php 

// Make a MySQL Connection 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("test") or die(mysql_error()); 

$checkBox = $_POST['Days']; 

if(isset($_POST['submit'])) 
{ 
    for ($i=0; $i<sizeof($checkBox); $i++) 
     { 
      $query="INSERT INTO example (orange) VALUES ('" . $checkBox[$i] . "')";  

      mysql_query($query) or die (mysql_error()); 
     } 
    echo "Complete"; 

} 

?> 
+1

對mysql_query的每次調用都很昂貴,請考慮通過鏈接()後面的值來將查詢合併到單個插入。例如('a'),('b'),('c'),... – ohmusama

+0

所有'mysql _ *()'函數都是[**官方不推薦使用的**](http://j.mp/ XqV7Lp)*(不再支持/維護)*,將來會被[**刪除**](http://j.mp/11j2t6j)。您應該使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/msqli)更新您的代碼以確保未來的功能。此外,您的代碼易受SQL注入攻擊。 –

回答

20

應指定

<input type="checkbox" name="Days[]" value="Daily">Daily<br> 

作爲數組。

[]添加到所有名稱Days和工作在PHP這樣的數組。

在此之後,您可以INSERT值在db的不同列上,或者使用implode並將值保存到一列中。


沒有測試過,但你可以嘗試這樣。不要忘記用mysqli替換mysql

<html> 
<body> 
<form method="post" action="chk123.php"> 
Flights on: <br/> 
<input type="checkbox" name="Days[]" value="Daily">Daily<br> 
<input type="checkbox" name="Days[]" value="Sunday">Sunday<br> 
<input type="checkbox" name="Days[]" value="Monday">Monday<br> 
<input type="checkbox" name="Days[]" value="Tuesday">Tuesday <br> 
<input type="checkbox" name="Days[]" value="Wednesday">Wednesday<br> 
<input type="checkbox" name="Days[]" value="Thursday">Thursday <br> 
<input type="checkbox" name="Days[]" value="Friday">Friday<br> 
<input type="checkbox" name="Days[]" value="Saturday">Saturday <br> 
<input type="submit" name="submit" value="submit"> 
</form> 
</body> 
</html> 

<?php 

// Make a MySQL Connection 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("test") or die(mysql_error()); 

$checkBox = implode(',', $_POST['Days']); 

if(isset($_POST['submit'])) 
{  
    $query="INSERT INTO example (orange) VALUES ('" . $checkBox . "')";  

    mysql_query($query) or die (mysql_error()); 

    echo "Complete"; 

} 

?> 
+0

你介意在代碼中向我展示這些嗎? – SirBT

+0

檢查我的更新 –

+0

太棒了!我檢查了它,並在一個專欄中保存了幾天。我如何讓每一天都保存在每一行? – SirBT

0

我認爲這應該工作.. :)

<input type="checkbox" name="Days[]" value="Daily">Daily<br> 
<input type="checkbox" name="Days[]" value="Sunday">Sunday<br> 
+0

請稍微具體一點。 – SirBT

+0

我想你會明白.. :( – Drudge

4

,你需要通過

<input type="checkbox" name="Days[]" value="Daily"> 

宣佈在HTML陣列還可以插入多個項目與這樣的一個查詢

$query = "INSERT INTO example (orange) VALUES "; 
for ($i=0; $i<count($checkBox); $i++) 
    $query .= "('" . $checkBox[$i] . "'),"; 
$query = rtrim($query,','); 
mysql_query($query) or die (mysql_error()); 

而且記住,mysql_*功能officially deprecated,因此不應在新代碼中使用。您可以改用PDO或MySQLi。有關更多信息,請參閱this answer on SO

相關問題