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 :

conserver les champs saisi


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 90
    Points : 55
    Points
    55
    Par défaut conserver les champs saisi
    Bonsoir
    j'ai besoin de votre aide dans un problème
    j'ai fait un formulaire pour l'inscription d'un utilisateur et pour valider les champs,quand l'utilisateur clique sur submit il est redirigé vers une page de traitement des valeurs saisies s'ils sont tous valides c'est ok on les stocke dans la base de donné sinon il est redirigé une autre fois vers la page d'inscription le problème c'est que les valeurs saisie précédemment sont effacé et l'utilisateur aura à tous retaper de nouveau ce qui est embêtant
    est ce qu'il y a moyen pour conserver les valeur saisie après actualisation de la page
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    => concernant le ré-affichage : voir aussi du coté des $_SESSION.

    1- PRINCIPE de TRAITEMENT et FORMULAIRE sur la même page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    // Initialisation
    $form_valid = 0;
    $form_msg_err = '';
    $form_msg_OK = '';
     
    // SI le formulaire a été soumis
    if ( isset($_POST['envoi_form']) ) 
    {
    	// -----------------------
    	// TRAITEMENT (fichier inclus, pour plus de clarté)
    	include('./traitement_formulaire.php');
    	// -----------------------
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <!-- ........ -->
    </head>
    <body>
    <!-- ........ -->
     
    <?php
    // Affichage du formulaire
    if ( $form_valid == 0 || $form_valid == 2 )
    {
    ?>
     
    <?php    if ($form_valid == 2 && !empty($form_msg_err) ){ // Affichage message d'erreur ?>
    	<p class="msg_erreur"><?php echo $form_msg_err; ?></p>
    <?php    } ?>
     
       <form name="form_fiche" method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> <!-- action sur la même page -->
    	<!-- ........ -->
    	<input type="submit" name="envoi_form" value="envoyer" />
       </form>
     
    <?php 
    } else { // Affichage si traitement OK 
    ?>
     
    <?php    if ( !empty($form_msg_OK) ){ // Affichage message OK ?>
    		<p class="msg_OK"><?php echo $form_msg_OK; ?></p>
    <?php    } ?>
     
    	<!-- ....(lien retour ou autre : affichage du résultat,...).... -->
     
    <?php 
    } 
    ?>
     
    </body>
    <html>
    Fichier de traitement traitement_formulaire.php (inclus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php // TRAITEMENT (fichier inclus)
    // 1/ RECUPERATION des données du formulaire
    $var1 = (isset($_POST['var1']))? $_POST['var1'] : '';
    .......
    .......
    .......
    // 2/ GESTION DES ERREURS => en cas d'erreur : 
    if(.........){
    	$form_valid = 2;
    	$form_msg_err .= 'Oups ! .......<br />';
    }
    if(.........){
    	$form_valid = 2;
    	$form_msg_err .= 'Argh ! .......<br />';
    }
    if($form_valid != 2){ // OK
    	$form_valid = 1;
    }
    // 3/ TRAITEMENT SI PAS d'erreur
    if($form_valid == 1){
    	..............
    	..............
    	..............
    	..............
    	..............
    	$form_msg_OK .= 'Good ! .......';
    }

    2- Technique pour empêcher le renvoi du formulaire par actualisation de la page (F5) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php if(session_id()=='') { session_start(); }
    // TRAITEMENT SI LE FORM A ETE POSTE
    if ( isset($_POST['envoi_form'])
            && isset($_SESSION['random_OK'], $_POST['randomformOK'])
    	&& $_POST['randomformOK']==$_SESSION['random_OK'] ) 
    {
    	// -----------------------
    	// TRAITEMENT (fichier inclus, pour plus de clarté)
    	include('./traitement_formulaire.php');
    	// -----------------------
    }
    // Protection contre "actualiser la page" ou envoi depuis l'extérieur (vol de formulaire)
    unset($_POST);
    $_SESSION['random_OK'] = rand(100000,999999); // nombre aléatoire
    // -----------------------
    // AFFICHAGE DU FORMULAIRE
    ?>
    	<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    		<input type="hidden" name="randomformOK" value="<?php echo $_SESSION['random_OK']; ?>" />
    	..........
    	</form>
    • $_SESSION['random_OK'] contient un nombre aléatoire
    • il est mis dans un input hidden du formulaire => il sera alors récupéré via $_POST['randomformOK']


    SI on recharge la page (F5):
    • $_SESSION['random_OK'] est modifié
    • MAIS $_POST['randomformOK'] NON.

    Ils sont différents => le traitement ne se fait pas (une 2ème fois).
    Dernière modification par Invité ; 16/07/2018 à 12h48.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    Merci mais si je veux effectuer le traitement dans une nouvelle page et puis après faire un header(location...) pour me rediriger vers la page d'inscription en cas d'erreur.c'est vrai que les variables de session est une solution mais c'est trop lourd à implémenter surtout que je doit stocker tous les post dans des variable de sessions ça engendre beaucoup de lignes de code surtout quand on est face à beaucoup de champs à saisir
    je me demande s'il y a une autre solution sinon dans ce cas je vais procéder avec les variables de session

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il faut penser qu'une variable de Session peut aussi être un array.
    Exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	// mise en SESSION
    	// Message
    	$_SESSION['contact']['Sujet']		= $contact_Sujet;
    	$_SESSION['contact']['Message']		= $contact_Message;
    	// Societe
    	$_SESSION['client']['Type']			= $client_Type;
    	$_SESSION['client']['Societe']		= $client_Societe;
    	// Identite
    	$_SESSION['client']['Civilite']		= $client_Civilite;
    	$_SESSION['client']['Nom']			= $client_Nom;
    	$_SESSION['client']['Prenom']		= $client_Prenom;
    	// Adresse
    	$_SESSION['client']['Tel']			= $client_Tel;
    	$_SESSION['client']['Email']		= $client_Email;
    	$_SESSION['client']['Adresse']		= $client_Adresse;
    Dans cet exemple :
    - si pas OK, en cas d'erreur, je ré-affiche tout dans le formulaire ;
    - si OK, après envoi, je peux même décider de conserver les infos "client" (pour ré-affichage ultérieur) et effacer les infos "contact", en une seul ligne :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	// on vide le Message
    	unset($_SESSION['contact']);
    Ici :
    • je vide le "message" ($_SESSION['contact']),
    • mais conserve les informations "client" : $_SESSION['client']
    Dernière modification par Invité ; 30/04/2018 à 11h43.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    Merci infiniment pour le temps que vous avez accordé pour me répondre c'est vraiment gentil bonne journée

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/08/2009, 11h29
  2. Réponses: 2
    Dernier message: 10/06/2009, 17h38
  3. [VBA-E] GCD-TCD : Comment conserver les champs de données
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2007, 10h52
  4. [MySQL] Rafraichissement formulaire : conserver les champs remplis ?
    Par s-c-a-r-a dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/08/2007, 10h02
  5. Réponses: 8
    Dernier message: 19/05/2005, 17h03

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