我正在构建一个显示详细信息的应用程序(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 :(得分: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)
很难从你发布的不完整代码中分辨出你在做什么 但是,看起来不是重定向,但表单提交被破坏了。 您的代码中还存在两个严重缺陷:
无论如何,这里有一个这样的应用程序的例子(虽然只编辑一个字段。你可以轻松添加更多),这是有效的。
<?
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");
}