wake-up-neo.net

PHP- Weiterleitung auf eine andere Seite

Meine Frage ist sehr einfach. aber ich habe zu viel damit zu kämpfen. Das Problem besteht darin, dass die Seite auf eine andere Seite umgeleitet wird, sobald ich auf die Schaltfläche zum Senden geklickt habe. Sagen Sie mir bitte einfach, was ich falsch gemacht habe. Weil ich alles probiert habe.

Code:

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

docket-details.php

<form class="form-horizontal" action="update-docket.php" method="post" name="myform" autocomplete="off">
  <button  type='submit'  name='submit' class='btn c-theme-btn c-btn-square c-btn-uppercase c-btn-bold'>Submit</button>

Bitte helfen !!!

1
skz

Ihre Location-Zeile ist falsch. Umleitung mit:

header('Location: /url');

https://secure.php.net/manual/de/function.header.php

aktualisieren

Ich rechne damit, dass Ihre Aussage nicht erfüllt wird. Aktivieren Sie erneut die Fehlerprotokollierung und var_dumping in jedem Bedingungsabschnitt, um zu sehen, wo das eigentliche Problem liegt. Jetzt haben Sie Ihren Code aktualisiert, um header zu verwenden, was theoretisch funktionieren sollte. Aber meine Vermutung ist, dass $ _POST nicht das zurückgibt, was Sie wollen/erwarten.

3
treyBake

bearbeitet!

Versuche dies:

header('Location: /docket-details.php');
// i'm sorry, forgot to add exit
exit();

natürlich können Sie auch die vollständige URL angeben, wenn Sie sich darauf beziehen.

Wichtig: Vor dieser Zeile sollte keine Ausgabe erfolgen, da ein Header generiert wird. Kein einziger echo vor dem Senden des Antwortheaders! 

0
Reflective

Es sollte so etwas sein:

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

sie haben "update-details.php", aber Sie verweisen in Ihrer Formularaktion auf "update-docket.php". Die Formularaktion leitet also auf eine andere Datei um.

Wie von @thisGuyHasTwoThumbs angegeben, ist Ihre Standortzeile falsch.

header('Location: /url');
exit();

Sie möchten auch exit(), da dies die Ausführung von Code nach dieser Zeile verhindert.

https://secure.php.net/manual/de/function.header.phphttps://secure.php.net/manual/de/function.exit.php

Jus für die Details:

"update prod_details SET rdocket='$Quantity1' WHERE id='$id'"

Wil sieht viel sauberer aus und ist einfacher zu lesen:

"UPDATE `prod_details` SET `rdocket` = '$Quantity1' WHERE `id` ='$id'"

Hält MySQL-Wörter in Großbuchstaben. Umbruch von Spalten- und Tabellennamen in Backticks verhindert " MySQL serverd Word error "

Ich mach das:

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

Die Variable $Quantity1 ist für die SQL-Injection geöffnet. Um dies zu beheben, können Sie escape die Variable verwenden, wenn es sich um eine Zeichenfolge handelt, Sie sollten jedoch preparierte Anweisung verwenden.

0
SuperDJ