2017-01-28 8 views
0

Ich versuche, zwei PHP-Seiten mit Fragen zu verknüpfen. Sobald ein Formular übergeben wurde, prüft es die Datenbank, um den Wert zu speichern, und muss dann zur nächsten Seite umleiten. Aber ich stecke hier bei Header() -Funktion. Es wird nicht zur nächsten Seite weitergeleitet. Wo mache ich es falsch?Umleiten nach dem Senden an die nächste Seite

$q1= "SELECT * FROM user_lang WHERE lang='$lang' AND q_id='1'"; 
$r1=mysqli_query($connection, $q1) or die(mysqli_error($connection)); 
$row1=mysqli_fetch_assoc($r1); 

$q2="SELECT * FROM user_test WHERE mid='$username'"; 
$r2=mysqli_query($connection, $q2) or die(mysqli_error($connection)); 
$row2=mysqli_fetch_row($r2); 
echo '<div class="wrapper" style="padding-top:5%;">'; 
echo '<div class="login-page"> 
<h2 align="center">'.$lang.' Module 1</h2>'; 
if(isset($_POST['answer'])) 
{ 
    $answer=$_POST['answer']; 
    if(mysqli_num_rows($r2)>0) 
    { 
$loadquery2="UPDATE user_test SET q1='$answer' WHERE mid='$username'"; 
$loadres2=mysqli_query($connection,$loadquery2) or die(mysqli_error($connection)); 
     header('Location: "/vtest/q2.php"'); 
    } 
    else 
    { 
     $loadquery2="INSERT INTO user_test(mid,q1) VALUES ('$username','$answer')"; 
     $loadres2=mysqli_query($connection,$loadquery2) or die(mysqli_error($connection)); 
     header('Location: "/vtest/q2.php"'); 
    } 
} 
else 
{ 
echo "<form method='POST'>"; 
echo $row1['quest']; 
echo '<br><input type="radio" name="answer" value="a" checked>'.$row1['o1'].'<br>'; 
echo '<input type="radio" name="answer" value="b" >'.$row1['o2'].'<br>'; 
echo '<input type="radio" name="answer" value="c" >'.$row1['o3'].'<br>'; 
echo '<input type="submit" value="Submit">'; 
echo"</form>"; 
} 
echo '</div></div></body></html>'; 
?> 

BTW wird diese Datei q1.php namens &, wenn ich das Formular abzuschicken die URL ändert sich nicht. Ich denke, es bedeutet, es ist kein Fehler auf Seite q2.php, sondern auf q1.php selbst. Ersetzen

+3

Header-Code wird nicht nach Echo oder einem beliebigen HTML-Tag ausgeführt. Sie müssen Ihre Bedingung an der Spitze verschieben – Bhavik

+0

So gibt es keine Methode abgesehen von dem Schließen der PHP? –

+0

können Sie JavaScript-Redirect-Methode verwenden .. 'echo '';' – Bhavik

Antwort

-1

header('Location: "/vtest/q2.php"'); 

mit

header("Location: /vtest/q2.php"); 
exit; 

UPDATE

1) gibt es keine Ausgabe (dh Echo .. oder HTML-Codes) vor dem Header sein sollte (.. .....); Befehl.

2) vor <?php and after ?> Tags sollte kein Leerzeichen (oder Zeilenumbruch) vorhanden sein.

3) GOLDREGEL! - Die Datei (und auch, wenn Sie andere Dateien enthalten) haben UTF8 ohne BOM-Codierung (und nicht nur UTF-8). Das ist in vielen Fällen ein Problem (weil die UTF8-kodierte Datei am Anfang der Dateiausgabe einen besonderen Charakter hat) !!!!!!!!!!!

4) Fehlerbericht aktivieren. Und erzähle den Fehler.

5) Bei Weiterleitung, dann nach Kopfzeile (...); Sie müssen den Exit verwenden.

6) immer mit 301 oder 302 in Referenz:

header("location: http://example.com", true, 301); exit; 

7) Wenn keine der oben hilft, verwenden javscript Umleitung (nicht von Google) empfohlen, aber es könnte die letzte Chance sein ...:

echo "<script type='text/javascript'>window.top.location='http://example.com/';</script>"; exit; 
+0

Nö nicht funktioniert –

+0

haben Sie überprüfen, ob Ihr Update oder Abfrage einfügen funktioniert? – shubham715

+0

Ja, sie funktionieren perfekt! –

Verwandte Themen