[英]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.