0

我正在使用以下多选框从用户那里获取输入,然后将其发布到我的 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端是这样的>>

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

4 回答 4

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 个

结果

在此处输入图像描述

警告

您的代码容易受到 SQL 注入的影响 ,也不mysql_*推荐使用函数,PDO或者MySQLi

于 2012-12-04T14:40:28.033 回答
1

Because $usedfor is contain the array you can directly use it in foreach to save the each value in the value.Try this it may help you:

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

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

}
于 2012-12-04T14:47:24.177 回答
1

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

于 2012-12-04T14:40:50.750 回答
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!';
于 2012-12-04T14:54:50.557 回答