Php 显示不同的按钮或刷新
我一直在尝试为论坛帖子制作一个类似/不同的按钮,我取得了一些成功。下面的代码可以正常工作,但我无法刷新页面 例如,当我单击submit按钮时,数据库会更新,但不会显示Distanced按钮。 如果我刷新页面,就会出现“不相似”按钮,现在有一种方法可以通过jquery实现这一点,因此单击“相似”按钮后,它将显示“不相似”按钮Php 显示不同的按钮或刷新,php,jquery,Php,Jquery,我一直在尝试为论坛帖子制作一个类似/不同的按钮,我取得了一些成功。下面的代码可以正常工作,但我无法刷新页面 例如,当我单击submit按钮时,数据库会更新,但不会显示Distanced按钮。 如果我刷新页面,就会出现“不相似”按钮,现在有一种方法可以通过jquery实现这一点,因此单击“相似”按钮后,它将显示“不相似”按钮 /* Check Database */ $likes = DB::run("SELECT * FROM likes WHERE id=? AND lid=? AND uid
/* Check Database */
$likes = DB::run("SELECT * FROM likes WHERE id=? AND lid=? AND uid=? AND pid=?", [1, 1, $CURUSER['id'], $row['id']])->fetch();
/* Check Result */
var_export($likes);
/* If No Result Like */
if (!$likes) {
echo
"<form action='' method='post'>
<input type='submit' name='like' value='Like' />
</form>";
if(isset($_POST['like']))
{
DB::run("INSERT INTO likes (id, lid, uid, pid) VALUES (?, ?, ?, ?)", [1, 1, $CURUSER['id'], $row['id']]);
}
}
/* If Result UnLike */
if ($likes) {
echo
"<form action='' method='post'>
<input type='submit' name='unlike' value='Unlike' />
</form>";
if(isset($_POST['unlike']))
{
DB::run("DELETE FROM likes WHERE id=? AND lid=? AND uid=? AND pid=?", [1, 1, $CURUSER['id'], $row['id']]);
}
}
/* Show Results */
echo '</br>';
echo $likes['id'];
echo $likes['1id'];
echo $likes['uid'];
echo $likes['pid'];
没有人可以帮助您,因为我们看不到您的$likes结果,下面是伪代码,它是如何工作的,其中$likes硬编码为false表示开始时不喜欢,当您单击“喜欢”时,将显示“不喜欢”按钮。获得此信息后,您应该调试$likes在每一时刻包含的内容,以及为什么它没有输入您的if语句:
<?php
/* Check Database */
$likes = false;
/* Check Result */
var_export($likes);
/* If No Result Like */
if (!$likes) {
echo
"<form action='' method='post'>
<input type='submit' name='like' value='Like' />
</form>";
if(isset($_POST['like']))
{
$likes = true;
}
}
/* If Result UnLike */
if ($likes) {
echo
"<form action='' method='post'>
<input type='submit' name='unlike' value='Unlike' />
</form>";
if(isset($_POST['unlike']))
{
$likes = false;
}
}
/* Show Results */
显示表单后会修改数据库,因此页面上不会反映新的like状态。一种解决方案是在检查类似状态和显示表单之前修改数据库
下面,我在提交后使用PHP的刷新页面。刷新页面不是绝对必要的,但是如果用户刷新页面,它确实有助于防止重复提交。这就是我们所知道的
Post/Redirect/Get PRG是一种web开发设计模式,它允许在表单提交后重新加载、共享或添加书签,而不会产生不良影响,例如下次提交表单
您正在从数据库中选择数据,并在此基础上显示like按钮,然后再进行插入…
if(isset($_POST['like'])) {
DB::run("INSERT INTO likes (id, lid, uid, pid) VALUES (?, ?, ?, ?)", [1, 1, $CURUSER['id'], $row['id']]);
header('Location: '.$_SERVER['REQUEST_URI']);
exit;
} elseif (isset($_POST['unlike'])) {
DB::run("DELETE FROM likes WHERE id=? AND lid=? AND uid=? AND pid=?", [1, 1, $CURUSER['id'], $row['id']]);
header('Location: '.$_SERVER['REQUEST_URI']);
exit;
}
/* Check Database */
$likes = DB::run("SELECT * FROM likes WHERE id=? AND lid=? AND uid=? AND pid=?", [1, 1, $CURUSER['id'], $row['id']])->fetch();
if (!$likes) {
/* If No Result Like */
echo "<form action='' method='post'>
<input type='submit' name='like' value='Like' />
</form>";
} else {
/* If Result UnLike */
echo "<form action='' method='post'>
<input type='submit' name='unlike' value='Unlike' />
</form>";
}