我是php新手,我刚开始学习php并遇到一些问题。 在管理面板中,我有一些用于添加信息的表单,之后在输出中我有单选按钮,用于选择哪一行显示到网站中。问题在于更新功能,查询没问题,但它不起作用,我需要你的帮助。
感谢。
提交if。
if(isset($_POST['update_info'])){
$selected_info=$_POST['selected'];
$selected_id = $_POST['id'];
updateHomeInfo($selected_info, $selected_id);
}
输出添加的行。
<div class="home-output">
<form action="/admin/" method="post">
<table class="table table-hover">
<thead>
<tr>
<td>#</td>
<td>slected</td>
<td>title</td>
<td>descriptiom</td>
<td></td>
<td></td>
</tr>
</thead>
<tbody>
<?php foreach($homeInfo as $row) { ?>
<tr>
<td><?php echo $row['id']; ?><input type="hidden" name="id" value="<?php echo $row['id']; ?>"></td>
<td><input type="radio" name="selected" value="home-info" <?php if($row['selected'] == 1) echo "checked"; ?> /></td>
<td><?php echo $row['title']; ?></td>
<td><?php echo $row['description']; ?></td>
<td></td>
<td></td>
</tr>
<?php } ?>
<tr>
<td>
<input type="submit" class="btn btn-default" name="clear_info" value="delete all">
</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>
<input type="submit" class="btn btn-default" name="update_info" value="update">
</td>
</tr>
</tbody>
</table>
</form>
</div>
并更新功能。
function updateHomeInfo($selected_info, $selected_id) {
global $db;
$db->exec("UPDATE home SET selected = '$selected_info' where id = '$selected_id'");
}
答案 0 :(得分:1)
所有隐藏的输入都具有相同的名称;他们都将被提交,$_POST['id']
的值将只是最后一个,而不是所选单选按钮旁边的值。并且所有单选按钮也具有相同的值。
您应该将ID放入单选按钮的值中。您只需要隐藏输入的一个副本,它可以包含所选信息。
<form action="/admin/" method="post">
<input type="hidden" name="selected" value="home-info">
<table class="table table-hover">
...
<td><?php echo $row['id']; ?>
<td><input type="radio" name="id" value="<?php echo $row['id']; ?>" <?php if($row['selected'] == 1) echo "checked"; ?> /></td>
...
实际上,如果selected
是布尔值,您似乎根本不需要selected
输入。它应该只是:
function updateHomeInfo($selected_id) {
$db->exec("UPDATE home SET selected = (id = '$selected_id')");
}
这会为所选ID设置selected
至1
,并为所有其他ID设置0
。