如何在我的HTML表单中显示选定的用户输入?

时间:2019-01-03 23:01:51

标签: php html mysql

我有一个PHP表单,可将​​用户数据保存到MySQL数据库。

我想向用户显示有关他们的哪些信息,并以表格形式显示,以便他们更新或编辑值。

我在通过PHP循环从数据库中获取用户保存的数据并将其显示给用户以便他们进行更新或编辑时遇到问题。

下面是一段代码:

            <?php
                $id = $_GET['id'];
                $conn = mysqli_connect('localhost', 'phpmyadmin', 'Test@2000', 'user');

                $sql1 = "SELECT * FROM usr WHERE id='$id'";
                $result = mysqli_query($conn, $sql1);
                $row = mysqli_fetch_assoc($result);
            ?>

            <fieldset><label>Birthday</label>
                <select name="birthday">
                <?php
                    for ($i = 1300; $i <= 1397; $i++) {
                        echo "<option >$i</option>";
                    }
                ?>
                </select>
                    <fieldset>
                <button name="btn" type="submit" id="contact-submit">Submit</button>
            </fieldset>
        </form>
    </div>
</body>
</html>

我想在用户的编辑输入中显示用户最初选择的生日值,以便用户进行编辑或更新。

3 个答案:

答案 0 :(得分:0)

<select>子元素<option>确实支持selected标签以指示它是选定的值,因此通过像<option value='1' selected>这样添加选定的标签,您可以作为选定值。

您还可能希望将$i值添加到option元素中,以确保正确提交值。

Mozilla文档: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select

答案 1 :(得分:0)

我以这种方式编辑了您的代码。

<?php
$id = $_GET['id'];
$conn = mysqli_connect('localhost', 'phpmyadmin', 'Test@2000', 'user');

$sql1 = "SELECT * FROM usr WHERE id='$id'";
$result = mysqli_query($conn, $sql1);
$row = mysqli_fetch_assoc($result);
?>

        <fieldset><label>Birthday</label>
            <select name="birthday">
            <?php for ($i = 1300; $i <= 1397; $i++) {
                echo "<option" . (($i == $row['birthdayYear']) ? 'selected="true"' : '') . ">$i</option>";
            }
            ?>
            </select>
                <fieldset>
            <button name="btn" type="submit" id="contact-submit">Submit</button>
        </fieldset>
    </form>
</div>
</body>
</html>

希望这会有所帮助,谢谢。

答案 2 :(得分:0)

A。)使用PDO模块

今天的最佳实践是使用准备好的语句来避免SQL注入。这是通过PDO对象完成的。

设置为选择autocomplete =“ off”属性,因为Firefox显然存在一个与selected =“ selected”有关的错误,需要对此进行设置。

看看是否是用户的生日,我们可以使用intval进行比较。

<?php
$id = $_GET['id'];

$host = 'localhost';
$username = 'phpmyadmin';
$password = 'Test@2000';
$db_name = 'user';

$conn = new PDO('mysql:host:=' . $host . '; dbname=' . $db_name, $username, $password);

$sql1 = "SELECT * FROM usr WHERE id = :id;";
$stmt = $conn->prepare($sql1);
$stmt->bindParam(':id', $id);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
?>
        <fieldset><label>Birthday</label>
            <select name="birthday" autocomplete="off">
            <?php for ($i = 1300; $i <= 1397; $i++) {
                if($i === intval($row['birthdayYear'])){
                  echo "<option selected='selected'>$i</option>";
                } else {
                  echo "<option>$i</option>";
                }
            }
            ?>
            </select>
                <fieldset>
            <button name="btn" type="submit" id="contact-submit">Submit</button>
        </fieldset>
    </form>
</div>
</body>
</html>

B。)请至少尝试选项A.),但如果它不起作用:

<?php
$id = $_GET['id'];

$conn = mysqli_connect('localhost', 'phpmyadmin', 'Test@2000', 'user');

$sql1 = "SELECT * FROM usr WHERE id='$id'";
$result = mysqli_query($conn, $sql1);
$row = mysqli_fetch_assoc($result);
?>
        <fieldset><label>Birthday</label>
            <select name="birthday" autocomplete="off">
            <?php for ($i = 1300; $i <= 1397; $i++) {
                if($i === intval($row['birthdayYear'])){
                  echo "<option selected='selected'>$i</option>";
                } else {
                  echo "<option>$i</option>";
                }
            }
            ?>
            </select>
                <fieldset>
            <button name="btn" type="submit" id="contact-submit">Submit</button>
        </fieldset>
    </form>
</div>
</body>
</html>