2016-08-17 9 views
0

Ich habe ein Formular, dieses Formular befindet sich auf einer Seite mit dem Namen question1.php, und ich möchte es Frage2.php laden, wenn der Absenden-Taste gedrückt wird.Neue Seite geladen, nachdem PHP-Code ausgeführt wurde?

<form action="question2.php" method="post"> 
    <input type="radio" name="ans" value="cuboid"> 
    <input type="radio" name="ans" value="cone"> 
    <input type="radio" name="ans" value="cylinder"> 
    <input type="radio" name="ans" value="sphere"> 
    <input type="submit" value="submit" name="submit"> 
</form> 

Aber ich habe auch diesen PHP-Code

<?php 
    if(isset($_POST['submit'])) { 
     if(isset($_POST['ans'])) { 
      $selected_answer = $_POST['ans']; 
      if($selected_answer == "cuboid") { 
       $_SESSION["cuboid"] = ((int)$_SESSION["cuboid"]) + 1; 
      } 
     } 
    } 
?> 

EDIT: Ich habe eine einfachere Demo gemacht, um zu versuchen und zu erklären, mich besser, ich drei Seiten bekommen haben.

page1.php

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 

<form action="page2.php"> 
    <input type="submit" value="submit" name="submit"> 
</form> 
<?php 
// Set session variables 
$_SESSION["favcolor"] = "green"; 
?> 
</body> 
</html> 

page2.php

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 
    <form action="page3.php" method="post"> 
     <input type="radio" name="ans" value="color"> 
     <input type="submit" value="submit" name="submit"> 
    </form> 
<?php 
// Echo session variables that were set on previous page 
if(isset($_POST['submit'])) { 
    if(isset($_POST['ans'])) { 
     $selected_answer = $_POST['ans']; 
     if($selected_answer == "color") { 
      $_SESSION["favcolor"] = "red"; 
     } 
    } 
} 
?> 
</body> 
</html> 

Und page3.php

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 

<?php 
    echo "Favorite color is " . $_SESSION["favcolor"] . "."; 
?> 

</body> 
</html> 

So auf der ersten Seite ich die Session-Variable "favcolor" deklarieren, dann auf der zweiten Seite, wenn der Benutzer das Optionsfeld auswählt Ich möchte die Farbe auf rot aktualisieren, aber es wird nur nicht für mich, auf der dritte Seite ist es noch grün drucken

+0

Sie wahrscheinlich vergessen 'session_start()'. keine gestartete Session, keine erhaltenen/propagierten Daten –

+0

Was ?? Sie sollten wirklich mehr darüber lesen, was php wirklich auf http: // php ist.net –

+0

Ich habe session_start(), Am Ende meines Quiz (5 Fragen) kann ich die Session-Variable anzeigen, aber sie wurden nicht inkrementiert, wenn sie – Dfarrelly

Antwort

1

Sie hatten ein Problem mit page2.php, weil Sie das Formular auf page3.php einreichen, aber Sie bearbeiten die Übermittlungsanfrage auf page2.php. Also habe ich unten für dich korrigiert.

page1.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
    <body> 
    <form action="page2.php" method="post"> 
     <input type="submit" value="submit" name="submit"> 
    </form> 
    <?php 
    // Set session variables 
    $_SESSION["favcolor"] = "green"; 
    ?> 
    </body> 
</html> 

page2.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
<body> 
    <form action="page3.php" method="post"> 
     <input type="radio" name="ans" value="color"> 
     <input type="submit" value="submit" name="submit"> 
    </form>   
</body> 
</html> 

page3.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
<body> 
    <?php 
    // Echo session variables that were set on previous page 
    if (isset($_POST['submit'])) { 
     if (isset($_POST['ans'])) { 
      $selected_answer = $_POST['ans']; 
      if ($selected_answer == "color") { 
       $_SESSION["favcolor"] = "red"; 
      } 
     } 
    } 
    echo "Favorite color is " . $_SESSION["favcolor"] . "."; 
    ?> 
</body> 
</html> 
0

Ich hoffe, das sollte funktionieren.

+0

Warum würden Sie nur hoffen? –

+0

Könnten Sie bitte einen Blick auf meine Bearbeitung werfen Ich habe versucht, mich selbst besser zu erklären :) – Dfarrelly

+0

Schau meine neueste Antwort –

0

Von dem, was ich sagen kann, versuchen Sie, auf eine andere Webseite umzuleiten.

Versuchen Sie, HTTP-Header mit der Funktion header() zu senden.

header('Location: http://example.com/page3.php'); 
exit(); 

Wenn der HTTP-Header zunächst nicht funktioniert, schalten Sie den Pufferausgang mit ob_start().

0

Sie suchen auf der falschen Seite nach $ _POST ['ans'].

Derzeit suchen Sie nach 'ans', wenn der Benutzer die Seite2.php eingibt, bevor der Benutzer das Formular mit diesem Eingabeelement übermittelt.

Wenn Sie das Formular in page2.php absenden, sendet die Aktion die Anforderung an page3.php, sodass Sie Ihre if -Anweisung tatsächlich verschieben möchten, um die Farbe grün (unter dem Sitzungsstart) von page3 zu setzen .php

Verwandte Themen