如何将多个项目发布到mysql中唱歌<选择>选项

时间:2014-04-20 18:50:32

标签: php mysql smarty

我正在使用smarty并且想知道是否有办法将多个选择项发布到MySQL。目前提交表格,它只存储一个项目,虽然<选择>设置为多个。

这是我的代码。

<select  name="name" class="box-20" multiple="multiple">
<optgroup label="Clients">
{foreach from=$client item=client}
<option value="{$client.FNAME}">{$client.FNAME}&nbsp;{$client.LNAME}</option>
{/foreach}
</optgroup>
<optgroup label="Type">
{foreach from=$type item=type}
<option value="{$type.CTYPE}">{$type.CTYPE}<option>
{/foreach}
</optgroup>
</select>

此输出

客户

<option value="Sam">Sam Adams</option>
<option value="nan">Jan John</option>
<option value="Lincoln">Lincoln Smith</option>
<option value="Julie">Julie Bliss</option>

输入

<option value="1">1</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>

MySQL代码

if(isset($VAR['submit'])) {
 $sql = "UPDATE CLIENTS  SET 

NAME  =".$db->qstr($VAR["name"])."

WHERE CUST  = ". $db->qstr( $VAR['cust_id']);


    if(!$result = $db->Execute($sql)) {
    force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
    exit;
}
}

即使我全部选择它们,它也只存储我在MySQL中选择的最后一个选项。 非常感谢你们!!

2 个答案:

答案 0 :(得分:2)

改变这个 -

<select  name="name[]" class="box-20" multiple="multiple">

您可以看到我已将name="name"替换为name="name[]"。这样做是因为您选择了多个选项,它会创建一个您所选择的数组。

e.g

echo '<pre>'; print_r($_POST['name']);  // will generate following array

Array (
 [0] => client1
 [1] => client2  
 [2] => client3
)

答案 1 :(得分:0)

非常感谢Sean和parag

将php更改为

=".$db->qstr(implode(",",$VAR["name"]) )." 

完美无缺。