多个选定值插入数据库

时间:2017-03-15 09:43:10

标签: php mysql

您好我一直在寻找我当前问题的网站。我正在一个你有多个选择的页面上工作,所有选择的信息都必须存储在一个Sql数据库中,但是多选中的每一个必须在它自己的行上,而其他参数保持最新。

<form action="OpretRen.php" method="POST">
   <select name="area">
    <option value="Christiansminde">Christiansminde</option>
    <option value="Boulevarden">Boulevarden</option>
    </select>
    
    <select name="rum[]" multiple="multiple">
        <option value="Værelse 3">Værelse 3</option>
        <option value="Værelse 5">Værelse 5</option>
        <option value="Værelse 7">Værelse 7</option>
        <option value="Værelse 9">Værelse 9</option>
        <option value="Værelse 11">Værelse 11</option>
        <option value="Værelse 13">Værelse 13</option>
        <option value="Værelse 15">Værelse 15</option>
        <option value="Værelse 17">Værelse 17</option>
        
      </select>
   <input type="date" name="dato">
 <input type="hidden" name="ren" value="">
<input type="checkbox" name="ren" value="Skal rydes op"> Skal Rengøres <br>
      
  <input type="submit" name="opret">
</form>

例如你应该能够选择“Boulevarden”多个房间的位置“værelse3,værelse11”一个日期,它应该在数据库1行创建2行“værelse3”和一个værelse11位置和日期保持不变。

这是我的php

$Area = $_POST['area'];
$Rum = $_POST['rum'];
$Dato = $_POST['dato'];
$ren = $_POST['ren'];

// indsætter information til databasen
$sql = "INSERT INTO `oprydning`(`Bygning`, `Rum`, `Dato`, `Rent`) VALUES ('{$Area}','{$Rum}','{$Dato}','{$ren}')";

我尝试了在谷歌和网上发现的各种解决方案,但没有任何效果,如果有人知道这可能如何工作,请帮助:)

2 个答案:

答案 0 :(得分:0)

如果您创建var_dump($_POST);,您会注意到多选在$_POST['rum']中创建了一个数组,其中包含每个选择的键。 如果您创建PHP代码以循环执行此操作,则可以添加多行,而其余行保持不变。

<?php
$Area = $_POST['area'];
$Dato = $_POST['dato'];
$ren = $_POST['ren'];

$lastKey = key( array_slice( $_POST['rum'], -1, 1, TRUE ) );

$sql = "INSERT INTO `oprydning`(`Bygning`, `Rum`, `Dato`, `Rent`) VALUES ";
foreach($_POST['rum'] as $k=>$Rum){
    $sql .= "('{$Area}','{$Rum}','{$Dato}','{$ren}')";
    if($k !== $lastKey){
      $sql .= ',';
    }
}
// Run $sql

但是,我建议您阅读一些最佳实践和教程。

答案 1 :(得分:0)

试试这个:

foreach ($Rum as $item) {
    $sql = "INSERT INTO `oprydning`(`Bygning`, `Rum`, `Dato`, `Rent`) VALUES ('{$Area}','{$item}','{$Dato}','{$ren}')";

    //insert $sql in db

}

这将为您的$ Rum数组中的每个值在您的db中创建一条新记录,如您所愿。