按钮提交后重定向到另一个页面

时间:2013-02-21 11:03:26

标签: php redirect

我正在构建一个显示详细信息的应用程序(admin.php)。用户单击编辑(edit.php),然后将其重定向到另一个页面以编辑其详细信息。编辑完成后,值将更新,我想再次重定向到上一页,其中显示详细信息。所有操作都按照需要执行,但是当我尝试在“提交”内部重定向到上一页时,它不会发生。

admin.php的

    $event_id = $_SESSION['fedit'];
    if($_GET['edit'])
    {
     $url = "edit.php?event_id=". $event_id;  
     header("Location: $url");
    }

Edit.php

     if($_GET["Submit"])
              {
                 $val=$_GET['event'];
                 $remail=$_GET['email'];
                $rname = $_GET['ename'];
                $sqt=mysql_query("UPDATE users SET NAME='$rname',EMAIL='$remail' WHERE EID ='$val'");
                $page= "admin.php";
                header("Location: $page");
             }

6 个答案:

答案 0 :(得分:3)

我不知道您在页面上放置此代码的位置,但如果以某种方式在标题(位置:“”)之前发送了http标头输出,那么它将无法正常工作。尝试其他人的建议,但如果一切都失败了,你可能想要使用JS。

echo "<script>window.location.assign("admin.php")</script>";

使用它代替

header("Location: $page");

它应该可以工作。

答案 1 :(得分:0)

action='edit.php' method='get'添加到您的表单标记中。 并在edit.php页面中提交您的其余代码。

答案 2 :(得分:0)

最好这样做:

if ($_GET["Submit"]) {
   ...

   // Clean any output
   ob_clean();
   header("Location: $page");

   // Exit the PHP process 
   exit;
}

答案 3 :(得分:0)

很难从你发布的不完整代码中分辨出你在做什么 但是,看起来不是重定向,但表单提交被破坏了。 您的代码中还存在两个严重缺陷:

  • 无论使用POST方法进行哪些编辑,都不要GET
  • 您必须正确格式化SQL查询。

无论如何,这里有一个这样的应用程序的例子(虽然只编辑一个字段。你可以轻松添加更多),这是有效的。

<?  
mysql_connect(); 
mysql_select_db("new"); 
$table = "test"; 
if($_SERVER['REQUEST_METHOD']=='POST') { //form handler part: 
  $name = mysql_real_escape_string($_POST['name']); 
  if ($id = intval($_POST['id'])) { 
    $query="UPDATE $table SET name='$name' WHERE id=$id"; 
  } else { 
    $query="INSERT INTO $table SET name='$name'"; 
  } 
  mysql_query($query) or trigger_error(mysql_error()." in ".$query); 
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);  
  exit;  
}  
if (!isset($_GET['id'])) { //listing part: 
  $LIST=array(); 
  $query="SELECT * FROM $table";  
  $res=mysql_query($query); 
  while($row=mysql_fetch_assoc($res)) $LIST[]=$row; 
  include 'list.php'; 
} else { // form displaying part: 
  if ($id=intval($_GET['id'])) { 
    $query="SELECT * FROM $table WHERE id=$id";  
    $res=mysql_query($query); 
    $row=mysql_fetch_assoc($res); 
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v); 
  } else { 
    $row['name']=''; 
    $row['id']=0; 
  } 
  include 'form.php'; 
}  
?>

您还需要2个模板来保存HTML

form.php的

<form method="POST">
<input type="text" name="name" value="<?=$row['name']?>"><br>
<input type="hidden" name="id" value="<?=$row['id']?>">
<input type="submit"><br>
<a href="?">Return to the list</a>
</form>

list.php的

<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>

答案 4 :(得分:-1)

使用header("Location : ". $page);代替header("Location: $page");

 if($_GET["Submit"])
          {
             $val=$_GET['event'];
             $remail=$_GET['email'];
            $rname = $_GET['ename'];
            $sqt=mysql_query("UPDATE users SET NAME='$rname',EMAIL='$remail' WHERE EID ='$val'");
            $page= "admin.php";
            header("Location : ". $page);
         }

答案 5 :(得分:-1)

实际上,这不起作用,因为你的edit.php永远不会到达if语句,因为你没有发送$ _GET [&#34;提交&#34;]。您需要执行以下操作(通过将提交变量设置为任何值来发送提交变量)

admin.php的

 $event_id = $_SESSION['fedit'];
 if($_GET['edit'])
 {
   $url = "edit.php?event_id=". $event_id . "&submit=1";
   header("Location: $url");
 }

edit.php

if($_GET["Submit"])
{
   $val=$_GET['event'];
   $remail=$_GET['email'];
   $rname = $_GET['ename'];
   $sqt=mysql_query("UPDATE users SET NAME='$rname',EMAIL='$remail' WHERE EID ='$val'");
   header("Location: admin.php");
}