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