使用该行的 id 编辑表的特定行

Posted

技术标签:

【中文标题】使用该行的 id 编辑表的特定行【英文标题】:Edit specific row of a table using id of that row 【发布时间】:2015-01-12 17:15:54 【问题描述】:

我已经使用 php 以表格的形式显示了数据库中的一些值。表格的一列保留用于编辑。我希望表格的每一行都可以编辑。

编辑代码是

echo"<td class='success'><button class='btn blue' data-toggle='modal' data-target='#myeditModal'>Edit </button></td>";

模态中使用的代码是

<div class="modal fade" id="myeditModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title" id="myModalLabel">Edut Treatment</h4>
            </div>

            <div class="modal-body">
                <form class="form-horizontal" role="form" action="edit.php?id="$row['id']"" enctype="multipart/form-data" method="post">
                    <div class="form-group">
                        <label class="col-lg-4 control-label"> Name</label>
                            <div class="col-lg-6">
                                <input class="form-control" value="" type="text" name="name" >
                            </div>
                    </div>

                    <div class="form-group">
                    <label class="col-md-3 control-label"></label>
                        <div class="col-md-8">
                            <input class="btn btn-primary" value="Save Changes" type="submit" name="submit">

                            <span></span>
                        </div>  
                    </div>
                </form>

            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

edit.php 页面的代码是

<?php
include('admin_session.php');
$con=mysqli_connect("localhost","root","","db");

// Check connection
if (mysqli_connect_errno()) 
echo "Failed to connect to MySQL: " . mysqli_connect_error();


$id = $_GET['id'];

mysqli_query($con,"UPDATE treatment_type SET name='".$name.'" WHERE id='".$id."'");
mysqli_close($con);
header("Location: abc.php");
?> 

我的问题是,当我到达edit.php 页面时,我得到的网址是:http://example.com/xyz/edit.php?id=

我无法携带 id,因此我无法编辑表格的特定行。

【问题讨论】:

你能显示 $row 的定义和 var 转储吗? 好吧,我想说你必须使用 javascript 或 jquery 才能将行传递给编辑模式,然后执行 ajax 调用来显示编辑页面。否则,您将向您的页面输出多模态页面 @Arif_suhail_123 你是对的! 8 票?我只是没看到... 【参考方案1】:

如果您可以调用 URL 就好了。很可能是因为 UPDATE 语句中的这一行:

WHERE id='".$id."'");
          ^^^^^^^

其次,正确回显行ID:

action="edit.php?id=<?php echo $row['id']; ?>"

并确保已定义 $name

为什么不使用准备好的语句:

if(isset($_GET['id'], $_GET['name'])) 
    $con = mysqli_connect("localhost","root","","db");

    // Check connection
    if (mysqli_connect_errno()) 
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    

    $id = $_GET['id'];
    $name = $_GET['name'];

    $sql = 'UPDATE treatment_type SET name = ? WHERE id = ?';
    $update = $con->prepare($sql);
    $update->bind_param('si', $name, $id);
    $update->execute();

    if($update->affected_rows > 0) 
        header("Location: abc.php");
     else 
        echo 'did not update';
       

【讨论】:

@Arif_suhail_123 是的,我了解它的流程。当模式打开时,它将显示一个包含所有字段的表单。我认为主要问题是echo $row['id'];。由于id 未正确回显,因此在提交时,表单无法很好地发送ID。 @Arif_suhail_123 好吧,有一些缺失的部分需要解决,因为我们不知道 OP 如何将 id 回显到表单中。实际上,上面凯尔的答案很好,如果 OP 提出并使用我们的答案,那么这应该可以解决这些问题。别担心没有冒犯:) @Ghost 我仍然遇到同样的问题,并且在使用准备好的语句时,我在 Parse 错误中遇到错误:语法错误,意外';'在更新查询中,我无法删除它 @Sam 只需删除错字并检查修订版 @Ghost 现在我没有收到任何错误,但 url 仍然是 example.com/xyz/edit.php?id= 。 Id 没有获得价值【参考方案2】:

你现在拥有它的方式,你需要改变这个..

 <form class="form-horizontal" role="form" action="edit.php?id='<?php echo $row['id'];?>'" enctype="multipart/form-data" method="post">

将ID正确输出到表单中。

但是这样你会为每一行输出多个不同的模式形式??

您真的应该只显示一次模态,然后通过 jquery/javascript 将 ID 传递给模态,执行 ajax 请求 - 显示数据,然后对其进行编辑。

如果它只有一行,应该没问题,但是如果你想要多个表行,并且能够编辑行中的任何值,那么你肯定需要使用 ajax/jquery/javascript

使用一个模态窗口的示例,并通过 jquery 传递 ID...

PHP

echo"<td class='success'><button class='btn blue editButton' data-id='<?php echo $row['id'];?>' >Edit </button></td>";

jQuery

$(document).ready(function()
     //Click button, apply id, and open modal.
    $('.editButton').click(function()
      var id = $(this).data('id');
      //Apply action with id to form
      $('#myForm').attr('action','edit.php?id='+id);
      //Open modal 
      $('#myModal').modal(background:'static');
     ):

    //If you want values to come into the modal you need to do a sepereate ajax call to get the one particular element from database.


     );

【讨论】:

我仍然得到相同的 url 并且我得到错误 Parse error: syntax error, unexpected '"' in update query 那么您显然没有显示如何获得结果并循环将 $row 变量应用于表单。似乎行不包含任何内容。你需要使用 mysql_fetch_array 并循环它

以上是关于使用该行的 id 编辑表的特定行的主要内容,如果未能解决你的问题,请参考以下文章

按特定 ID 删除一行,该行不存在另一个表的列 ID

cxGrid 锁定一行,让该行数据不能编辑

在特定JTable单元上设置焦点和闪烁光标

Javascript 从 html 表的特定行中获取列的文本值

Selenium web 自动化使用 python:如何使用 selenium 处理表以通过匹配文本来查找特定行并删除该行

Ag-Grid:如何在不选择行的情况下单击行或该行的任何单元格突出显示特定行?