代码之家  ›  专栏  ›  技术社区  ›  Jagr

PHP在单击回显的html代码时从数据库获取信息

  •  0
  • Jagr  · 技术社区  · 8 年前

    在我的代码中,我使用while循环从数据库中检索数据,以便 $FormData['fullname'] 在db中。

    我想做的是,让每个名字都显示在页面上,并且还可以单击,这样当有人单击一个名字时,它就会得到他们的 user_id 并调出关于他们的信息。

    我面临的问题是,我无法找到一种方法来制作它,以便在哪里可以获得 用户\u id 当用户单击名称时。我试着把 "name" 在按钮属性中,我检查了 isset() 但那没用。

    如果有人能为我找到一种基本的方法,显示所有 fullnames 在我的数据库中,当有人单击某个名称时,它会调出存储在数据库中的有关他们的信息。这是我的密码

    $stmtGet = $handler->prepare("SELECT * FROM formdata");
    $stmtGet->execute();
    while($formData = $stmtGet->fetch()){
    
        echo "<button name='name'>$formData[fullname]</button>";
        if($_SERVER['REQUEST_METHOD'] =="POST"){
    
            if(isset($_POST['name'])){
    
                echo "ok";
            }else{
    
                echo "bad";
            }
        }
    
    }
    
    3 回复  |  直到 8 年前
        1
  •  1
  •   Atik Hashmee    8 年前

    据我所知,你正在试着按下 while loop ,我不会说这是一个糟糕的方法,但我建议你不要这样做。从你的代码中我可以看出你缺乏理解 post get 请求从中学习 here . 除此之外,您还需要了解web url的转换。其实际工作原理。无论如何,我已经给出了一个没有的示例代码。我希望这能帮助你理解这个概念。

      $stmtGet = $handler->prepare("SELECT * FROM formdata");
       $stmtGet->execute();
    while($formData = $stmtGet->fetch(PDO::FETCH_ASSOC)){
    $id  = $formData['formdataid'];
     echo "<a href='somepagename.php?infoid={$id}'>". $formData['fullname']."</a></br>";
    }
    

    现在在somepagename中。php文件或在同一页面中,您可以实际显示示例的详细信息

    if(isset($_GET['infoid'])){
    $stmt = $handler->prepare("select * from formdata where formdataid='"$_GET['infoid']"'");
    $qry = $stmt->execute();
    $row = $qry->fetch(PDO::FETCH_ASSOC);
    echo "<p>id =".$row['formdataid']."</p></br>";
    echo "<p>id =".$row['name']."</p></br>";
    echo "<p>id =".$row['email']."</p></br>";
    echo "<p>id =".$row['address']."</p></br>";
    

    代码未执行,可能有分号或逗号错误警告。你必须自己解决这些问题。上面的这个例子只向您展示了它的工作方式。 如果您仍然有问题,请询问,或查看 documentation

        2
  •  1
  •   Kevin Pimentel    8 年前

    我应该强调,这不是生产代码,在将查询发布到DB之前,应该完全验证输入的数据。你可以这样做。

    <?php
        // Connect
        $connection = mysqli_connect('localhost', 'username', 'password', 'database','port');
        // Grab all users
        $sql = 'SELECT * FROM users';
        $users = mysqli_query($connection, $sql);
    
        if (($_SERVER['REQUEST_METHOD'] == 'POST') && !empty($_POST['user_id'])) {
            $query = "SELECT * FROM users WHERE user_id = {$_POST['user_id']};";
            $user = mysqli_fetch_assoc(mysqli_query($connection, $query));
        }
    ?>
    
    // This only runs if our $user variable is set.
    <?php if (isset($user)) : ?>
        <?php foreach ($user as $key => $value) : ?>
            <span><?= print_r($value) ?></span>
        <?php endforeach; ?>
    <?php endif; ?>
    
    // Display all users in a dropdown and when the button is clicked
    // submit it via post to this page.
    <form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
        <select name="user_id">
            <?php foreach ($users as $user) : ?>
                <option value="<?= $user['user_id'] ?>"><?= $user['name'] ?></option>
            <?php endforeach; ?>
        </select>
        <button type="submit">Submit</button>
    </form>
    

    每次都会刷新您的页面。如果您想拥有一个交互式页面,则需要使用JavaScript/AJAX更新页面元素,而无需重新加载页面。这个示例演示了如何使用PHP和HTML实现这一点。

        3
  •  0
  •   Meow Kim    8 年前

    你需要知道 服务器端语言 (php)和 客户端语言 (javascript)。

    php在加载页面之前运行。当单击某个内容时,它无法运行(使用ajax,它可以)。 大多数没有页面移动的交互都使用javascript运行。

    在您的情况下,有两种方法。

    1. 将所有信息存储到隐藏输入或按钮属性中。并通过javascript通过user\u id获取它们。
    2. 使用ajax调用另一个php,它可以根据user\u id选择您需要的信息。

    两者都使用javascript或jquery。所以你必须了解他们。