[RESOLU] Fonction "hidden"

Eléphanteau du PHP | 17 Messages

25 févr. 2019, 18:54

Bonjour,

Me revoici sur votre forum pour un second problème, je n'arrive pas à sauvegarder mes données sur une variable d'un formulaire vers une autre page.
Enfin c'est un peu plus compliqué, lorsque je change de page, pas de soucis, ma variable est bien présente, mais lorsque que j'envoie celle-ci sur ma base de données, les données disparaisse, malgré un code en "hidden" pour la sauvegarder.

Je la teste sur une ligne uniquement pour l'instant en essayant de trouver la bonne saisie, voici la ligne en question :
<input type="hidden" name="FJ" value="<?php echo $_POST['FJ']; ?>"/><br/><br/>
En vous remerciant d'avance pour votre aide.
Cordialement.

Mammouth du PHP | 2703 Messages

25 févr. 2019, 19:01

ce code peut fonctionner. il nous manque des éléments pour dire que cela doit fonctionner.
il faut regarder dans la source de la page ou dans la console de son navigateur si le champ value a bien la valeur attendue dans tous les cas de figure.

Eléphanteau du PHP | 17 Messages

25 févr. 2019, 19:06

Très bien, je vous envoi le code du formulaire :
<!doctype html>
<html>
    <head>
      <title>Ma page d'accueil</title>
    </head>
    <body>
        <h1>Bienvenue sur le formulaire d'inscription de données </h1>
        <h2>Commencez-donc par vous inscrire :</h2>
        <form name="inscription" method="post" action="index.php">
            Entrez votre type d'entreprise : <input type="text" name="FJ"/><br/><br/>
            Entrez votre nom d'entreprise : <input type="text" name="RS"/> <br/><br/>
            Entrez votre civilite :
            <SELECT name="civilite">
              <OPTION value="M">M
                <OPTION value="MME">MME
                  <OPTION value="MMS">MMS
            </SELECT><br/><br/>
            Entrez votre nom & prénom : <input type="text" name="nom"/> <br/><br/>
            Entrez votre adresse : <input type="text" name="adresse"/> <br/><br/>
            Entrez votre adresse bis : <input type="text" name="adressebis"/> <br/><br/>
            Entrez votre ville : <input type="text" name="ville"/><br/><br/>
            Entrez votre code postal : <input type="text" name="cp"/> <br/><br/>
            Entrez votre profession :<input type="text" name="profession"/> <br/><br/>
            Entrez votre numéro de téléphone portable : <input type="text" name="portable"/> <br/><br/>
            Entrez votre mail : <input type="text" name="mail"/> <br/><br/>
            Entrez votre numéro de téléphone fixe : <input type="text" name="telfix"/> <br/><br/>
            Vérifier vos saisis, puis cliquer sur :
            <input type="submit" name="valider" value="Valider les données"/>
        </form>
        <?php
          if(isset($_POST['valider'])){
            $FJ=$_POST['FJ'];
            $RS=$_POST['RS'];
            $civilite=$_POST['civilite'];
            $nom=$_POST['nom'];
            $adresse=$_POST['adresse'];
            $adressebis=$_POST['adressebis'];
            $ville=$_POST['ville'];
            $cp=$_POST['cp'];
            $profession=$_POST['profession'];
            $portable=$_POST['portable'];
            $mail=$_POST['mail'];
            $telfix=$_POST['telfix'];
          }
        ?>

    </body>
</html>

Ainsi que le code de la page qui récupère et envoi les données :
<!doctype html>
<html>
    <head>
      <title>Ma page d'accueil</title>
    </head>
    <body>
        <h1>Bienvenue sur le formulaire d'inscription de données </h1>
        <h2>Vérifier maintenant vos données ! :</h2>
        <form name="vérification" method="post" action="index.php">
             <input type="hidden" name="FJ" value="<?php echo $_POST['FJ']; ?>"/><br/><br/>
             <input type="hidden" name="RS" value="<?php $_POST['RS']; ?>"/> <br/><br/>
            <SELECT type="hidden" name="civilite">
              <OPTION  value="M">
                <OPTION  value="MME">MME
                  <OPTION  value="MMS">MMS
            </SELECT><br/><br/>
            <input type="hidden" name="nom"/> <br/><br/>
            <input type="hidden" name="adresse"/> <br/><br/>
            <input type="hidden" name="adressebis"/> <br/><br/>
            <input type="hidden" name="ville"/><br/><br/>
            <input type="hidden" name="cp"/> <br/><br/>
            <input type="hidden" name="profession"/> <br/><br/>
            <input type="hidden" name="portable"/> <br/><br/>
            <input type="hidden" name="mail"/> <br/><br/>
            <input type="hidden" name="telfix"/> <br/><br/>
        </form>

        <?php
                if(isset($_POST['valider'])){
                  $FJ=$_POST['FJ'];
                  $RS=$_POST['RS'];
                  $civilite=$_POST['civilite'];
                  $nom=$_POST['nom'];
                  $adresse=$_POST['adresse'];
                  $adressebis=$_POST['adressebis'];
                  $ville=$_POST['ville'];
                  $cp=$_POST['cp'];
                  $profession=$_POST['profession'];
                  $portable=$_POST['portable'];
                  $mail=$_POST['mail'];
                  $telfix=$_POST['telfix'];

                    if ($_POST['valider']=="Valider les données") {
                    if (($nom=="")||($mail=="")||($portable=="")){
                    if($nom=="") print("Veuillez saisir le nom de l'utilisateur<BR>\n");
                    if($mail=="") print("Veuillez saisir le mail de l'utilisateur<BR>\n");
                    if($portable=="") print("Veuillez saisir le numéro de portable de l'utilisateur<BR>\n");
                    if($ville=="") print("Veuillez saisir votre ville<BR>\n");

                    }

                    else {
                    echo "Les informations saisis sont correct ! ";
                  }
                  }
                }

                echo '<br/> Voici les données que vous avez enregistrées : <br/>
                Le type de votre entreprise est : '. $FJ.'<br/>
                Le nom de votre entreprise est : '. $RS.'<br/>
                Votre civilité est : '. $civilite.' <br/>
                Votre nom et prénom sont : '. $nom.' <br/>
                Votre adresse est : '. $adresse.' <br/>
                Votre adresse bis est : '.$adressebis.' <br/>
                Votre ville est : '. $ville.' <br/>
                Votre code postal est : '. $cp.' <br/>
                Votre profession est : '. $profession.' <br/>
                Votre numéro de téléphone portable est le : '. $portable.' <br/>
                Votre mail est : '. $mail.' <br/>
                Votre numéro de téléphone fixe est le : '. $telfix.' <br/>
                Vérifier celle-ci, puis cliquer sur "Envoyer les données"';

                  $bdd = new PDO('mysql:host=localhost;dbname=bdd arras utilitaire;charset=utf8', 'root', '');
                      if(isset($_POST['envoyer'])){
                    $requete = $bdd->prepare('INSERT INTO batiment(FJ, RS, civilité, nom, adresse, adressebis, ville, cp, profession, portable, mail, telfix)
                                              VALUES(:FJ, :RS, :civilite, :nom, :adresse, :adressebis, :ville, :cp, :profession, :portable, :mail, :telfix)');

                    $requete->bindValue(':FJ', $FJ);
                    $requete->bindValue(':RS', $RS);
                    $requete->bindValue(':civilite', $civilite);
                    $requete->bindValue(':nom', $nom);
                    $requete->bindValue(':adresse', $adresse);
                    $requete->bindValue(':adressebis', $adressebis);
                    $requete->bindValue(':ville', $ville);
                    $requete->bindValue(':cp', $cp);
                    $requete->bindValue(':profession', $profession);
                    $requete->bindValue(':portable', $portable);
                    $requete->bindValue(':mail', $mail);
                    $requete->bindValue(':telfix', $telfix);

                    $requete->execute();
                  }
      ?>

                      <form name="envoyer" method="post" action="index.php">
                        <input type="submit" name="envoyer" value="Envoyer les données"/>
                      </form>
                      <form name="retour" method="post" action="saisie.php">
                        <input type="submit" name="retour" value="Retour sur le formulaire"/>
                      </form>


    </body>
</html>

Eléphanteau du PHP | 25 Messages

26 févr. 2019, 19:57

Bonjour,

Beaucoup de choses à dire sur votre code
1) dans le code du formulaire (on suppose que c'est index.php) , en bas de la page, tout votre code PHP est inutile.
2) Vous postez votre formulaire sur la même page ( index.php). Quelle utilité ? surtout que visiblement cela vous embrouille dans la logique de votre code.
3) Pour traiter les variables de votre formulaire vous partez du principe que si la variable "valider" existe toutes les autres existent. C'est présomptueux, et source d'erreur. Faire un

Code : Tout sélectionner

if (isset($_POST['FJ'])) { $FJ=$_POST['FJ']; } else { $FJ=''; }
pour chaque variable est plus stable et vous évitera toute surprise. Vous devez vous assurer d'être certain de ce que vous avez à chaque étape de votre script dans votre formulaire de traitement, quel que soit ce qui est envoyé à votre formulaire de traitement.
4) Ensuite tout votre formulaire sur votre page de traitement est en hidden. Comment faites-vous dans le cas d'une erreur pour corriger le formulaire et le renvoyer sur la page de traitement?
5) Une fois que toutes les données voulues sont ok et valides alors vous pouvez les envoyer à votre base de données.
Architecte de données & applications web
MCSE Data Management & Analytics

Eléphanteau du PHP | 17 Messages

26 févr. 2019, 20:38

Bonsoir,

Le formulaire était sur saisie.php, permettant à l'utilisateur de saisir ses données, puis je voulais les stocker sur index.php en hidden. Je viens de me rendre compte qu'en effet, je ne vous avez pas fourni le fait d'avoir une page saisie..
Du coup, j'ai réussi une auto-correction dans l'après-midi, désespérant sur la double page, je n'ai finalement plus qu'une page, avec le formulaire, et la vérif dessus, je perd un peu le fait stocker ma données dans une variable en contournant pas une obligation de saisie sur le formulaire, mais grâce à votre aide, je pourrais réutiliser cela à l'avenir.

Merci de votre aide ! :)