在我的数据库中,我有很多用户。数据库为每个用户存储一个值(图像的URL),无论他是否为红色消息。所有用户都显示在消息下方,因此他们可以在红色时按下他们的名字。我想要的是,当用户点击他的图像时,代码必须根据它的值更改图像的URL。更像是开关。例如: 如果值说“on”,我需要将代码更改为“off”。 如果值为“off”,我需要将代码更改为“on”。
在我的情况下,on是“read.png”,off是“unread.png”。
所有值都通过地址栏发送,我使用$_GET
来获取值。
我的代码:
$sql2 = "SELECT * FROM $tbl_name WHERE id = ".$_GET['id'];
$result2 = mysql_query($sql2);
$url = $_POST['url']; // read.png
$herstel = $_POST['herstel']; // unread.png
$tabel = $_POST['tabel']; // urlJef
$tabel_content = $result2[$tabel]; // content from $tabel
if ($tabel_content == $url){
$sql = "UPDATE " . mysql_real_escape_string($tbl_name) .
" SET ".$_GET['tabel']." = '".$_GET['herstel'].
"' WHERE id = ".$_GET['id'];
$result = mysql_query($sql);
}
else if ($tabel_content == $herstel) {
$sql = "UPDATE " . mysql_real_escape_string($tbl_name) .
" SET ".$_GET['tabel']." = '".$_GET['url'].
"' WHERE id = ".$_GET['id'];
$result = mysql_query($sql);
}
修改
if($result){
echo "top.location.href = 'index.php';";
}else {
echo "That didn't work";
}
两个代码都是分开工作的。因此,如果我只创建一个if-statement
它就可以了。两个代码都是。但不知何故,如果我混合他们两个(通过添加“else if语句”),只有两个中的一个工作。
我错过了什么?
答案 0 :(得分:0)
修改强>
您无法同时使用"POST"
和"GET"
方法发送数据。它必须只是其中之一,但在您的代码中,您使用$_POST
和$_GET
来检索该数据。您必须使用适当的数组来检查您使用哪种方法发送数据,或者使用适用于它们的$_REQUEST
。
由于您使用GET
方法发送数据,因此您的代码应如下所示:(每_POST
更改为_GET
)。
此外,您无法以这种方式从$ tabel获取内容($tabel_content = $result2[$tabel];
)。您应该使用$row = mysql_fetch_assoc($result2);
然后$tabel_content = $row[$tabel];
$sql2 = "SELECT * FROM $tbl_name WHERE id = ".$_GET['id'];
$result2 = mysql_query($sql2);
$url = $_GET['url']; // read.png
$herstel = $_GET['herstel']; // unread.png
$tabel = $_GET['tabel']; // urlJef
$row = mysql_fetch_assoc($result2);
$tabel_content = $row[$tabel];
if ($tabel_content == $url){
$sql = "UPDATE " . mysql_real_escape_string($tbl_name) .
" SET ".$_GET['tabel']." = '".$_GET['herstel'].
"' WHERE id = ".$_GET['id'];
$result = mysql_query($sql);
}
else if ($tabel_content == $herstel) {
$sql = "UPDATE " . mysql_real_escape_string($tbl_name) .
" SET ".$_GET['tabel']." = '".$_GET['url'].
"' WHERE id = ".$_GET['id'];
$result = mysql_query($sql);
}