2013-09-22 115 views
0

我想從下拉列表中選取多個選項,並將它們插入到單個列/行中。從下拉列表中插入多個選擇到一行

因此,它看起來像這樣(ColumnB):

ColumnA | ColumnB | ColumnC 
--------------------------- 
Stuff | A, B, C | Stuff 

這是下拉菜單:

echo "<select NAME='SysName_1' SIZE='1' multiple tabindex='7'>\n"; 
echo "<option>Choose One or More</option>\n"; 

要填充下拉我用select語句

$strSQL = "SELECT STATEMENT"; 

$rsSQL = odbc_exec($connSQL,$strSQL) or die ('Error Executing Subsystems SQL'); 

$strOptions = ""; 

while ($row=odbc_fetch_array($rsSQL)){ 

    $id   = trim($row["SysName"]); 
    $thing  = trim($row["SysDesc"]); 
    $strOptions .= "<OPTION VALUE='$id'>$thing</option>"; 
} 

echo $strOptions; 

echo "</select>\n"; 

而且這是我在我的插入:

應該合併多個選擇,由正確的?

$SysName_1 = implode(',',$_POST['$SysName_1']); 

$SQLIN = 'INSERT INTO TABLE (COLUMNA) VALUES ($SysName_1)'; 

我試着做了什麼設在這裏,因爲他的代碼似乎是在做我想做的(雖然他不希望它)Multiple dropdown values inserting in a single row not in multiple row

不過,這並不在所有的工作。我在我的服務器日誌中得到了一個implode的無效參數,而insert語句對於那個變量來說只是空白的。

任何幫助,將不勝感激。

回答

1

您的表單中的name屬性需要以[]結束以指示數組。這應該工作

echo "<select NAME='SysName_1[]' SIZE='1' multiple tabindex='7'>\n"; 

但你應該小心。永遠不要相信用戶輸入請勿將$_POST的值直接插入到數據庫中。總是至少逃脫

+0

令人敬畏,讓我走上正軌。當我在你提出的改變後回顧我的代碼時,我發現我的$ _POST ['$ SysName_1']應該是$ _POST ['SysName_1'],所以在你做了改變之後,看到了這個錯誤正常工作。 +1 – James

+0

好聽。記住這個漏洞。我不熟悉odbc,但不是'implode',而是通過數組遍歷並正確地轉義值 – kero

+0

好。所以即使它是從一個下拉菜單預先填充的數據,一些足智多謀的人仍然可以將東西放入下拉菜單中,而不應該在那裏? (我對PHP的使用還是比較新的,並且不瞭解/理解人們可以做的所有事情)。 – James

相關問題