簡體   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