2012-11-30 39 views
1

我希望有人能夠幫助我解決這個問題!從PHP中的下拉菜單提交多個值

我正在PHP中開發一個web應用程序,我想從我的一個同事提交一個活動。有時候,活動是由多個同事完成的,所以我希望能夠提交該活動,但通過這種方式,所有正在進行活動的同事都能得到保存。

我決定使用下拉菜單,在php中稱爲select標籤。

<div id="placeholder"> 
<SELECT id="activeMember" NAME=name> 
    <OPTION VALUE=0>Choose 
    <OPTION VALUE=1>Mark 
    <OPTION VALUE=2>James 
    <OPTION VALUE=3>Emily 
</SELECT> 

<button type="button" name="add" onclick="Add();">+</button>​ 

下面是javascript代碼:

var _counter = 0; 
function Add() { 
    _counter++; 
    var oClone = document.getElementById("activeMember").cloneNode(true); 
    oClone.id += (_counter + ""); 
    document.getElementById("placeholder").appendChild(oClone); 
}​ 

你可以看到它是如何工作在這個LINK

當提交的HTML代碼如下按下按鈕時,會調用另一個腳本,將活動保存在我的數據庫中:

$connection = mysql_connect("$host", "$username", "$password") or die("cannot connect"); 
mysql_select_db("$db_name") or die("cannot select DB"); 

$member = $_POST['name']; 
$summary = $_POST['summary]; 
$date = date("l F d, Y"); 
$query = mysql_query("INSERT INTO activities (member, activitySummary, date) VALUES ('" . $member . "', '" . $summary . "', $date."')"); 

現在來了我的問題。當我選擇馬克和詹姆斯時,如果詹姆斯是第二個被選中的人,那麼只要我提交表格,該活動就會被保存下來。馬克保持忽略。另外,如果選擇馬克,詹姆斯和艾米莉,這項活動將只爲艾米莉得救。因此,表單僅保存上次選擇的同事的活動。

有沒有人有任何想法,我可以避免這種情況,併成功地爲一個活動保存多個同事/成員?

+2

附註:1)**清理輸入!**,2)不要使用mysql_'函數進行新的開發。看看[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。 – Wiseguy

+0

1)你能詳細解釋一下嗎?你說的「淨化」是什麼意思,2)你能否說出原因?一切似乎都很好。 –

+1

當然。 1)通過在查詢中使用逐字輸入,您很容易受到[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)的影響。爲了幫助用'mysql_'庫緩解這種情況,請在查詢中使用'mysql_real_escape_string($ member)'(以及其他值)。 2)'mysql_'的擴展名是舊的,不再積極開發,並且會被棄用(很快?)。 PDO和MySQLi更新,功能更豐富,提供面向對象的使用和參數化查詢(SQL注入預防技術優於盲目字符串轉義)。這是一個評論的很多信息,但希望這是一個開始。 – Wiseguy

回答

3

將您的輸入重命名爲<SELECT id="activeMember" NAME="name[]">,然後當數據被提交時,它將在一個數組中。

您將不得不修改您的PHP代碼來處理傳入數組。

$members = $_POST['name']; 
$summary = $_POST['summary']; 
$date = date('l F d, Y'); 

foreach ($members as $member) { 
    if (empty($member)) { 
     continue; 
    } 

    $query = mysql_query("INSERT INTO `activities` (`member`, `activitySummary`, `date`) VALUES ('{$member}', '{$summary}', '{$date}')"); 
} 
+0

我會盡快嘗試這個!感謝您的快速回復:) –

+0

它完美的作品! :) –

+0

但如何從下拉列表中選擇多個值 – SANDEEP