繁体   English   中英

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

[英]PHP get information from database when echoed html code is clicked

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

我想要做的是,每个名称都显示在页面上,并且也可以单击,因此当某人单击名称时,它会获得其user_id并提取有关它们的信息。

我遇到的问题是我无法找出一种制作方法,因此当用户单击名称时可以在哪里获取user_id 我尝试在button属性中放置一个"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";
        }
    }

}

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

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

据我所知,您正在尝试按下while loop内的一个按钮,我不会说这是一个不好的方法,但是我建议您不要这样做。 从您的代码中,我可以看到您对post缺乏理解,并get这里 get请求。 除此之外,您还需要了解网址的转换。 它如何实际工作。 无论如何,我给了没有的示例代码。 我希望它能帮助您理解这个概念。

  $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>";

代码未执行,可能有分号或逗号错误警告。 您必须自己修复这些问题。 上面的示例仅向您展示了它的工作方式。 如果仍然有问题,请询问或参阅说明文件

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

php在页面加载之前运行。 当它本身单击某物时,它不能运行(使用ajax,可以)。 大多数没有页面移动的交互都使用javascript运行。

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

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

都使用javascript或jquery。 因此您必须了解它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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