所以我想知道这个操作在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/