在我的代码中,我使用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";
}
}
}
答案 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
内的一个按钮,我不会说这是一个糟糕的方法,但我建议你不要这样做。从您的代码中我可以看到您缺乏理解post
和get
请求向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运行。
在你的情况下,有两种方法。
都使用javascript或jquery。所以你必须了解它们。