【问题标题】:Get values from select multiple and get them in to database从选择多个中获取值并将它们放入数据库
【发布时间】:2011-09-03 04:16:20
【问题描述】:

获取一个多选框的所有值的最佳方法是什么,然后我想将这些值保存在数据库的一行中,然后我想从该行中单独获取每个值。做这种事情的最好方法是什么?我的目标是保存值,然后将每个值分开。

【问题讨论】:

  • 他们提交数据了吗?另外,您要插入的表格是什么样的?
  • 是的 mysql,嗯.. 只是一个带有 varchar 的表,就是这样,或者它不是好方法? id 和值

标签: php javascript jquery html css


【解决方案1】:

你可以这样做

<select name="foo[]" multiple="multiple">
     <option value="dog">Dog</option>
     <option value="cat">Cat</option>
     <option value="fish">Fish</option>
</select>

<?php

$pets = $_POST['foo'];

//sanitize and verify the input here. Escape properly and what not

$query = mysql_query("INSERT INTO `pets` (`pet1`, `pet2`, `pet3`) VALUES ('".$pets[0]."', '".$pets[1]."',  '".$pets[2]."')");
?>

但老实说,这是一种构建数据库的糟糕方法。做任何有意义的事情会很烦人或很难。

为什么不进行以下数据库设置:

用户:

id | name 
----------
 1 | Tim

宠物:

id | user_id | type
-------------------
1  | 1       | Fish
2  | 1       | Cat
3  | 4       | Kakapo

然后您将拥有一个更易于搜索和操作的一致数据库。

【讨论】:

    【解决方案2】:

    我相信您应该在 $_POST 变量中接收选择为数组的值,所以说您的选择有一个 name="products"

    假设您通过 POST 提交表单,所选值将在 $_POST["products"] 中。

    然后你可以使用 implode 函数来生成一个字符串。例如:

    $myProducts = implode("|", $_POST["products"]); //This will give you a pipeline delimeted string like : computer|laptop|monitor
    
    $myProducts = mysql_real_escape_string($myProducts); //Just to santize before inserting in DB
    

    然后将该字符串插入数据库。

    在检索数据时,您可以使用explode 函数反转该过程:

    $myProducts = explode("|" , [The value retrieved from the database]); //This will give you an array which you can iterate and thus accessing the values individually.
    

    希望这会有所帮助:)

    【讨论】:

      【解决方案3】:

      如果我能很好地理解你的问题...

      $dataFromMultipleBox = array('data1', 'data2', 'data3');
      $data = implode("||", $dataFromMultipleBox);
      
      /*
      After that,
      write $data into database
      
      fetch from the database again
      */
      
      $pieces = explode("||", $rowFromDatabase);
      
      foreach($pieces as $value) {
        echo $value;
        echo '<br>';
      }
      

      【讨论】:

        【解决方案4】:

        获取一个多选框的所有值的最佳方法是什么,

        因为它是 PHP。给选择元素一个以[]结尾的名字,然后你就可以访问它们为$_POST['foo'][]

        然后我想将这些值保存在数据库中的一行中,然后我想从该行中单独获取每个值。

        不要那样做。有一个有两列的第二个表。另一个表(您计划在其中存储数据)中的行的 id(作为外键)和值本身。

        【讨论】:

          猜你喜欢
          • 2019-06-20
          • 1970-01-01
          • 2015-05-24
          • 1970-01-01
          • 1970-01-01
          • 2011-05-18
          • 1970-01-01
          • 2016-06-15
          • 2011-11-13
          相关资源
          最近更新 更多