2013-02-21 116 views
1

我正在构建一个应用程序,其中显示了详细信息(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"); 
      } 
+0

看到在日志文件中的错误或警告。也许你有“标题已发送”的消息 – DevMetal91 2013-02-21 11:05:24

+0

什么是肯定的“不会发生”?你在屏幕上看到什么? – 2013-02-21 11:14:21

+0

我得到看到相同的形式..只是在没有值的表和提交按钮 – Sindu 2013-02-21 11:17:26

回答

3

我不知道你在哪里有将这段代码放在页面上,但是如果在某个http标头输出在标题(位置:“”)之前发送,那么它将不起作用。尝试其他人的建议,但如果一切都失败了,你可能会想使用JS。

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

用这个来代替

header("Location: $page"); 

,它应该工作,我猜。

+0

嘿哇..这工作...我得到重定向! :) Thnx一吨 – Sindu 2013-02-21 11:21:27

+0

没问题。总是在这里帮助:) – CoderGuy 2013-02-21 12:02:56

+0

+1,它非常有帮助...我尝试了很长时间并尝试了很多,但这只能起作用。 thnx米什拉老板 – 2014-06-24 18:42:48

-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); 
     } 
0

添加action='edit.php' method='get'到您的表单标签。 并在edit.php页面提交后放置代码的其余部分。

+0

我做到了这一点只.. – Sindu 2013-02-21 11:08:05

+0

因为你说它不工作'if($ _ GET [“提交“]){}',在那里设置一个标志,然后在该标志之外,如果语句检查标志值是否存在。尝试从那里重定向。 – 2013-02-21 11:13:58

0

最好这样做:

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

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

    // Exit the PHP process 
    exit; 
} 
-1

其实,这是行不通的,isnce您的edit.php将永远不会达到它的if语句,因为你不发送$ _GET [“提交”。你需要做以下(将其设置为任意值发送提交变量)

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"); 
} 
+0

它有助于任何方面。 – Sindu 2013-02-21 11:10:08

+0

更改答案,检查上面 – Husman 2013-02-21 11:11:58

+0

它仍然停留在同一页... – Sindu 2013-02-21 11:13:47

0

很难说你在发布的不完整的代码中做了什么。
但是,它看起来像不重定向,但表单提交已中断。 也有您的代码2个严重的缺陷:

  • 无论编辑必须使用POST方法来完成,没有得到
  • ,你必须正确地格式化你的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

形式。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 ?> 
相关问题