PHP-重定向到另一个页面

PHP-重定向到另一个页面,php,redirect,Php,Redirect,我的问题很简单。但我太过挣扎了。问题是一旦我点击提交按钮,页面应该重定向到其他页面。请告诉我我做错了什么?因为我什么都试过了 代码: Update-docket.php <?php //error_reporting(0); $link = mysqli_connect("localhost", "home_db", "root", ""); // Check connection if($link === false){ die("ERROR: Could not conne

我的问题很简单。但我太过挣扎了。问题是一旦我点击提交按钮,页面应该重定向到其他页面。请告诉我我做错了什么?因为我什么都试过了

代码:

Update-docket.php

<?php
//error_reporting(0);
$link = mysqli_connect("localhost", "home_db", "root", "");

// Check connection 
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security
$sql = 'SELECT * FROM prod_details';
$result = mysqli_query($link,$sql);

while ($row = mysqli_fetch_array($result))
{ 
     $Quantity1 = $_POST['p_'.$row['id']. ''];          
     $id = $row['id'];
     $store = $row['rstore'];
     // echo $store;

     foreach ($_POST as $key => $value) 
     {}

     if(!empty($Quantity1)) {
         $query="update prod_details SET rdocket='$Quantity1' WHERE id='$id'";
         if(mysqli_query($link, $query)) {
            header('Location: /docket-details.php');
            exit();
         } else {
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
         }
      }
  }

您的
位置
行不正确,请使用以下命令重定向:

header('Location: /url');

更新
我认为你的if声明没有得到满足。再次尝试启用错误日志记录,并在每个条件部分中转储var_,以查看真正的问题所在。现在,您已经将代码更新为使用
标题
,理论上应该可以使用。但我猜,$\u POST不会返回您想要/期望的内容。

编辑

试试这个:

header('Location: /docket-details.php');
// i'm sorry, forgot to add exit
exit();
当然,你可以填写完整的网址,如果你提到


重要提示:此行之前不应进行任何输出,因为它将生成标题。在发送响应头之前,没有一个
回音

应该是这样的:

if(!empty($Quantity1)) {
    $query="update prod_details SET rdocket='$Quantity1' WHERE id='$id'";
    $res = mysqli_query($link, $query);

    if($res) {
        header('Location: /docket-details.php', true, '200');
    } else {
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}
您有“updatedetails.php”,但在表单操作中引用了“updatedocket.php”。因此表单操作重定向到另一个文件

正如@ThisgyHasTwoThumbs所述,您的位置线不正确

header('Location: /url');
exit();
您还需要
exit()
,因为这将阻止在该行之后执行任何代码

详情如下:

"update prod_details SET rdocket='$Quantity1' WHERE id='$id'"
Wil看起来更干净,更容易阅读,如:

"UPDATE `prod_details` SET `rdocket` = '$Quantity1' WHERE `id` ='$id'"
用大写字母书写单词。在反勾号中换行列名和表名将阻止“”

使之成为:

<form class="form-horizontal" action="update-docket.php" method="post" name="myform" autocomplete="off">

<?php
if (!empty( $Quantity1) )
{
    $query = "UPDATE `prod_details` SET `rdocket` = '$Quantity1' WHERE `id` ='$id'";
    if( mysqli_query( $link, $query ) )
    {
        header( 'Location: /docket-details.php' );
        exit();
    } else {
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}

标题(位置:带扩展名的pagename)

如果上面的代码运行不正常,并且给出错误“header未更改”,则将下面的行分别放在页面的顶部和底部

ob_start()-在页面顶部
ob_end_flush()-页面底部

最好不要在页眉()之前输出任何内容。。如;不要回显“错误:无法执行$sql。”。mysqli_错误($link)

似乎您的文件名为“Update docket.php”,大写为U。但是,在您调用action=“Update docket.php”的形式中,

$result
?您在哪里定义了
$result
?似乎您在表单上使用了错误的操作…是否正确?代码中有一些额外的{您有“update details.php”,但您引用了“update docket.php”在您的表单操作中,您可能已经发送了标题。检查:了解更多信息。已尝试。已更新代码。没有更改。仍然相同。此行之前不应进行任何输出,因为它将生成标题。在发送响应标题之前,没有任何回显!我已更新了代码。仍然面临相同的问题。它仅重定向到update-details.php此问题页面不工作,当前无法处理此请求。HTTP错误500好吧,很难从您的描述中说出问题所在。请尝试将问题分解为一小块,并解决每个问题。我建议您在if-if(!empty($Quantity1))=if(true)中将条件设置为true,然后只在if正文中保留重定向行,看看它是否有效。如果有效,然后尝试执行查询,如果无效,则可能是另一个问题。@RB_u错误很容易。这是url的
/
之前的
'
<form class="form-horizontal" action="update-docket.php" method="post" name="myform" autocomplete="off">

<?php
if (!empty( $Quantity1) )
{
    $query = "UPDATE `prod_details` SET `rdocket` = '$Quantity1' WHERE `id` ='$id'";
    if( mysqli_query( $link, $query ) )
    {
        header( 'Location: /docket-details.php' );
        exit();
    } else {
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}