IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Gestion de la transition de page en page des données d'un formulaire dynamique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut Gestion de la transition de page en page des données d'un formulaire dynamique
    Bonjour,

    Désolé de ne pas avoir posté dans un sous-forum, je ne savait pas vraiment au quel le rattacher ce post.

    Je rencontre actuellement un problème sur la gestion des données issues d'un formulaire créé dynamiquement. En effet j'aimerai que la transition de mes données de pages en pages soit fait de la façon la plus propre possible mais étant encore débutant, je n'ai pas encore les bons reflex ou l'idée sur les bonnes façons de procéder.

    J'ai un formulaire d'ajout basique dans lequel on peut ajouter des champs dynamiquement en cliquant sur des boutons. Les informations rentrées dans le formulaire sont ensuite montrées dans un tableau pour que l'utilisateur ait une bonne visualisation. Il peut alors accepter, dans ce cas les infos sont enregistrées dans la bdd ou revenir en arrière pour corriger les infos du formulaire.

    Pour l'instant j'envoie mes données de la page du formulaire vers la page du tableau en POST mais cela pose 2 problèmes.
    1 : Quand je fais un retour en arrière les champs ayant étés ajouté dynamiquement ne sont plus là, l'utilisateurs doit donc recréer ces champs et les re-remplir.
    2 : Une fois que mes données sont sur la page du tableau, elles ne sont plus disponibles pour effectuer des actions, notamment ma requête sql d'ajout si l'utilisateur confirme (il faudrait récupérer tout les champs du tableau, ce qui est fastidieux...).

    J'ai donc pensé à quelques solutions mais je ne sais pas si elles sont corrects :
    1 : Dans ma page du tableau je crée 2 formulaire qui reprennent le formulaire d'origine mais avec des input hidden que je pré-remplie avec les données reçu en POST du formulaire d'origine et juste un bouton visible (back ou confirmer). Le 1er quand quand je le submit me renvoi vers la page du formulaire d'origine et je n'ai plus qu'a recrée les champs supplémentaire en php et les remplir. Pour le 2eme, quand je le submit, ce n'est finalement qu'une copie du 1er qui est POSTé vers la requête.
    Mais cela pose un problème si l'utilisateur n'utilise pas le bouton back mais les bouton pages précédentes/suivantes du navigateur....

    2 : Utiliser les sessions. Lors du POST sur la page du tableau, je stock mes variables en session. Lors d'un retour vers la page précédente, je test au début de la page si les variable dans la session existe, si oui je recrée le formulaire en PHP, sinon je laisse le formulaire de base. Si l'utilisateur confirme, je n'ai qu'a effectuer ma requête avec en paramètre les variable de ma session. Mais je ne sais pas si c'est une bonne pratique...

    Si quelqu'un sait si une de ces options peuvent-être considérées comme "bonne pratique" ou si il y a tout simplement une autre solution, je suis preneur!

    Merci.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 719
    Par défaut
    il n'y a pas longtemps, j'ai utilisé la 2e solution avec les sessions.
    c'était surtout pour éviter de tester une 2e fois les données. parce qu'en mettant les données dans des champs "input hidden", elles peuvent être modifiés par rapport à leur valeur dans le code HTML donc il faut les revérifier au moment de la validation de l'utilisateur

  3. #3
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    $_SESSION n'est pas forcément mieux niveau sécurité/intégrité. (Voir la doc PHP Sessions et sécurité)

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 719
    Par défaut
    je n'ai pas compris ce qu'il y a lire dans la documentation par rapport à ce que je propose ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    la solution la plus simple et la plus pratique est l'utilisation des variables de SESSION.

    • Simple, car évite de transmettre via des input hidden les données déjà traitées
      Des validations intermédiaires (JavaScript / PHP) peuvent être effectuées à chaque étape/page, mais une vérification PHP globale doit être réalisée à la fin, au clic sur "Valider/Envoyer"
    • Pratique car, si le formulaire fait plusieurs pages, l'utilisateur peut revenir à tout moment en arrière et modifier ce qu'il veut.

    D'un form à l'autre, on peut éventuellement transmettre :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="hidden" name="etape1" value="true" />
    <input type="hidden" name="etape2" value="false" />
    <input type="hidden" name="etape3" value="false" />

    Astuce : une seule variable peut faire l'affaire : un array() !
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $_SESSION['monform']['etape1']['nom']
    $_SESSION['monform']['etape1']['prenom']
    ...
    $_SESSION['monform']['etape2']['ville']
    $_SESSION['monform']['etape2']['pays']
    ...

    Citation Envoyé par flavors Voir le message
    je test au début de la page si les variable dans la session existe, si oui je recrée le formulaire en PHP, sinon je laisse le formulaire de base
    Inutile de faire 2 formulaires, là où un seul suffit.
    Exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    // -----------------------
    // Initialisation
    $contact_Sujet		= (isset($_SESSION['contact']['Sujet']))? 	$_SESSION['contact']['Sujet'] : 'Demande de Renseignement';
    $contact_Message	= (isset($_SESSION['contact']['Message']))? 	$_SESSION['contact']['Message'] : '';
    .....
    .....
    et dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		<p>
    			<label for="idcontact_Sujet"><b>Sujet</b> :&nbsp;</label>
    			<input id="idcontact_Sujet" name="contact_Sujet" type="text" value="<?php echo $contact_Sujet; ?>" required="required" />
    		</p>
     
    		<p>
    			<label for="idcontact_Message"><b>Message</b> :&nbsp;</label>
    			<textarea id="idcontact_Message" name="contact_Message" rows="5" cols="50" required="required"><?php echo $contact_Message; ?></textarea>
    		</p>
    Dernière modification par Invité ; 08/08/2015 à 10h22.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Par défaut
    Bonjour et désolé pour cette réponse tardive je n'ai pas eu accès à internet (et donc été coupé du monde) pendant plus d'une semaine.

    Merci pour vos réponses et à jreaux62 pour ses explications.
    Il faut juste que je me remette dedans et applique la méthode.

    Je vous donnerai un retour de ma réussite (ou non-réussite).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/12/2011, 08h58
  2. [WD-2010] Gestion de la taille des pieds de page
    Par cloridriks dans le forum Word
    Réponses: 7
    Dernier message: 15/11/2010, 13h48
  3. [AJAX] Gestion de l'historique et des marque-pages
    Par PoichOU dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/09/2007, 21h33
  4. [Report] Gestion des titres non numérotés + mise en page
    Par Olivier_ dans le forum Mise en forme
    Réponses: 4
    Dernier message: 08/06/2007, 10h12
  5. Gestion page suivante page précédante pour l'affichage
    Par sylvie.forum dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 26/03/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo