[英]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运行。
在您的情况下,有两种方法。
都使用javascript或jquery。 因此您必须了解它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.