[英]Get data from a post form
我不明白为什么我不能在这段代码中使用我的最后一个表格。 我使用SELECT列表生成了一个表单,以选择要更新的成员,并且该表单可以工作,但是我不知道为什么不能使用该表单中的数据。 实际上,我什至无法回声(请参见echo "TEST";
最后,提交表单时没有任何反应)。
<?php $mysqli = new Mysqli("localhost", "root", "", "repertoire"); ?>
<form method="post" action="">
<label>Modifier</label>
<select name='id_modif'>
<?php
$resultat = $mysqli->query("SELECT * FROM annuaire");
while($select = $resultat->fetch_assoc()){
echo "<option value=". $select['id_annuaire'] . ">" . $select['prenom'] . " " . $select['nom'] . "</option>";
}
?>
</select>
<input type ="submit" name="modifier">
</form>
<br>
<?php
if (isset($_POST['modifier'])){
//print_r($_POST);
$resultat = $mysqli->query("SELECT * FROM annuaire WHERE id_annuaire = '$_POST[id_modif]'");
while ($modif = $resultat->fetch_assoc()) {
echo '<form method="post" action="">
<label for="nom">Nom *</label><br>
<input type="text" name="nom" value="' . $modif['nom'] . '"> <br>';
echo '<label for="prenom">prenom *</label><br>
<input type="text" name="prenom" value="' . $modif['prenom'] . '"> <br>';
echo '<label for="telephone">telephone *</label><br>
<input type="text" name="telephone" value="' . $modif['telephone'] . '"> <br>';
echo '<label for="profession">profession *</label><br>
<input type="text" name="profession" value="' . $modif['profession'] . '"> <br>';
echo '<label for="ville">ville *</label><br>
<input type="text" name="ville" value="' . $modif['ville'] . '"> <br>';
echo '<label for="codepostal">codepostal *</label><br>
<input type="text" name="codepostal" value="' . $modif['codepostal'] . '"> <br>';
echo '<label for="adresse">adresse *</label><br>
<textarea name="adresse">' . $modif['adresse'] . '</textarea> <br>';
echo '<label for="date_de_naissance">Date de naissance</label><br>
<input type="date" name="date_de_naissance" value="' . $modif['date_de_naissance'] . '"><br>';
echo '<label for="sexe">sexe</label><br>
<input type="radio" name="sexe" class="sexe" value="m" checked>Homme
<input type="radio" name="sexe" classe="sexe" value="f">Femme<br>';
echo '<label for="description">description *</label><br>
<textarea name="description">' . $modif['description'] . '</textarea> <br>';
echo '<input type="submit" name="valider_modif" value="Modifier"> <br>';
}
if (isset($_POST['valider_modif'])){
echo "TEST";
}
}
?>
您有2个表单,并且没有用</form>
关闭第二个</form>
您的第二个if
检查位于另一个检查之内,因此仅在同时设置$_POST['modifier']
和$_POST['valider_modif']
。 但是您的第二种形式不会在任何地方发送modifier
。
您可以在第二个表单中添加一个隐藏字段:
<input type="hidden" name="modifier" value="1" />
或者,如果您不想再次显示第二个表单, if
其移到另一个表单之外。
同样,您不应直接在SQL查询中使用$_POST
值,以免受到SQL注入的影响。 应该先使用mysqli_real_escape_string
类的函数对值进行转义。
花了我很长时间来检查您的代码。 好的。 第一件事 尽量不要回显太多的html标记。 它只会使您编写世界上最笨拙的代码。 根据我的收集,单击第一个按钮时会出现“修改器”按钮。 如果要查看TEST消息,您需要做的是将其从if语句中删除,因为Buttons就像一个XOR门。 设置另一个将设置另一个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.