php - 从 PHP 页面编辑数据库行

标签 php mysql database

我有两个 PHP 页面:

  • 第一个有一个在数据库中插入数据的表单。
  • 第二个显示数据库的所有数据。

从概念上讲,我怎么能为每一行添加一个“更新”按钮,它允许我更改该行的某些值(在我的示例中是 2 下拉列表的值)并将数据库中的此信息更新为好吧。

这是我在互联网上找到的代码,我有两个问题: First,仅适用于第二个更新按钮(因此仅更新第二行)。 其次,更改不会反射(reflect)到下拉列表中。 (意味着如果我更改第二行的值,数据库会更新,但下拉列表不会更新)。

请注意,我实现了两列

<td>" . $row['status'] . "</td>
<td>" . $row['priority'] . "</td>

仅检查数据库中的值是否发生变化。

    <form method="post" action="job-status.php">
           <?php

    include("../includes/connection.php");

        if($link->connect_errno > 0){
            die('Unable to connect to database [' . $link->connect_error . ']');
        }

        if(isset($_POST['update'])) {
           $results = $link->query("UPDATE job SET status='$_POST[status]', 
        priority='$_POST[priority]' WHERE id='$_POST[hidden]'");

        }    
           $sql = "SELECT * from job";
        if(!$result = $link->query($sql)){
            die('There was an error running the query [' . $link->error . ']');
        }
        echo "
    <table class='table'>
        <thead>
            <tr>";
        /* Get field information for all columns */
        while ($finfo = $result->fetch_field()) {
            echo "
            <th>" . $finfo->name . "</th>";
        }
        echo "
            </tr>
        </thead>
        <tbody>";
        while($row = $result->fetch_assoc()){
       echo "<tr class='info'>

                    <td>" . $row['id'] . "</td> 
                    <td>" . $row['device'] . "</td>
                    <td>" . $row['model'] . "</td> 
                    <td>" . $row['problem'] . "</td>
                    <td><select class='form-control col-sm-10' id='status' name='status'>
                         <option value='new'>New</option>
                         <option value='progress'>Progress</option>
                         <option  value='wait'>Wait</option>
                         <option value='done'>Done</option>
                         <option value='close'>Close</option>
                   </select></td>

                    <td><select class='form-control col-sm-10' id='priority' name='priority'>
                     <option value='high'>High</option>
                         <option value='medium'>Medium</option>
                     <option  value='low'>Low</option>
                     </select></td>

                       <td>" . $row['status'] . "</td>
                       <td>" . $row['priority'] . "</td>

                   <input type=hidden name=hidden value=" . $row['id'] . ">

<td><button type='submit' class='btn btn-primary btn-sm' name='update'>Update</button></td>

<td> <a class='btn btn-primary btn-sm'  data-toggle='modal' data-target='#myModal'>Info</a></td>
                </tr>"; 
        } 
        echo "
        </tbody>  
</table>"; 
?>   
</form>

enter image description here

最佳答案

您可以为表格的每一行使用另一个 TD:

"<td>" . $row['name'] . '</td><td><a href="LINK">Edit</a>' . "</td>"

LINK 将是指向您的 Controller 的链接,以防您使用 MVC 模式,并且您可以传递要删除的队列的 ID。我的意思是:

"<td>" . $row['name'] . "</td><td><a href='clientes/editar?id=" . $row['id'] . "'>Edit</a> . "</td>"

这样您就可以通过单击“编辑”链接来编辑任何行。请记住在 Controller 中实现用于更新具有特定 ID 的行的逻辑。为此,您可以使用 ORM 来帮助您访问数据库。

关于php - 从 PHP 页面编辑数据库行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447746/

相关文章:

php - 为什么我的 19 位数字会四舍五入为 17 位数字

Linux 上的 PHP 和 RAW SOCKETS

php - 使用 array_filter 和 array_splice 从行加载特定字段,之后想要清空字段

Mysql 查询 : LEFT JOIN List all orders and "balance due" for a customer, 如果没有订单,则列出客户。 3 table

javascript - 如何使用从数据库或变量查询的模板文字?

python - Python 可以运行一个脚本的多个实例,每个实例都包含它自己的数据吗?

php - MySql - 如何按设定的时间间隔选择一系列 id

php - 通过 php 页面插入表不工作并且没有错误

mysql - 我正在使用 MySQL 表来记录用户数据(1000 个新行/分钟)。如何在 2 天后轮换行?

c# - 如何从数据库中取值?必须声明标量变量 "@ID1"