2013-09-22 78 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

相关问题