PHP $_POST 值拆分为两个属性表

标签 php mysql

所以我想知道这个操作在Php中是否可行。 我只是使用 php 语言将数据注入(inject)到我的数据库中。

这是表格(非常简单):

<form action="Form2.php" method="post" id="">
<div id="Formulaire1">
<div id="Titre">
  <div class="Id">  Identifiant </div>
  <div class="Ch">  Code Horaire </div>
  <div class="Date">    Date </div>
  <div class="PlH"> Plage Horaire</div>
</div>
<div id="Box">
<input type="text" name="Identifiant"id="Identifiant" ></input>

<select name="CodeHoraire" id='CodeHoraire'>
    <option value="V1">V1</option>
    <option value="V2">V2</option>
    <option value="V3">V3</option>
    <option value="V5">V5</option>
    <option value="V6">V6</option>
    <option value="ST">ST</option>
</select>

<input type="date" max="2020-01-01" min="2010-01-01" name="the_date" id="the_date">
</input>

<select name="PlageHoraire" id="PlageHoraire">
    <option value="V1">De 18h00 à 24h00</option>
    <option value="V2">De 00h00 à 07h00</option>
</select>
(....there are 4 more inputs )
</div>
<input type="submit" id="Submit" value="Envoyer" />
</form>

所以我有一个名为“Formulaire”的表,其中有 10 个属性:

IF(isset($_POST['UnitList'])
    AND isset($_POST['Catsoin'])
    AND isset($_POST['Soin'])
    AND isset($_POST['Duree']))
{ 
header('Location: Redirection.php');

    mysqli_query($connexion,"Insert into formulaire
    (
        Form_ID,
        identifiant,
        Ch,
        Date,
        Unite,
        Catsoin,
        Soin,
        Duree,
        Debutsoin,
        Finsoin
    )
    VALUES
    (
        NULL,
         '".$_COOKIE['Identifiant']."',
         '".$_COOKIE['CodeHoraire']."',
         '".$_COOKIE['the_date']."',
         '".$_POST['UnitList']."',
         '".$_POST['Catsoin']."',
         '".$_POST['Soin']."',
         '".$_POST['Duree']."',
         '".$_COOKIE['PlageHoraire']."',
        NULL
    )") or die(mysqli_error($connexion)) ;
    }

?>

我的注入(inject)运行良好,但我必须做一些真正新的事情:Debutsoin 和 Finsoin 表的最后两个属性确实在我的表单中仅指向一个选择的值:

<select name="PlageHoraire" id="PlageHoraire">
   <option value="V1">De 18h00 à 24h00</option>
   <option value="V2">De 00h00 à 07h00</option>
</select>

因此,例如,当客户端选择第一个选项值“De 18h00 à 24h00”时,这个只有一个值必须拆分为两个表属性:“18h00”到 Debutsoin 和“24h00”到 Finsoin

我真的不太习惯用

  If($_POST['PlageHoraire']=="de 18h00 à 24h00")
  {
       Insert into tableFormulaire...
  }

但是,如果您有解决方案,即使有 IF,我也会听到 :) 感谢您的关心。

最佳答案

由于您要定义用户可以选择的值,因此将可用值存储在 PHP 中是最简单的方法。

$plageHoraire = array(
  'v1' => array(
    'from' => '18h00',
    'to' => '24h00'
   ),
  'v2' => array(
    'from' => '00h00',
    'to' => '07h00'
   )
);

现在您可以遍历数组并创建选项标签:

<select name="PlageHoraire" id="PlageHoraire">
<?php foreach ($plageHoraire as $id => $times) { ?>
  <option value="<?=$id?>">De <?=$times['from']?> à <?=$times['to']?></option>
<?php } ?>
</select>

这将为您提供所需的 HTML 输出。现在,提交后您可以使用数组从 ID 中获取实际值:

$times = $plageHoraire[$_POST['PlageHoraire']];
$from = $times['from'];
$to = $times['to'];

您可以在 SQL 查询中使用这些值。

旁注:您的代码对 SQL 注入(inject)是开放的。你应该看看prepared statements使您的代码更安全。

关于PHP $_POST 值拆分为两个属性表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25969483/

相关文章:

php - 获取与 Eloquent Laravel 的 hasMany 关系

php - 使用一个过滤器清理 [code] 标签外部的内容,并使用另一个过滤器清理 [code] 标签内部的内容

php - 带有两个 SELECT 语句的 INSERT

Mysql连接问题

mysql - 使用嵌套集模型时跟踪更改

php - 发帖,从mysql表中获取数据

PHP 多维数组排序

php - Zend form-元素错误addmultioption

python:查询mongodb数据库以查找未知字段下的特定值

mysql - 优化派生表上的连接 - EXPLAIN 在本地和服务器上不同