phpmyadmin 用PHP和SQL实现数据库中无序列表的动态生成

yv5phkfx  于 2022-11-09  发布在  PHP
关注(0)|答案(2)|浏览(159)

我在2021年4月开始编写代码,所以我对这个非常陌生。在我的期末考试中,我需要你的宝贵帮助!我想从一个数据库生成一个动态列表,包含2个连接表(用户和兴趣)。这两个表都包含“ID_user”,它将它们作为外键进行链接。其思想是,一旦用户登录,个人资料页面显示了用户在注册时选择的所有兴趣。2目前我只能显示最后选择的兴趣,而不是所有的兴趣。
下面是我的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
先谢了

7qhs6swi

7qhs6swi1#

您的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>
kkih6yb8

kkih6yb82#

Solution Simple将所有用户感兴趣的内容存储在阵列上,然后在页面上的迭代中显示。
编码:

$user_interests=array();
 while ($row = mysqli_fetch_array($resultat2)){

        $user_interests[] = $row["name_Interest"];
    }

现在,$user_interests数组保存了用户的所有兴趣作为join的结果。
最后在它上面循环

<?php foreach ($user_interests as $interest) { ?>
        <p><?php echo $interest; ?></p>
    <?php } ?>

相关问题