我有一个从数据库输出的产品列表,我想有一个选项让产品成为“最喜欢的”产品,并在最喜欢的值为“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();
}
答案 0 :(得分:1)
因为它是一个布尔值,你可以使用bang
(!)来反转或切换它
如,
UPDATE products SET favourite = !favourite WHERE id='$id_to_favourite' LIMIT 1
这只会将0更改为1或1至0
答案 1 :(得分:1)
请注意,在您的查询中实际使用它之前,您应该始终对所谓的整数输入使用intval()
(xss无处不在!)。也就是说,只需在列前使用!
运算符(true = 1,false = 0,因此您可以使用这些运算符)。
答案 2 :(得分:0)
您可以使用三元运算符
$fav = (isset($row["favourite"]) && $row['favourite'] == '0') ? 1 : 0;
然后像这样运行你的查询
"UPDATE products SET favourite = $fav WHERE id='$id_to_favourite' LIMIT 1"