0

「お気に入りに追加」のボタンが必要なこのWebサイトで作業しています。すでに「お気に入りに追加」を押している場合は、「お気に入りから削除」と表示されます。

「お気に入りに追加」は表示されませんが、SQLデータベースにある場合は「お気に入りから削除」のみが表示されます。

私はそれが私の「else」コードで何かだと思います。

これが私のコードです:

$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 ループは 1 回も反復しません。

あなたは本質的にこれをやっています:

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 に答える