0

我有一个从数据库输出的产品列表,我希望可以选择将产品设为“收藏”产品,并在收藏值为“1”时显示彩色图标,或在“0”时显示灰色图标因为不是最喜欢的。

我的问题是如何将变量更改/切换/更新为“0”,如果它当前为“1”,以及如何更改为“1”,当前为“0”且具有相同的href。

我可以使用以下内容正确显示上述内容...

$favourite = $row["favourite"];

switch(strtoupper($favourite))
{
case '0': $favourite_img = 'heart_16-no'; break;
case '1': $favourite_img = 'heart_16'; break;
default: $favourite_img = 'heart_16-no'; break;
}

$fav_img = "<img src='https://www.mysite.com/storeadmin/img/Basic_set_Png/$favourite_img.png'>";

我通过href将数据库中的产品值更新为“1”,并在必要时将以下内容更新为“0”...

//make item favourite
if(isset($_GET['favouriteid'])){
$id_to_favourite = $_GET['favouriteid'];
$sql = mysql_query("UPDATE products SET favourite=1 WHERE id='$id_to_favourite' LIMIT 1") or die (mysql_error());
header("location: inventory_list.php");
exit();
}

我敢肯定这很容易我只是不知道正确的方法,所以可以真正搜索任何参考。

大概是这样的……

if(isset($_GET['favouriteid'])){
  $id_to_favourite = $_GET['favouriteid'];
  if (isset($row["favourite"]) && $row['favourite'] == '0') {
  mysql_query("UPDATE products SET favourite=1 WHERE id='$id_to_favourite' LIMIT 1") or die (mysql_error());
    } else if (isset($row["favourite"]) && $row['favourite'] == '1') {
    mysql_query("UPDATE products SET favourite=0 WHERE id='$id_to_favourite' LIMIT 1") or die (mysql_error());
    }
    header("location: inventory_list.php");
    exit();
    }
4

3 回答 3

1

由于它是一个布尔值,您可以使用bang(!) 来反转或切换它

例如,

UPDATE products SET favourite = !favourite WHERE id='$id_to_favourite' LIMIT 1

这只会将 0 更改为 1,或 1 更改为 0

于 2013-04-22T06:21:34.427 回答
1

请注意,intval()在您的查询中实际使用它之前,您应该始终使用您所谓的整数输入(xss 无处不在!)。也就是说,只需!在列前面使用运算符(true = 1,false = 0,因此您可以使用这些)。

于 2013-04-22T06:23:37.177 回答
0

你可以使用三元运算符

$fav = (isset($row["favourite"]) && $row['favourite'] == '0') ? 1 : 0;

然后像这样运行您的查询

"UPDATE products SET favourite = $fav WHERE id='$id_to_favourite' LIMIT 1"
于 2013-04-22T06:29:18.853 回答