1

詳細が表示されるアプリケーション(admin.php)を構築しています。ユーザーがedit(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");
             }
4

6 に答える 6

3

このコードをページのどこに配置したかはわかりませんが、何らかの理由でhttpヘッダー出力がそのヘッダー(場所: "")の前に送信されている場合は機能しません。他の人の提案を試してみてください。ただし、他のすべてが失敗した場合は、JSを使用することをお勧めします。

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

代わりにそれを使用してください

header("Location: $page");

そしてそれは私が推測するように動作するはずです。

于 2013-02-21T11:16:22.150 に答える
0

action='edit.php' method='get'フォームタグに追加します。そしてedit.phpページに、送信後に残りのコードを配置します。

于 2013-02-21T11:07:03.137 に答える
0

できればこれを行ってください:

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

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

   // Exit the PHP process 
   exit;
}
于 2013-02-21T11:07:07.663 に答える
0

投稿した不完全なコードから何をしているのかを判断するのは非常に困難です。
ただし、リダイレクトされていないように見えますが、フォームの送信は壊れています。コードには2つの重大な欠陥もあります。

  • GETではなくPOSTメソッドを使用して編集する必要があるものは何でも
  • SQLクエリを適切にフォーマットする必要があります。

とにかく、これは機能するそのようなアプリケーションの例です(ただし、1つのフィールドのみを編集します。さらに簡単に追加できます)。

<?  
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'; 
}  
?>

また、HTMLを保持するために2つのテンプレートも必要になります

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 ?>
于 2013-02-21T11:20:19.080 に答える
-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);
         }
于 2013-02-21T11:06:41.487 に答える
-1

$ _GET ["submit"]を送信していないため、実際には、edit.phpがifステートメントに到達することはありません。次のことを行う必要があります(送信変数を任意の値に設定して送信します)

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");
}
于 2013-02-21T11:07:56.937 に答える