【问题标题】:How to post multiple items to mysql sing < select > option如何使用 <select> 选项将多个项目发布到 mysql
【发布时间】:2014-04-20 18:50:32
【问题描述】:

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

【问题讨论】:

  • 您处理发布数据的代码在哪里?
  • 我已经更新了帖子
  • 不应该是$_POST['name'] 而不是$VAR["name"]
  • (1) 你们所有选择的选项的值都是Sam,这是错误吗?还是您希望每个值都是Sam(2) 你的最终目标是什么? UPDATE CLIENTS SET NAME = Sam Sam SamUPDATE CLIENTS SET NAME = Sam, Sam, Sam,UPDATE CLIENTS SET NAME = Sam ... , UPDATE CLIENTS SET NAME = Sam。不明白为什么要在查询结构中选择多个名称。
  • 抱歉 (1) 不正确的复制和粘贴。我已经更新了帖子。我的最终目标是将选定的客户端名称保存到 MySQL。像 Sam Adams、Jan John、Lincoln Smith……等等

标签: php mysql smarty


【解决方案1】:

改变这个 -

<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
)

【讨论】:

  • 这会将空白保存到 MySQL。还有其他解决方案吗?
  • 您可以发布您的查询吗?
  • 它确实生成了数组.. hmm
【解决方案2】:

非常感谢 Sean 和 parag

把php改成

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

完美运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2017-03-29
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多