Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示不同的按钮或刷新_Php_Jquery - Fatal编程技术网

Php 显示不同的按钮或刷新

Php 显示不同的按钮或刷新,php,jquery,Php,Jquery,我一直在尝试为论坛帖子制作一个类似/不同的按钮,我取得了一些成功。下面的代码可以正常工作,但我无法刷新页面 例如,当我单击submit按钮时,数据库会更新,但不会显示Distanced按钮。 如果我刷新页面,就会出现“不相似”按钮,现在有一种方法可以通过jquery实现这一点,因此单击“相似”按钮后,它将显示“不相似”按钮 /* Check Database */ $likes = DB::run("SELECT * FROM likes WHERE id=? AND lid=? AND uid

我一直在尝试为论坛帖子制作一个类似/不同的按钮,我取得了一些成功。下面的代码可以正常工作,但我无法刷新页面

例如,当我单击submit按钮时,数据库会更新,但不会显示Distanced按钮。 如果我刷新页面,就会出现“不相似”按钮,现在有一种方法可以通过jquery实现这一点,因此单击“相似”按钮后,它将显示“不相似”按钮

/* 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>";

}