Ce qui suit est l'une de mes pages HTML.

<form id="regForm" method="post" action="enquiry_process.php" novalidate="novalidate">

<fieldset>
    <legend>Personal Details</legend>

      <label>First Name:</label>
          <input  type="text" name="owner" id="owner"  /><br />

        <label>Last Name:</label>
          <input type="text" name="owner2" id="owner2" /><br />
</fieldset>

 <p>
    <input type="Submit" onclick="validateForm()"/>
    <input type="Reset" value="Reset" />
</p>

</form>

Ce qui suit est ma deuxième page HTML.

<form id="bookForm" method="post" action="view_enquiry.php">

<?php
        $fname = $_POST['owner'];
        $lname = $_POST['owner2'];
?>

        <input type="hidden" name="owner" value="<?php echo $fname; ?>">
        <input type="hidden" name="owner2" value="<?php echo $lname; ?>">

<fieldset>
            <legend>User Details</legend>
            <p>Your First Name: <span id="confirm_fname"></span></p>
            <p>Your Last Name: <span id="confirm_lname"></span></p>

<input type="submit" name="submit" value="Confirm Booking" />
<input type="button" value="Cancel" id="cancelButton" onclick="cancelBooking()" />

</fieldset>

Les fonctions que vous voyez comme validateForm() et cancelBooking() sont des fonctions Javascript qui valident mon formulaire ou renvoient l'utilisateur de la 2ème page à la 1ère et je pense qu'elles n'ont rien à voir avec ma question.

Lorsque je clique sur Soumettre sur la première page HTML, il doit transmettre la valeur de owner et owner2 à la deuxième page, n'est-ce pas?

Je continue à obtenir un index indéfini et après avoir regardé autour de moi, il semble que je doive utiliser isset() ou empty() dans mon PHP, mais cela semble ne masquer que mes avis mais ne le résout pas réellement? Lorsque j'ajoute simplement isset(), cela finit par donner ma troisième page Variable non définie . Les method sur mes formulaires sont déjà post.

Y a-t-il un autre problème ici? Je vous remercie.

EDIT: Ce qui suit sont mes Javascripts pertinents.

ValidateForm:

function validateForm(){
    "use strict";


    gErrorMsg = "";
    var nameOK = chkOwnerName();

    var nameOK2 = chkOwnerName2();

    var isAllOK = (nameOK && nameOK2);
    if(isAllOK){

        isAllOK = storeBooking();
    }
    else{
        alert(gErrorMsg);
        gErrorMsg = "";

    }
    return isAllOK;
    }

Réservation de magasin:

function storeBooking() {

"use strict";
sessionStorage.firstname =   document.getElementById("owner").value;
sessionStorage.lastname =    document.getElementById("owner2").value;
window.location = "enquiry_process.php";
}

J'ai une autre fonction appelée getbooking qui s'exécute avec la condition window.onload

function getBooking(){
 //if sessionStorage for username is not empty

 if((sessionStorage.firstname != undefined)){
 //confirmation text

 document.getElementById("confirm_fname").textContent = sessionStorage.firstname;

 document.getElementById("confirm_lname").textContent = sessionStorage.lastname;

}

chkOwnerName et chkOwnerName2 sont des fonctions qui valident le formulaire avec des motifs et je ne pense pas qu'elles soient pertinentes.

J'ai également mis à jour ma 2ème page HTML avec du contenu Javascript car je supposais que cela n'était pas pertinent au début.

1
Raph 26 nov. 2017 à 14:25

3 réponses

Meilleure réponse

Vous pouvez déboguer avec le code ci-dessous en l'ajoutant dans votre 2ème page de formulaire.

echo "<pre>"; print_r($_POST); die;

Si vos données de formulaire ne vont pas à votre 2ème formulaire, Array () sera vide.

0
Amit Gupta 26 nov. 2017 à 12:43

"if (empty ($ var))" et "if (isset ($ var))" sont des conditions, ils vérifient quelque chose et exécutent du code dans "{}" si le test renvoie vrai. Donc, ils ne «résolvent» pas les problèmes.

Votre script a bien fonctionné pour moi sans vos js. Peut-être le problème.

Essayez simplement votre code étape par étape. Vous trouverez ce qui ne va pas.

0
Julien Trépagne 26 nov. 2017 à 15:02

Vous pouvez essayer par print_r($_REQUEST[]); sur la deuxième page du haut du formulaire (enquiry_process.php), j'espère que le formulaire est dans le même dossier et que le nom de la deuxième page du formulaire est "enquiry_process.php".

Puisque vous envoyez des données à l'aide du formulaire de message, vous devriez pouvoir les récupérer d'ici le print_r($_POST); ou le print_r($_REQUEST);

0
shashikant kuswaha 26 nov. 2017 à 12:13
47495593