php - 增加值按钮 "mrk2"

标签 php html mysql sql

更新帖子:Increase in Value button

我发了一篇帖子询问如何制作增值按钮。我得到了一个不错的答案,我尝试了一下,但没有成功。

原文:

$result = mysqli_query($con, "SELECT * FROM champion_counters_b WHERE champion_name='" . $search_result . "'");

echo "<table class='champion_counters' border='1'><tr><th>Champion Counter</th><th>Up Votes</th><th>Down Votes</th></tr>";
while($row = mysqli_fetch_array($result)) {
    echo "<tr>";
    echo "<td>" . $row['champion_counter'] . "</td>";
    echo "<td>" . $row['upvotes'] . "</td>";
    echo "<td>" . $row['downvotes'] . "</td>";
}

echo "</table>";

当前:

    $result = mysqli_query($con, "SELECT * FROM champion_counters_b WHERE champion_name='" . $search_result . "'");

    echo "<table class='champion_counters' border='1'><tr><th>Champion Counter</th><th>Up Votes</th><th>Down Votes</th></tr>";
    while($row = mysqli_fetch_array($result)) {
        echo "<tr>";
        echo "<td>" . $row['champion_counter'] . "</td>";
        echo "<td><a href='action.php?do=up&id=" . $row['upvotes'] . "'>Upvote [" . $row['upvotes'] . "]</a></td>";
        echo "<td><a href='action.php?do=down&id=" . $row['downvotes'] . "'>Downvote [" . $row['downvotes'] . "]</a></td>";
    }
    echo "</table>";
    mysqli_close($con);
    ?>

action.php:

    $action = $_GET['do'];
    $id = $_GET['id'];

    if ($action=="up") {
        $result = mysqli_query($con, "UPDATE champion_counters_b SET" . $id . "=" . $id+1 . "'");
    }
    elseif ($action=="down") {
        $result = mysqli_query($con, "UPDATE champion_counters_b SET" . $id . "=" . $id-1 . "'");
    }
    else {echo "error: 002 / voting error";}

    mysqli_close($con);
    ?>

正如您所看到的,我实现了建议的更改,这些更改可能有效,但它们没有执行,而不是更新数据,它什么也没做。当按下 "upvote"/"downvote" 时它获取当前值 $id而不是根据数据的位置来更新它。

tl;dr:我尝试了上一个线程的修复,但没有做任何事情。请帮忙?

最佳答案

抱歉,如果我不清楚,让我再试一次:

您将一个链接插入到表中,该链接调用一个action.php。 action.php 更新数据库。更新所需的信息作为 GET 参数传递。

要更新数据库,您需要知道要做什么,其次,哪些数据库条目实际上受到影响。

一步一步:

首先,您必须将链接插入表格中:

$result = mysqli_query($con, "SELECT * FROM champion_counters_b WHERE champion_name='" . $search_result . "'");

echo "<table class='champion_counters' border='1'><tr><th>Champion Counter</th><th>Up Votes</th><th></th><th>Down Votes</th><th></th></tr>";
while($row = mysqli_fetch_array($result)) {
    echo "<tr>";
    echo "<td>" . $row['champion_counter'] . "</td>";
    echo "<td>" . $row['upvotes'] . "</td>";
    echo "<td><a href='action.php?do=up&id=" . $row['key'] . "'>Upvote</a></td>";
    echo "<td>" . $row['downvotes'] . "</td>";
    echo "<td><a href='action.php?do=down&id=" . $row['key'] . "'>Downvote</a></td>";
    echo "</tr>";
}

echo "</table>";

单击链接后,我们将向 action.php 发送两条信息。

  1. 我们必须执行的操作,无论是赞成还是反对。它告诉我们要做什么。

  2. 我们必须赞成或反对的元素的 ID。 id 告诉我们哪个元素受到影响,而不是元素拥有的票数。

正如我在对您上一篇文章的回答中提到的,$row['key'] 应包含数据库的主键,例如唯一标识符。您的数据库中应该有这样的标识符,否则您无法引用特定的数据库条目。但是,由于我们想要更新特定数据库条目的投票计数,因此我们需要能够唯一标识该数据库条目。

在你的action.php中,你必须执行以下操作:

$action = $_GET['do'];
$id = $_GET['id'];

if ($action=="up") {
    mysqli_query($con, "UPDATE champion_counters_b SET upvotes = upvotes + 1 WHERE key = " . $id . "'");
}
elseif ($action=="down") {
    mysqli_query($con, "UPDATE champion_counters_b SET downvotes = downvotes - 1 WHERE key = " . $id . "'");    }
else {echo "error: 002 / voting error";}

mysqli_close($con);

我们使用 id 值来选择必须更新的数据库条目。这是通过 UPDATE 语句中的 WHERE key = $id 完成的。当前投票数取自数据库本身 - 无需在 GET 参数中传递当前投票数。

更新数据库后,您可以重定向到原始页面并重新加载表。然后,应该会显示更新后的投票计数。

关于php - 增加值按钮 "mrk2",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241155/

相关文章:

php - 拒绝用户 'admin' @'localhost' mysql 的访问

php - 向 Google Cloud PHPMyAdmin 服务器发送 REST 调用不起作用?

html - 从 Angular 2 typescript 中的 HTML 获取复选框值。

javascript - v-for 将我的列表渲染为一行多列,而不是一列多行

javascript - 拖动时将助手保持在鼠标下方

php - 准备好的语句中的数字发生变化

mysql - 如何在sequelize中定义多列的唯一索引

PHP 面向对象问题

javascript - 用php突出显示html表中的选定行

php - PHP 文件中的大写链接