php - 如何使用 <select> 选项将多个项目发布到 mysql

标签 php mysql smarty

我正在与 smarty 合作,想知道是否有一种方法可以将多个选择项发布到 MySQL。目前,在提交表单时,尽管 < select > 设置为多个,但它仅存储一项。

这是我的代码。

<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 中选择的最后一个选项。 非常感谢大家!!

最佳答案

更改此 -

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

您可以看到我已将 name="name" 替换为 name="name[]"。其作用是,由于您选择了多个选项,因此它会创建您所选择的数组。

例如

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

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

关于php - 如何使用 <select> 选项将多个项目发布到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186321/

相关文章:

logic - 为 Smarty 变量分配真/假值

php - 刷新后保留选定的选项(表单/选择)

php - PayPal 沙盒 IPN 验证总是返回 INVALID

php - iOS JSON 错误 : NSDebugDescription=Garbage at end

php - Laravel 4 使用 Zizaco/confide 以编程方式创建用户

mysql - ssl连接错误: unknown error number

php - 当我在 cakephp 中使用 'group' 时,分页不起作用

java - 将 SQL 集成到 Java 中的 Web 服务

mysql - LEFT JOIN 不返回正确的结果

php - 使用 Smarty PHP 模板构建移动网站