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

时间:2018-02-14 06:59:21

标签: javascript php mysql

在我的代码中,我使用while循环从数据库中检索数据,因此我可以在db中拥有所有$FormData['fullname']

我想要做的是,让每个名字显示在页面上并且也可以点击,这样当有人点击名字时,它会得到他们的user_id并提取有关他们的信息。

我遇到的问题是,我无法找到一种方法,以便在用户点击名称时可以获得user_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 个答案:

答案 0 :(得分:1)

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

<?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实现此目的。

答案 1 :(得分:1)

到目前为止,我可以看到你正在尝试点击while loop内的一个按钮,我不会说这是一个糟糕的方法,但我建议你不要这样做。从您的代码中我可以看到您缺乏理解postget请求向here学习。除此之外,你需要知道网址的过渡。它实际上是如何工作的无论如何,我没有给出一个示例代码。我希望它能帮助你理解这个概念。

  $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 :(得分:0)

您需要了解服务器端语言(php)和客户端语言(javascript)。

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

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

  1. 将所有信息存储到隐藏输入或按钮属性中。并通过javascript获取user_id。
  2. 使用ajax调用另一个可以通过user_id选择所需信息的php。
  3. 都使用javascript或jquery。所以你必须了解它们。