使 HTML 行可点击,然后显示来自数据库的行用户配置文件,用于使用 while 循环创建的表

Posted

技术标签:

【中文标题】使 HTML 行可点击,然后显示来自数据库的行用户配置文件,用于使用 while 循环创建的表【英文标题】:Make HTML row clickable then show that rows users profile from database, for a table that was created with a while loop 【发布时间】:2021-06-15 09:28:55 【问题描述】:

我创建了一个 html 用户表,使用 while 循环从数据库中获取表数据(动态表), 但我想让行或至少行的第一个单元格可点击,当点击它时,它会打开另一个页面,显示点击行中的用户信息,有点像用户配置文件。 显示信息的页面也是动态的,并根据单击的行从数据库中检索数据。这是我的表格代码


<table class="container">
    <thead>
        <tr>
            <th><h1>Name</h1></th>
            <th><h1>Code</h1></th>
            <th><h1>Votes Today</h1></th>
            <th><h1>Total Votes</h1></th>
        </tr>
    </thead>
    <?php
$conn=mysqli_connect("localhost","root","","voting");
    if(!$conn)
    die("connection error");
$sql = "SELECT `name`,`code`,`votetoday`,`total` from contestent";
$result = $conn-> query($sql);
if ($result-> num_rows > 0) 
    while ($row = $result-> fetch_assoc())
    
    echo "<tr><td>" . $row["name"] . "</td><td>" . $row["code"] . "</td><td>" . $row["votetoday"] . "</td><td>".
     $row["total"] . "</td><tr>";

echo "</table>";

?>
    
</table>

这是链接应该转到的页面代码的一部分。显示用户信息

<?php
$sql1 = mysqli_query($result, "SELECT name, code, Age from contestent,images where 
contestent.code = images.cont_id and images.cont_id=3"); 
// the number three in cont_id=3 shoud be a variable with a value depending on which row was clicked from the table.
while($rows1 = mysqli_fetch_array($sql1))

$contName = $rows1 ['name'];
$contAge = $rows1 ['Age'];
$contCode = $rows1 ['code'];
echo "<h3> Name: ". $contName."<br>";
echo "Age: ".$contAge."<br>";
echo "Code: ".$contCode;

?>

【问题讨论】:

注意:object-oriented interface to mysqli 明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆,因为缺少单个i 会导致麻烦。使用这种风格:$db = new mysqli(…)$db-&gt;prepare("…") 程序接口是 PHP 4 时代的产物,在新代码中使用时看起来很笨重且不合适。 ????如果您刚刚开始使用 PHP 并想构建应用程序,我强烈建议您查看各种 development frameworks 以查看是否可以找到适合您的风格和需要。它们有各种风格,从 Fat-Free Framework 这样的轻量级到像 Laravel 这样的更全面。这些为您提供了具体的工作示例以及如何编写代码和组织项目文件的指导。 谈论动态和PHP就像谈论河流和岩石。至少在今天的动态 的含义中。您的表格也不是 dynamic 也不是您在尝试制作它时显示任何 javascript 代码。始终使用 PDO 准备好的语句。此外,如今,您无需将后端代码混杂到前端。创建 API - 获取用户、更新状态、更新 view 元素。将 listeners 添加到您的 FE 元素,向后端 route 发送 request - 取回您的 user_id data异步请求,AJAX,无刷新。动态的。 【参考方案1】:

您可以使用GET 方法解决此问题。

GET 方法发送附加到页面请求的编码用户信息。页面和编码信息由 ? 分隔。字符。

http://www.test.com/profile.php?name=Adam&code=25

profile.php 页面中,您可以获取值,

<?php
   if( $_GET["name"] || $_GET["code"] ) 
      echo "Welcome ". $_GET['name']. "<br />";
      echo "Your Code ". $_GET['code'];
      
      exit();
   
?>

因此 HTML 代码段将跟随,

<table class="container">
    <thead>
        <tr>
            <th><h1>Name</h1></th>
            <th><h1>Code</h1></th>
            <th><h1>Votes Today</h1></th>
            <th><h1>Total Votes</h1></th>
        </tr>
    </thead>
    <?php
$conn=mysqli_connect("localhost","root","","voting");
    if(!$conn)
    die("connection error");
$sql = "SELECT `name`,`code`,`votetoday`,`total` from contestent";
$result = $conn-> query($sql);
if ($result-> num_rows > 0) 
    while ($row = $result-> fetch_assoc())
    
    echo "<tr><td>" . $row["name"] . "</td><td>" . $row["code"] . "</td><td>" . $row["votetoday"] . "</td><td>".$row["total"] . "</td>
<td><a href='profile.php?name=".$row["name"]."&code=".$row["code"]."'>View Profile</a></td><tr>";

echo "</table>";

?>
</table>

您可以根据需要添加更多GET 变量。

【讨论】:

谢谢 Optimus prime,我使用了您的答案,当我单击查看配置文件时,我收到一条错误消息(警告:C:\xampp\htdocs\voting\profile. php 在第 2 行)和数组键代码相同。虽然在地址栏上我得到了这个 (localhost/voting/profile.php/name=Sami&code=21) 请告诉我我是新手。 我已经编辑了我的答案。现在会好的。之前生成的url是错误的=> localhost/voting/profile.php/name=Sami&code=21 而正确的url应该是=> localhost/voting/profile.php?name=Sami&code=21 非常感谢,擎天柱,现在可以正常使用了,非常感谢您的帮助。

以上是关于使 HTML 行可点击,然后显示来自数据库的行用户配置文件,用于使用 while 循环创建的表的主要内容,如果未能解决你的问题,请参考以下文章

如何使 ttk.Treeview 的行可编辑?

DEV GridControl怎样使GridView中满足某个条件的行可编辑,其余行不可编辑?

如何在 Visual Studio 中从数据库中获取数据(使用 C#)时使 HTML 行可点击

使检票口数据表的整行可点击

如何使引导表行可点击? [复制]

如何使整行可点击?