基于DB条目的不同按钮

时间:2012-12-13 22:17:51

标签: php mysql sql if-statement

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

它不会显示“添加到收藏夹”,但只显示“从收藏夹中移除”,如果它在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>';

}}

提前致谢! : - )

1 个答案:

答案 0 :(得分: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。