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 :

Réafficher le formulaire avec les données que j'ai saisi [Débutant(e)]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Réafficher le formulaire avec les données que j'ai saisi
    Salut tout le monde !

    Je débute en PHP ! et je commence a me familiariser avec les formulaires ... ça a aps l'air d'etre le plus simple ... Je commence a bien reussir avec les $_POST et tout ça mais j'ai un probleme dans le traitement des champs vides, je voudrais que losqu'un champs important est vide (par exemple login) il fasse un retour en arriere sur la page de formulaire (ça je sais faire, j'utilise des headers) tout en conservant ce qui a deja été saisit (la je sais plus faire ) et si possible sans utiliser de javascript ...

    Savez vous si c'est réalisable, si oui comment faire ?

    Merci pour votre aide !

  2. #2
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Salut,

    tout dépend quels types de champs tu utilisent, un exemple avec les champs texte (en supposant que tu enregistres tes variables dans la session en cours) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?php
    echo '<input type="text" name="login" value="'.$_SESSION['login'].'"> ';
    pour les champs de type checkbox, radio ou select utilises l'attrbut checked="checked" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    echo '<input type="checkbox" value="1" name="reglement" ';
     
    if(!empty($_SESSION['reglement'])) echo 'checked="checked" ';
     
    echo ' > ';

    même principe pour les select...

  3. #3
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Tu peux utiliser la fonction empty() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (empty($variable)
       {si la variable est vide}
       else
       {si la variable n'est pas vide}

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    En fait j'ai pas du etre assez clair dans mon message, ce que je veux :

    C'est que lorsqu'un membre rempli un formulaire, il l'envoie, les champs sont vérifiés, s'ils sont vides on retourne sur la page précédente pour qu'ils saisissent les données manquantes et pour simplifier le tout, le membre ne doit pas ressaisir ce qu'il a deja saisi et qui est correct (non vide pour le moment) ...

    Vous savez comment faire cela ?

    pour le moment, la structure c'est : un index, une page de formulaire et une page de traitement du formulaire.

    Hier soir j'ai pense que peut etre devrais-je groupe le formulaire avec le traitement en cas de champs vides avec une boucle while (tant que champs vides faire : afficher le formulaire ...)

    Qu'en pensez vous ?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il faut savoir qu'avec votre organisation actuelle (en deux scripts) vous ne pouvez récupérer les variables du formulaire via $_POST seulement sur le script qui est le récepteur du formulaire (désigné par l'attribut action de la balise form). On peut éventuellement les retransmettre ou alors passer par une session comme l'a justement proposé makmaoui, à vous de définir une manière de procéder : sessions, regroupement formulaire et script de contrôle en un seul, redirection et retransmission des variables POST, etc. Le plus simple étant le regroupement en un seul script.

    Ce n'est pas une boucle while qu'il faut utiliser mais de simples conditions (if) : le développement web côté serveur dépend des actions effectuées par l'utilisateur (côté client donc) et ces actions se présentent sous la forme de nouvelles requêtes HTTP plus ou moins indépendantes. Vous risqueriez de faire une boucle infinie (bien qu'il y est un garde-fou : max_execution_time).

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci, je vais méditer la dessus

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    En gros voila ce que je voulais faire, et ça marche pour le moment ...
    A part que le code est archi-dégueulasse (je suis au courant, je débute ^^) vous avez des remarques a me faire. (ya aussi le code du formulaire de départ qui sert a récolter la premiere réponse du membre)

    je pense que pour que ce soit plus simple je ne vais pas généraliser l'affichage du formulaire avc foreach, mais la c juste un test ...


    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    $infos=array("nom"=> "Nom :","prenom"=>"Prénom :","dn"=>"Date de Naissance (aaaa-mm-jj) :");
     
    $connexion=mysql_connect($host,$user,$password)
    or die ("Connexion au serveur impossible");
     
    $db=mysql_select_db($database,$connexion)
    or die ("Connexion au serveur impossible");
     
    $blanc=0;
    $retour=0;
    $retour=array( 0 => "");
    $resultat=0;
    $ok=0;
    $i=0;
     
    foreach($_POST as $champs=>$info)
    { 
    $cham[$i]=$champs;
    if (empty($_POST[$champs])) {$retour[$blanc]=$champs; $inf[$i]=""; $blanc++ ;}
     
    else
    {
    $inf[$i]=$_POST[$champs];
    };
    $i++;
    }
     
    $k=0;
    if ($blanc>0) //alors c qu'un des champs est vide
    {
    for ($k=0; $k<$blanc; $k++)
    {
    if ($retour[$k]=='dn')
    {
    $retour[$k]="Date de Naissance";
    }
    echo "le champs <strong> $retour[$k] </strong> est vide <br>";
    }
    }
    else 
    {
    $resultat=1; //donc la requete peut avoir lieu
    }
     
    echo "<form action='traitement_joueur.php' method='POST'>
    <table width='95%' border='0' cellspacing='0' cellpadding='2'>\n";
     
    foreach($infos as $champs=>$info)
    {
    echo "<tr>
    <td align='right'> <B> {$infos[$champs]} </B></td>
    <td><input type='text' name=$champs  size='35'
    maxlength='35' value=$_POST[$champs]></td>
    </tr>";
    }
    echo "</table>
    <div align='center'> <p> <input type='submit' value='Envoi'> </p> </div> </form>";
     
     
    //on prepare la requete SQL, pour cela on concatene les champs issus indirectement du tableau $_POST
    $valreq="";
    $chamreq="";
     
    if ($resultat==1)
    {
    for ($j=0; $j<$i; $j++)
    {
    if ($j!=0)
    { 
    $valreq.=",";
    $chamreq.=",";
    }
    $valreq.="'$inf[$j]'";
    $chamreq.="$cham[$j]";
    }
     
    $req="INSERT INTO joueur($chamreq) VALUES ($valreq)";
     
    $resultat=mysql_query($req) or die ("pb dans la requete");
    echo "Le joueur a été correctement inséré.";
    }
    ?>

Discussions similaires

  1. retour au formulaire avec les données pré-remplis
    Par kbazin dans le forum Langage
    Réponses: 5
    Dernier message: 02/08/2011, 04h13
  2. Réponses: 1
    Dernier message: 18/08/2010, 08h09
  3. Réafficher un formulaire avec les valeurs déjà saisies
    Par lebanner82 dans le forum Langage
    Réponses: 3
    Dernier message: 22/06/2009, 13h41
  4. Réponses: 2
    Dernier message: 12/05/2008, 21h51

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