表单提交后无法重定向到另一个页面

时间:2015-09-23 11:28:58

标签: php html forms

我创建了一个表单,当表单提交时,它获取所选单选按钮的值并存储在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; ?>

2 个答案:

答案 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"]; ?>"

谢谢!