将多选框选择发布到数据库,仅添加第一个选定项目

时间:2012-12-04 14:29:08

标签: php mysql insert implode

我正在使用以下多选框从用户那里获取输入,然后将其发布到我的php表单,将其添加到数据库,问题是,如果用户选择更多,我将添加的是第一个选择比起一个领域,我仍然只得到第一个领域。

如果用户选择让我说互联网,绘图,数学,我希望将其放入数据库,此时插入的所有内容都是互联网,或者是列表中首选的内容。

我的表单如下>>

    <form action="../files/addtodb.php" method="post" style="width:800px;">
    <select name="whatisdeviceusedfor[]" size="1" multiple="multiple" id="whatisdeviceusedfor[]">
        <option value="games">Games</option>
        <option value="takingphotos">Taking Photos</option>
        <option value="maths">Maths</option>
        <option value="reading">Reading</option>
        <option value="drawing">Drawing</option>
        <option value="internet">Internet</option>
        <option value="other">Other (enter more info below)</option>
      </select>
      <input type="submit" name="submit" id="submit" value="Submit">
      </form>

php端看起来像这样&gt;&gt;

 <?php

 // Implode what is device used for
$usedfor = $_POST['whatisdeviceusedfor'];
$arr = array($usedfor);
$whatisdeviceusedfor = implode(" ",$arr);



// Insert posted data into database
mysql_query("INSERT INTO itsnb_year5questionaire (whatisdeviceusedfor) VALUES   '$whatisdeviceusedfor'") or die(mysql_error()); 

   ?>

4 个答案:

答案 0 :(得分:2)

你已经选择了阵列,所以你不需要再次使用$arr = array($usedfor);

试试

$usedfor = $_POST['whatisdeviceusedfor'];

$whatisdeviceusedfor = implode(" ",$usedfor);

$usedfor = $_POST['whatisdeviceusedfor'];


$strings ='';
foreach ($usedfor as $item){
    $strings .=' '. $item;
}
echo $strings;

 <select name="whatisdeviceusedfor[]" size="5" multiple="multiple" id="whatisdeviceusedfor[]">
                                           ^^             
                                           ||change to option you want to select 

我已经更改了size="5"所以现在一次只选择5个...你只有1个,所以一次只能选择1个

结果

enter image description here

警告

您的代码容易受到 SQL注入的影响,不推荐使用mysql_*函数使用PDOMySQLi

答案 1 :(得分:1)

如果您通过SELECTCHECKBOXES选择了多个项目,则表单将返回类似数组的数据结构。在插入之前,您将始终需要循环遍历该数据并将每个项目单独存储到数据库中或将值连接到字符串。

答案 2 :(得分:1)

由于$usedfor包含数组,您可以直接在foreach中使用它来保存值中的每个值。试试这可能有助于您:

<?php   
$usedfor = $_POST['whatisdeviceusedfor'];

foreach($usedfor as $arr){
mysql_query('INSERT INTO itsnb_year5questionaire(whatisdeviceusedfor) VALUES("'.$arr.'"') or die(mysql_error()); 

}

答案 3 :(得分:1)

首先更改size = "5"以查看列表

然后尝试这样做(如果你喜欢它的第二个选项)

if ($_POST) {

  // post data

 $games = $_POST["games"];
 $takingphotos = $_POST["takingphotos"];
 .
  ...


  // secure data

  $games = uc($games);
  $boats = uc($takingphotos);
  .
  ...
 }   


  // insert data into database

  $query = "INSERT INTO itsnb_year5questionaire (games, takingphotos,....)   
             VALUES('$games','$takingphotos',......)";
     mysql_query($query) or die(mysql_error());

    echo 'Thanks for your select!';