我创建了一个表单,当表单提交时,它获取所选单选按钮的值并存储在db中,然后我尝试重定向到另一个页面,但结果是当前页面刷新而没有更新单选按钮值即使db中的值发生了变化,如果我转到另一个页面并返回单选按钮页面,则该值为更新。我如何重定向到另一个页面?
这是我的代码:
<?php foreach( $users as $user ): ?>
<tr>
<td><?php echo $user["username"]; ?></td>
<td><?php echo $user["role"]; ?></td>
<td class="right"><a href="delete_permission.php?idTratta=<?php echo $idTratta; ?>&user=<?php echo $user["username"]; ?>">Elimina permessi utente</a></td>
<td class="right"><form action="" method="post"> <label>
<input type="radio" name="<?php echo $user["username"]; ?>" value="1" <?php if ($user["role"] == 'configuratore') echo 'checked="checked"'; ?>" />C</label>
<label>
<input type="radio" name="<?php echo $user["username"]; ?>" value="2"<?php if ($user["role"] == 'visualizzatore avanzato') echo 'checked="checked"'; ?>" />VA</label>
<label>
<input type="radio" name="<?php echo $user["username"]; ?>" value="3"<?php if ($user["role"] == 'visualizzatore') echo 'checked="checked"'; ?>" />V </label><input type= "submit" name="sub_<?php echo $user["username"]; ?>"value="Cambia"/></form></td>
<?php
$sub='sub_';
if($_POST[$sub.''.$user["username"]]){
$permission=$_POST[$user["username"]];
$SimpleUsers->updateUserPermission($user["username"],$idTratta,$permission);
header('location: tratte.php' );
exit();
}
?>
</tr>
<?php endforeach; ?>
答案 0 :(得分:0)
如果从脚本中写入任何输出,即使是单个空格,PHP的header("Location:FILE_NAME.PHP")
也不起作用。
在您的情况下,您正在打印HTML(输出),因此,重定向不起作用。
<强>解决方案:强>
1)在页面的最开头添加ob_start()
。这会将您的输出存储到缓冲区并进行重定向。
2)使用Javascript重定向。无论您是否在浏览器上输出内容,都会发生Javascript重定向。
代码:
$SimpleUsers->updateUserPermission($user["username"],$idTratta,$permission);
echo "<script>window.location.href='tratte.php';</script>";
//header('location: tratte.php' );
exit();
答案 1 :(得分:0)
在表单中,您编写的内容与Configuration
类似,在PHP中写作<input type="radio" name="<?php echo $user["username"]; ?>"
,两者名称不同。
将if($_POST[$sub.''.$user["username"]]){
替换为<input type="radio" name="<?php echo $user["username"]; ?>"
谢谢!