从包含记录的列表中编辑选定的记录

时间:2014-05-21 11:40:09

标签: php mysql sql

我的页面上有一个数据库记录列表。每条记录都有自己的编辑按钮。当我点击编辑按钮时,会出现一个模态,我可以在表格中进行处理。但我无法弄清楚如何将所选记录添加到我的更新查询中。

现在我有3条带有项目名称的记录。假设我想编辑列表中的第二条记录,我总是从第一条记录中获取值,但我想要第二条记录。所以我想知道如何从选定的记录中获取值。

<!-- Get all projects in the database -->
<?php   $result = mysqli_query($connection, "SELECT project_name, project_completion FROM project");

        while ($project = mysqli_fetch_assoc($result)){ ?>

            <tr>
                <td><a href="#" class="btn-sm btn btn-warning"><span class="glyphicon glyphicon-ok"></span></a></td>
                <td><a href="milestones.php?project=<?php echo $project["project_name"]; ?>"><?php echo $project["project_name"]; ?></a></td>                                           
                  <td>
                    <div class="progress">
                        <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"></div>
                    </div>                                                                                              
                </td>   
                <td><?php echo $project["project_completion"]?>%</td>
                            <!-- edit button on click to modal -->                                                                      
                <td><a  data-toggle="modal" data-target="#myModalEdit" class="btn-sm btn btn-warning"><span class="glyphicon glyphicon-pencil"></span></a> 
                            <!-- remove button -->  
                    <a href="#" class="btn-sm btn btn-danger"><span class="glyphicon glyphicon-remove"></span></a></td>



                    <!-- Modal -->
                     <div class="modal fade" id="myModalEdit" 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" aria-hidden="true">&times;</button>
                                    <h4 class="modal-title" id="myModalLabel"> Edit project</h4>
                                </div>
                                <div class="modal-body">

                                    <!-- do process with selected record -->

                                </div>
                                </div>
                                <div class="modal-footer">
                                  <input type="submit" name="saveProject" value="Add" class="btn btn-success"/>
                                </div>
                            </form>
                          </div><!-- /.modal-content -->
                        </div><!-- /.modal-dialog -->
                      </div><!-- /.modal -->                                                                                    


           </tr>    


                                        <?php } ?><!-- end while -->  

4 个答案:

答案 0 :(得分:1)

为每个弹出窗口分配不同的ID。

<?php $i++; ?>
<a  data-toggle="modal" data-target="#myModalEdit-<?php echo $i;?>" class="btn-sm btn btn-warning"><span class="glyphicon glyphicon-pencil"></span></a> 

在while循环开始之前分配$i=0;

然后还改变模态弹出ID,如下所示:

<div class="modal fade" id="myModalEdit-<?php echo $i;?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">

更新上面的编辑和模态弹出行。然后试试。

答案 1 :(得分:0)

试试这个:

第1步:在您的选择查询中,同时获取auto increment value(例如 - 任何ID)

第2步:然后设置一个hidden field,其中包含您的增量ID

例如:

<input type="hidden" name="test" value="<?php echo your id value?>">

提交表单时,您将获得哪一行更新

代码中的一些更改:

 <?php $result = mysqli_query($connection, "SELECT project_id,project_name,  project_completion FROM project"); ?>
   ..........................
   ..........................
 <div class="modal-footer">
 <form>
 <input type="hidden" name="projectid" value="<?php $project['project_id'] ?>">
 <input type="submit" name="saveProject" value="Add" class="btn btn-success"/>
 </form>
 </div>

答案 2 :(得分:0)

您必须使用某种类型的身份证明。例如,假设您有一个按钮的以下代码

<button type="button" class="btn btn-primary editor" data-target=<?php echo $project['id']; ?>>Edit Something</button>
<div id="returnbuffer" style="display: none;"></div>

然后在javascript中你有以下代码

<script>
    $(document).ready(function() {
        $('editor').click(function() {
            $('#returnbuffer').load('editRecord.php?id=' + $(this).attr('data-target'));
        });
    });
</script>

然后你在一个使用get协议的目录中有一个php文件并更改数据库。

只是为了解释这里发生了什么,当点击按钮时,javascript运行一个php文件并发送有关应该更改哪条记录(带有什么ID)的信息。

答案 3 :(得分:0)

这有不同的方法。喜欢: -

  1. 在php循环中创建记录列表时,应用&#34; onclick&#34;事件到您的编辑按钮,它将记录主键作为参数。当单击编辑按钮时,将调用此函数,通过ajax,您可以获取此记录的数据并显示。在再次保存数据时,调用ajax并保存数据。在这里你必须调用两个ajax方法,即保存和获取数据。

  2. 或者您可以使用具有不同Post变量的相同页面。就像当编辑按钮被cliked重新加载相同的页面时,id附加到它url。检查url是否附加了任何记录id变量,如果是,则显示要编辑的表单,进行更改并提交或仅显示记录。