我有两个PHP页面:
从概念上讲,我如何为每一行添加一个按钮“更新”,这允许我更改该行的某些值(在我的示例中为2下拉列表的值)并将此信息更新为数据库中的好。
这是我在互联网上看到的代码,我有两个问题: 第一个,仅使用第二个更新按钮(因此只有第二行更新)。 第二,更改不会反映到下拉列表中。 (意味着如果我更改第二行值,则数据库会更新,但不会更新下拉列表。)
请注意,我实现了两列
<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>
答案 0 :(得分:0)
您可以为表格的每一行使用另一个TD:
"<td>" . $row['name'] . '</td><td><a href="LINK">Edit</a>' . "</td>"
LINK 将是您的控制器的链接,如果您正在唱MVC模式,并且您可以传递要删除的que行的ID。我的意思是喜欢:
"<td>" . $row['name'] . "</td><td><a href='clientes/editar?id=" . $row['id'] . "'>Edit</a> . "</td>"
这样您只需点击&#34;编辑&#34;即可编辑任何行。链接。请记住在控制器中实现更新具有特定ID的行的逻辑。为此,您可以使用可以帮助您访问数据库的ORM。
答案 1 :(得分:0)
我用下面的代码解决了部分问题。 唯一剩下的问题是:dropdownmenu显示所有值加上存储在数据库中的值,因此该值显示两次。 (见图)
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>";