繁体   English   中英

从帖子表单获取数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM