0

我正在这个网站上工作,我想要一个“添加到收藏夹”按钮,如果您已经按下“添加到收藏夹”,它应该显示“从收藏夹中删除”

如果它在 SQL 数据库中,它不会显示“添加到收藏夹”,但只会显示“从收藏夹中删除”。

我认为这与我的“其他”代码有关。

这是我的代码:

$tbl_name="favorit";
$usrname=$_SESSION['UserIN'];

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name WHERE email='$usrname' AND type='drink'";
$result=mysql_query($sql);

while($rows=mysql_fetch_array($result)){

$isadmin=$rows['typeid'];

if($isadmin===$idno){
echo '<a class="btn" href="../includes/sletfavoritdrink.php?drink='.$idno.'">Fjern fra favorit</a>';

} else {

echo '<a class="btn" href="../includes/favoritdrink.php?drink='.$idno.'">Tilføj til favorit</a>';

}}

提前致谢!:-)

4

1 回答 1

1

由于您的 if() 语句位于迭代结果集的 while() 循环内,因此当没有要迭代的结果集时,这两个条件都不会运行。因此,如果用户没有最喜欢的饮料,那么查询将返回一个空结果集,并且 while 循环永远不会运行一次迭代。

您实际上是在这样做:

foreach row in the set {
    if condition then
        branch 1
    else
        branch 2
}

但是集合中什么都没有,所以 if() 永远不会运行。你可以这样做:

$result = mysql_query($sql);
if (mysql_num_rows($result)) {
    // user has a favorite, show "remove" button
} else {
    // user doesn't have a favorite, show "add" button
}

另请注意,不推荐使用 mysql_* 函数。您应该使用 mysqli 或 PDO。

于 2012-12-14T01:34:32.447 回答