2016-04-08 18 views
1

Wenn ich meine Kategorie Suchformular einreichen, möchte ich, dass es den PHP-Code in der DisplayMealsCont.php ausführen und dann mit den aktualisierten Sitzungsvariablen zurück zur main.php gehen. Aber wenn ich versuche einen Header einzufügen ("Location: ../View/Main.php"); in der DisplayMealsCont.php bleibt es in einer Redirect-Schleife stecken.PHP Redirect Loop Problem

main.php

<?php 
require_once("../Controller/DisplayMealsCont.php"); 
session_start(); 


$category = "All"; 
if(isset($_SESSION['table'])){ 
    $table = $_SESSION['table']; 
} 
if(isset($_SESSION['Category'])){ 
    $category = $_SESSION['Category']; 
    if($category == "All"){ 
    $category = " "; 
    } 
} 
?> 
<?php 

if (is_array($table)) { 
foreach($table as $item) { 
?> 

<td align="centre"> <?= $item['Meal_Name'] ?> </td> 
    <td align="centre"> <?= $item['Description'] ?> </td> 
    <td align="centre"> <?= $item['Image'] ?> </td> 
    <td align="centre"> <?= $item['Category'] ?> </td> 
    <td align="centre"> <?= $item['Quantity'] ?> </td> 
    <td align="centre"> &pound; <?= $item['Price'] ?> </td> 
    <tr> 

<?php 
} 
} 

?> 
</table> 

    <form method="post" action="../Controller/DisplayMealsCont.php"> 
     Category: <br /> 
     <select name="Category"> 
     <option value="All">All</option> 
      <option value="Main">Main</option> 
      <option value="Drink">Drinks</option> 
     </select> <br /> 
     <input type="submit" name="categorysubmit" value="Search" /> 
     </form> 

DisplayMealModel.php

<?php 
require_once("../Model/config.php"); 

class DisplayMeals 
{ 
public $dbConnection; 

public function __construct(){ 

    $db= new database(); 
    $connect=$db->getdatabase(); 
    $this->dbConnection = $connect; 

} 

public function MainMeals($category){ 
    $_SESSION['test'] = $category; 
    $stmt = $this->dbConnection->prepare("SELECT * from meal WHERE Category LIKE '$category%'"); 
    $stmt->execute(); 
    return $stmt->fetchAll(PDO::FETCH_ASSOC); 



} 
?> 

DisplayMealCont.php

<?php 
require("../Model/DisplayMealModel.php"); 


$newMeal = new DisplayMeals(); 
if(!isset($category)){ 
$category = "main"; 
} 
if(isset($_SESSION['Category'])){ 
$category = $_SESSION['Category']; 
} 
$table = $newMeal-> MainMeals($category); 
$_SESSION['table'] = $table; 



?> 
+0

Es bedeutet, dass die Zielseite eine andere Weiterleitung hat, die eine andere Weiterleitung hat ... – Qirel

+0

können Sie mir zeigen, wo ich Redirect, weil ich nur wissen, wie mit Kopfzeilen umleiten. danke – Jurgen

+0

Hängt davon ab, wo Sie es setzen, aber denken Sie daran, dass Sie diese Datei in Ihrem Haupt enthalten, so dass es immer zu sich selbst umleiten wird. – Qirel

Antwort

0

Ich kann nicht sehen, warum ein header() in eine Umleitungsschleife verursacht , aber hast du versucht, einen Würfel hinzuzufügen(); nach dem Header()?

Es ist eine gute Übung, und wenn es funktioniert, kann es Licht in das, was das Problem verursacht. Abgesehen davon würde es helfen, wenn Sie den Code mit dem Looping-Header darin gepostet haben, damit wir sehen können.

+0

ja, ich habe versucht sterben(); und beenden(); Nach dem Header und ich bekomme immer noch das gleiche Problem – Jurgen

+0

Woher wissen Sie, dass es ein Umleitungsproblem ist? Welchen Fehler bekommst du? Sie können eine Sitzungsvariable in DisplayMealCont.php und auf der Hauptseite die Die() mit einer Display-Meldung einstellen, wenn diese Sitzungsvariable gefunden wird, um zu sehen, ob die Kopfzeile tatsächlich funktioniert. Kopfzeile funktioniert möglicherweise nicht, weil die "headers have some sent sent" Fehlermeldung, die je nach Serverkonfiguration nicht angezeigt wird –

+0

wenn ich die main.php in meinem Browser öffne, bekomme ich "Diese Webseite hat eine Redirect-Schleife" Fehler – Jurgen