使用 PHP 和 SQL 从数据库动态生成无序列表
Posted
技术标签:
【中文标题】使用 PHP 和 SQL 从数据库动态生成无序列表【英文标题】:Dynamic generation of unordered list from database with PHP and SQL 【发布时间】:2022-01-06 14:22:50 【问题描述】:我从 2021 年 4 月开始编写代码,所以我对此非常陌生。正在准备期末考试,我需要您的宝贵帮助!我想从数据库中生成一个动态列表,其中包含 2 个连接表(用户和兴趣)。这两个表都包含“ID_user”,将它们作为外键链接。这个想法是用户登录后,个人资料页面会显示用户在注册时选择的所有兴趣。目前我只能显示最后选择的兴趣,而不是全部。
这是我的 php:
$request2 = "SELECT `interest`.`name_Interest`
FROM `interest`
INNER JOIN `users`
ON `interest`.`ID_user` = `users`.`ID_user`
WHERE `pseudo` = '".$url_pseudo."'
";
$resultat2 = mysqli_query($connexion, $request2) or die (mysqli_error($connexion));
$nb_resultat2 = mysqli_num_rows($resultat2);
if ($nb_resultat2 > 0)
while ($row = mysqli_fetch_array($resultat2))
$name_Interest = $row["name_Interest"];
这是显示响应的 html:
enter image description here
这是我的数据库:
enter image description here
知道为什么我只能得到 1 个值吗?
enter image description here
提前致谢
【问题讨论】:
【参考方案1】:您的 while 循环为循环的每次迭代写入相同的变量;
while ($row = mysqli_fetch_array($resultat2))
$name_Interest = $row["name_Interest"];
这将使$name_Interest
包含循环完成后数据库中的最后一个值。
要解决此问题,您需要保留兴趣名称列表 - 这可以通过使用数组来实现。 PHP Array Documentation
// Declares the empty array
$interests = [];
// Loop through database results
while ($row = mysqli_fetch_array($resultat2))
// Add this value to the array
$interests[] = $row["name_Interest"];
现在,$interests
将保存数据库中的所有值!
您需要在 HTML 中以不同的方式打印这些值,方法是遍历数组中的所有值并一次打印一个: (PHP foreach documentation)
<ul>
<?php foreach ($interests as $interest) ?>
<li><?php echo $interest; ?></li>
<?php ?>
</ul>
【讨论】:
【参考方案2】:解决方案 简单地将所有用户兴趣存储在数组中,然后在页面上迭代显示。
代码:
$user_interests=array();
while ($row = mysqli_fetch_array($resultat2))
$user_interests[] = $row["name_Interest"];
现在 $user_interests 数组保存了用户加入后的所有兴趣。
最后一次循环
<?php foreach ($user_interests as $interest) ?>
<p><?php echo $interest; ?></p>
<?php ?>
【讨论】:
以上是关于使用 PHP 和 SQL 从数据库动态生成无序列表的主要内容,如果未能解决你的问题,请参考以下文章