【问题标题】:Update a table of information on a button click单击按钮更新信息表
【发布时间】:2016-09-28 20:53:08
【问题描述】:

我有一个表格,可以从数据库中选择信息并显示它,我想知道是否有人可以提供代码让我通过单击按钮来更新列?

示例表:(Access=Boolean)

ID   -   Name   -   Access
---------------------------
1   -   John    -    1
---------------------------
2   -   Ben     -    1
---------------------------
3   -   Terry   -    0
---------------------------

我的现有按钮基于引导程序,

    <button type=\"button\" id=\"passed\" class=\"btn btn-success btn-flat\"><i class=\"fa fa-check\"></i></button>
    <button type=\"button\" id=\"insufficient\" class=\"btn btn-danger btn-flat\"><i class=\"fa fa-times\"></i></button>

我希望有这样的东西,ONCLICK button1 运行 $Allowed SQL ONCLICK 按钮2 运行 $NotAllowed SQL

$allowed = mysqli_query($conn," UPDATE users SET Access = "1" WHERE id = '27' ");     
$notallowed = mysqli_query($conn," UPDATE users SET Access = "0" WHERE id = '453' ");

【问题讨论】:

  • 你标记为 php;使用带有 post 方法的表单和带有命名属性的提交类型的按钮,并在条件语句中使用它们。 JS/jQuery/ajax 也是一种选择
  • 您是否尝试过 UPDATE users SET Access = "1" WHERE id in ('27','453','YourValue3','YourValue') 或者您想更新 Access="1", Access="0" 在一个查询中?
  • @Sami 这不是问题所在。再读一遍。
  • 欢呼,弗雷德,这听起来可以解决问题。提交并形成
  • @SheaLavington 是的。想让我在答案中写点什么,只是更详细一点?

标签: php forms mysqli sql-update


【解决方案1】:

您可以使用带有 post 方法的表单和带有命名属性的提交类型的按钮,并在条件语句中使用它们。

即:

旁注:我删除了转义引号,因为我不确定它们是否已经设置在回声中。

HTML 表单:

<form method="post" action="handler.php">

    <button type="submit" name="passed" id="passed" class="btn btn-success btn-flat"><i class="fa fa-check"></i></button>
    <button type="submit" name="insufficient" id="insufficient" class="btn btn-danger btn-flat"><i class="fa fa-times"></i></button>

</form>

PHP:

<?php 

// db connection

if(isset($_POST['passed'])){

    $allowed = mysqli_query($conn," UPDATE users SET Access = "1" WHERE id = '27' ");

}

if(isset($_POST['insufficient'])){

    $notallowed = mysqli_query($conn," UPDATE users SET Access = "0" WHERE id = '453' ");

}

脚注:

运行 UPDATE 查询时,最好使用 mysqli_affected_rows() 以保证绝对真实性。

否则,您可能会得到误报。

【讨论】:

    【解决方案2】:

    这些按钮在前端(javascript)上运行,但用于更新数据库的 SQL 在后端(php)上运行,因此我们需要将这两者连接在一起。

    function updateUserAccess(user_id, access) {
        var d = { user_id: user_id, access: access };
        $.post('update.php', d);
    }
    

    然后每个按钮看起来像这样:

    <button type="button" id="passed" class="btn btn-success btn-flat" onclick="updateUserAccess(<?= $user->id ?>, 1)"><i class="fa fa-check"></i></button>
    <button type="button" id="passed" class="btn btn-success btn-flat" onclick="updateUserAcces(<?= $user->id ?>, 0)"><i class="fa fa-check"></i></button>
    

    然后您的查询将进入update.php,而您在d 中传递的javascript 数据将在$_POST 中可用。

    现在,说了这么多,有几件事:

    1. 我不确定您的引号为什么被转义,至少可以说这有点不寻常。除非您是 mixing your logic and markup which isn't a good habit,否则几乎可以肯定没有必要。
    2. 虽然我给你的代码可以工作,但它也不是最佳的,因为我们通常希望看到事件绑定与显示标记分开,here it is in raw javascripthere in jquery (with some explanation)
    3. 您不必使用 AJAX 来提交更改,正如 Fred 所展示的,您可以使用表单来完成。 AJAX 不会导致页面刷新(除非您明确告诉它),而表单通常会导致刷新。
    4. 最后,根据您的需求/用例,我建议您了解一下 PHP 中的现代框架及其提供的功能。对于专业的 Web 开发(和“现代” php 代码),他们使用/鼓励的模式远远优于用于创建 Web 应用程序的旧文件样式。查看“MVC 模式”和一些使用它的框架是 CodeIgniter、CakePHP 和 Laravel。所有这些都相当容易进入并开始使用。

    【讨论】:

    • 嘿,刚看到这个,好像还有很长的路要走,对于使用最少代码的高级人员来说似乎要多得多,表单似乎是一种更简单的方法。
    • @SheaLavington 需要输入更多内容,但是一旦你使用它(我已经很长时间没有使用过表单了),它通常不会比表单更复杂.它的功能也更加灵活。
    猜你喜欢
    • 1970-01-01
    • 2013-03-01
    • 2011-03-15
    • 2021-03-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多