从PHP页面编辑数据库行
我有两个PHP页面:从PHP页面编辑数据库行,php,mysql,database,Php,Mysql,Database,我有两个PHP页面: 第一个是在数据库中插入数据的表单 第二步显示数据库的所有数据 从概念上讲,我如何为每一行添加一个按钮“更新”,允许我更改该行的一些值(在我的示例中是2 dropdownlist的值),并在数据库中更新此信息 这是我在互联网上查找时能够执行的代码,我有两个问题: First仅在第二个更新按钮中工作(因此只有第二行得到更新)第二次,更改不会反映到dropdowlist中。(意味着如果我更改第二行的值,数据库将更新,但dropdownlist不会更新) 注意,我实现了这两个列
- 第一个是在数据库中插入数据的表单
- 第二步显示数据库的所有数据
<td>" . $row['status'] . "</td>
<td>" . $row['priority'] . "</td>
“$row['status']”
“$row[‘优先级’]”
仅检查数据库中的值是否更改
<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>
您可以为表格的每一行使用另一个TD:
"<td>" . $row['name'] . '</td><td><a href="LINK">Edit</a>' . "</td>"
“”$行['name'].'。""
链接将是指向控制器的链接,以防您使用MVC模式,并且您可以传递要删除的que行的id。我的意思是:
"<td>" . $row['name'] . "</td><td><a href='clientes/editar?id=" . $row['id'] . "'>Edit</a> . "</td>"
“”$行['name']。" . ""
这样,您只需单击“编辑”链接即可编辑任何行。请记住在控制器中实现用特定ID更新行的逻辑。为此,您可以使用ORM,它可以帮助您访问数据库。我用下面的代码解决部分问题。
唯一剩下的问题是:下拉菜单显示所有的值加上数据库中存储的值,因此该值会显示两次
while($row=$result->fetch_assoc()){
回声“;
回声“
“$row['id']”
“$row['device']”
“$row['model']”
“$row[‘问题’]”
“$row['status']”
新的
进展
等待
多恩
接近
“$row[‘优先级’]”
高
中等
低
“$row['status']”
“$row[‘优先级’]”
更新
从概念上讲?让编辑按钮创建一个表单提交,它调用位于服务器上的send.php表单。显然,您必须将所有数据发送到该链接,而不仅仅是名称。该php文件验证用户所需的编辑,然后将更新推送到mySQL数据库。提交后,向用户刷新DB显示页面(显示更新的数据条目)您也可以使用Ajax来实现这一点,但这有点棘手(需要使用JavaScript)或其他方法tools@zipzit除了提交表单和javascript之外,还可以使用什么工具呢?看看Symfony和他们的数据库提取层,Doctrine…(注意还有其他类似的工具…)或者了解Angular.js之类的高级JavaScript工具是如何工作的。注意:这些工具不是临时修复的。这些是高度开发的工具,需要花费一些时间来理解和实现。我更新了我的问题,以便更具体地说明我想要实现的目标。如果我只想编辑一个列,这会是一样的吗?例如,我f我有一个带选项的多下拉菜单,旁边有一个提交按钮,以便将更改发送到数据库并进行更新?使用这种方式,您将不再需要删除按钮。您只需单击编辑链接,您的控制器将处理其余部分。当然,您必须确保链接将带您到控制器我做了一些工作,更新了我的问题,你能给我一些其他的提示吗?
while($row = $result->fetch_assoc()){
echo "<form action='' method=post>";
echo "<tr class='info'>
<input type=hidden name=hidden value=" . $row['id'] . ">
<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=". $row['status'] ." >" . $row['status'] . "</option>
<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=". $row['priority'] ." >" . $row['priority'] . "</option>
<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>
<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"</form>";
}
echo "
</tbody>
</table>";