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 valeurs de champs de formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut Conserver les valeurs de champs de formulaire
    Bonjour,

    je souhaiterai conserver les valeurs de mes champs de formulaire une fois ce dernier envoyé vers mon fichier de vérification. Cela permettrait aux utilisateurs qui ont comis une erreur, de ne pas se retaper tout le formulaire et de garder les champs saisis au préalable.

    Voici le code de la page du formulaire

    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
    <?php
    session_start();
    include('top.php');
    ?>
    	  <div id="main">
    			<div class="right_side">
                  <?  
    			  echo("<h2>Bonjour ".$_SESSION['login']." vous pouvez maintenant ajouter vos personnages<br/></h2>") ;
    			  echo("<h3>Pour vous déconnecter, cliquez <a href=\"logout.php\">ici</a><br/></h3>") ; 
    			  ?>
                  <p>
                    <script type="text/javascript" src="js/livevalidation.js"></script>
    				<script type="text/javascript" src="js/nicEdit.js"></script>
    				<script type="text/javascript">bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });</script>
    			  </p>
                  <form action="editeurs_validation.php" method="post" name="form1" id="form1" enctype="multipart/form-data" onsubmit="return ValidationFormulaire();">
                    <input type="hidden" name="valide" value="1" />
                    <p class="Style1">Les champs avec * sont obligatoires</p>
                    <table width="486" border="0" cellspacing="3">
                      <tr>
                        <td colspan="2"><strong>Identit&eacute; du personnage </strong></td>
                      </tr>
                      <tr>
                       <td>Nom</td>
                        <td><input type="text" name="nom_edit" value="<?php echo $_POST[nom_edit];?>" id="f1" class="LV_invalid_field"  size="30" />
                            <span class="LV_validation_message LV_invalid">Obligatoire</span>
                            <script type="text/javascript">
    						  var f1 = new LiveValidation('f1');
    						  f1.add(Validate.Presence);
    						  </script>
                        </td>
                      </tr>
                      <tr>
                        <td>Date de cr&eacute;ation </td>
                        <td><input name="date_edit" type="text" id="f1" value="aaaa-mm-jj" size="30" /></td>
                     </tr>
                      <tr>
                        <td>Avatar (jpeg, 30ko) : </td>
                        <td><input type=file name="avatar_edit" id="verif_data">
                            <span class="LV_validation_message LV_invalid"><span class="LV_validation_message LV_invalid">Obligatoire</span></span>
                            <script type="text/javascript">
    								var verif_data = new LiveValidation('verif_data');
    								verif_data.add( Validate.Presence );
    						</script>
                        </td>
                      </tr>
                      <tr>
                        <td colspan="2"><p>Histoire<br />                      
                          <textarea name="hist_edit" value="<?php echo $_POST[hist_edit]; ?>" cols="58" rows="4" id="area2"></textarea>
                          </p>
                        </td>
                      </tr>
                      <tr>
                        <td colspan="2"><span class="LV_validation_message LV_invalid">Sources : </span>                      <script type="text/javascript">
    					var f1 = new LiveValidation('f1');
    					f1.add(Validate.Presence);
    					</script>                    </td>
                      </tr>
                      <tr>
                        <td colspan="2"><input name="source_edit" value="<?php echo $_POST[nom_champ1]; ?>" type="text" id="f1" class="LV_invalid_field" size="30" />
                          <span class="LV_validation_message LV_invalid">X</span> </td>
                      </tr>
                    </table>
                    <p align="center"><br />
                        <input type="submit" value="Validez votre fiche" />
                    </p>
                  </form>
    	    </div>
    			<? include('gauche.php');?>
    	  </div>
    <? include('footer.php');?>
    	</div>
    </body>
    </html>
    et voici la page de vérification du formulaire.

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <?php
    session_start();
    ?>
    <?php include('top.php');?>
    	  <div id="main">
    		<div class="right_side">
                  <h2>De nouveaux personnages?</h2>
                  <h3>Ajoutez vos h&eacute;ros favoris &agrave; notre base</h3>
                  <p>
                    <script type="text/javascript" src="js/livevalidation.js"></script>
                  </p>
    <?php
    // vérification du formulaire avant insertion
    if ($_POST['valide'] == 1) 
    {
    	// Ajout membre_id 
    	$nom_edit = (htmlentities ($_POST['nom_edit']));
    	$date_edit = $_POST['date_edit'];
    	$hist_edit = (htmlentities ($_POST['hist_edit']));
    	$source_edit = $_POST['source_edit'];
     
    	if ($nom_edit == '' || $date_edit == '' || $hist_edit == '' || $source_edit == '')
    	{
    		if($nom_edit == '')
    			echo "<b>Merci de renseigner le champ nom</b><br>";
    		if($date_edit == '')
    			echo "<b>Merci de renseigner le champ date</b><br>";
    		if($hist_edit == '')
    			echo "<b>Merci de renseigner le champ histoire</b><br>";
    		if($source_edit == '')
    			echo "<b>Merci de renseigner au moins une source</b><br>";
    	}
     	else
    	{
     
    	// Connexion a la base
    require("configCD.php");
    		// On vérifie si le nomFR et nomGB existe déjà ou pas
    		$sql =	"SELECT * FROM editeurs WHERE nom_edit = '". addslashes($nom_edit)."'";
    		$req =	mysql_query($sql);
     
    		// On compte le nombre de ligne reçu par la requête
    		$count = mysql_num_rows($req);
    		// FORMULAIRE - Si le nom n'existe pas
    		if ($count == 0)
    		{
    			// HISTO ajout un member_id
    			$sql = 	"INSERT INTO editeurs (nom_edit, date_edit, hist_edit, source_edit)
    				 VALUES ('$nom_edit', '$date_edit', '$hist_edit', '$source_edit')";
    			mysql_query($sql) or die('Erreur SQL '.mysql_error().'<br />Requête utilisée : '.$sql);
     
    //--->>> upload des images
    			//si fichier à uploader
    			if ($avatar_edit != NULL) {
    				if (!empty($_FILES['avatar_edit']['tmp_name']) AND is_uploaded_file($_FILES['avatar_edit']['tmp_name'])) 
    				{
    						//vérif. poids du fichier
    					if(filesize($_FILES['avatar_edit']['tmp_name'])>30000)
    						{
    						echo("Erreur : taille supérieure à 30ko!");
    						}
     
    					else if(filesize($_FILES['avatar_edit']['tmp_name'])<30000)
    						{
     
    						//Vérif type de fichier
    						list($largeur, $hauteur, $type, $attr)=getimagesize($_FILES['avatar_edit']['tmp_name']);
     
    						//Si pas Jpeg
    						if($type !=2 ) 
    							{
    							echo("Erreur : ce n'est pas un fichier JPEG!");
    							} 
     
    						//Sinon : OK
    						else if($type===2)
    							{
     
    						//on select le perso qui vient d'être ajouté:
    						$av_perso = mysql_query("Select id_edit, nom_edit FROM editeurs WHERE nom_edit = '".mysql_real_escape_string($nom_edit)."'");
    						$assoc_req = mysql_fetch_assoc($av_perso);
    						$id_perso = $assoc_req['id_edit']; //id du nouveau perso = nom image
     
    						//on bouge le fichier sur le serveur
    						if(move_uploaded_file($_FILES['avatar_edit']['tmp_name'], 'images/editeurs/'.intval($id_perso).'.jpg'))
    							{
    							mysql_query("UPDATE editeurs SET image = '".mysql_real_escape_string($id_perso)."' WHERE id_edit ='".mysql_real_escape_string($id_perso)."'");
    							}
    						else 
    							{
    							//Erreur
    							echo("Erreur lors du chargement...");
    							}
    							}
    						}
    				}
    			}
    				//-->> fin upload de la tof
    			// Affichage d'un message pour décrire le bon déroulement
    			echo("<br><div align=\"center\"><font color=\"green\"><b>Nouvel éditeur ajouté</b></div><br/>") ;
    		}
    		else
    			{
    			echo "<br><div align=\"center\"><font color=\"red\"><b>L'éditeur est déjà en base, merci de refaire une saisie.</b></div>";
    			}
    		// On ferme la connexion à la base de données
    		mysql_close();
    	}
    }
    ?>
    	    </div>
    			<? include('gauche.php');?>
    	  </div>
    <? include('footer.php');?>
    	</div>
    </body>
    </html>
    J'ai lu qu'il était possible de faire un retour de refresh avec un fichier caché, mais je n'ai pas compris sa construction ou alors l'utilisation des sessions.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Je n'ai pas regardé dans le détail mais il ne manquerait pas les ' dans les variables dans le formulaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $_POST[hist_edit]; ?> => <?php echo $_POST['hist_edit']; ?>


    Maxime.

  3. #3
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Je vois dans ton code de vérification que tu ouvre une session "session_start();" pourquoi tu ne l'utilise pas cette session dans laquelle tu stocke un tableau qui contient les valeur de ton formulaire ?
    Regarde ici
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Pour les sessions, je ne suis pas contre, mais je ne sais pas où le splacer (dans quel fichier et à quelle place entre le submit ou avant?)

    Merci de votre aide.

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Lunthear Voir le message
    Je n'ai pas regardé dans le détail mais il ne manquerait pas les ' dans les variables dans le formulaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $_POST[hist_edit]; ?> => <?php echo $_POST['hist_edit']; ?>


    Maxime.
    J'ai corrigé mais cela n'apporte rien de plus.

  6. #6
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    La solution classique, mais un peu lourde à écrire, c'est dans ta page de vérification, si tu as une erreur, tu refais un formuaire, avec toutes les données en "hidden". Tu affiches ton message d'erreur, tu génères ton formulaire et tu demandes au gars de cliquer sur un judicieux bouton "Retour" qui va reposter tes variables à la page d'avant et du coup tu pourras préremplir tes champs de ton formulaire au réaffichage.

    Comme c'est relativement peut agréable pour l'utilisateur comme fonctionnement, tu peux rajouter en plus (mais ne surtout pas te contenter que de ca, le javascript n'est qu'un confort dont on doit pouvoir se passer sans alterer le fonctionnement de l'appli) une vérification en javascript sur le premier formulaire, histoire d'éviter que le gars ne soumette un formulaire incomplet.

    Après, tu as toutes les variantes, avec les sessions, etc... L'idée de base étant toujours la même. Quand l'utilisateur soumet, il faut sauvegarder ce qu'il a soumi, vérifier et éventuellement (en cas d'erreur), réafficher le formulaire en réinjectant ce que tu as sauvegardé.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    pour le script pas de soucis, je pense même ajouter un livevalidation qui marche plutôt bien.

    Le soucis étant surtout lors de l'envoi des données (tout le formulaire saisi) et que j'ai un doublon dans la base par exemple.

    C'est là que je colle le formulaire en hidden avec les variables sur un bouton retour, c'est ca?

  8. #8
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Oui par exemple.
    Mais fait attention aussi qu'on ne puisse pas passer outre tes scripts javascript (genre, en désactivant le javascript, ce qui est très facile a faire). Tes tests doivent être fait des deux cotés.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    En fait je le fais déjà des deux cotés, c'est juste qu'au premier niveau cela empêche / limite les envois de champs vides.

    Je refais une seconde vérification sur mon fichier de vérif.php avec des messages d'erreur à chaque étape.

    Par contre je ne sais pas où mettre ce formulaire en hidden ...

    J'ai ces messages en fin de parcours par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Affichage d'un message pour décrire le bon déroulement
    			echo("<br><div align=\"center\"><font color=\"green\"><b>Nouvel éditeur ajouté</b></div><br/>") ;
    		}
    		else
    			{
    			echo "<br><div align=\"center\"><font color=\"red\"><b>L'éditeur est déjà en base, merci de refaire une saisie.</b></div>";
    			}
    		// On ferme la connexion à la base de données
    		mysql_close();
    	}
    et mon formulaire d'origine est le suivant exemple d'un champ

    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
     <form action="editeurs_validation.php" method="post" name="form1" id="form1" enctype="multipart/form-data" onsubmit="return ValidationFormulaire();">
                    <input type="hidden" name="valide" value="1" />
                    <p class="Style1">Les champs avec * sont obligatoires</p>
                    <table width="486" border="0" cellspacing="3">
                      <tr>
                        <td colspan="2"><strong>Identit&eacute; du personnage </strong></td>
                      </tr>
                      <tr>
                       <td>Nom</td>
                        <td><input name="nom_edit" value="<?php echo $_POST['nom_edit'];?>" id="f1" class="LV_invalid_field" type="text" size="30" />
                            <span class="LV_validation_message LV_invalid">Obligatoire</span>
                            <script type="text/javascript">
    						  var f1 = new LiveValidation('f1');
    						  f1.add(Validate.Presence);
    						  </script>
                        </td>
                      </tr>
    tu placerais le code de quelle manière?

  10. #10
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Formulaire (nommé "form.php")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    if (isset($_POST['toto']))
      $toto_value = $_POST['toto'];
    else
      $toto_value = '';
    ?>
    ...
    <form name="test" method="post" action="resultat.php">
    <input type="text" name="toto" value="<?php echo ($toto_value); ?>" />
    <input type="submit" value="Envoyer" />
    </form>
    ...
    resultat.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    if (isset($_POST['toto'])) $toto_value = $_POST['toto']; else $toto_value='';
     
    if ('mauvaise valeur de toto_value'){
      echo ('Vous avez rentré une mauvaise valeur.');
      echo ('<form name="retour" method="post" action="form.php">');
      echo ('<input type="hidden" name="toto" value='.$toto_value.'>');
      echo ('<input type="submit" value="retour">');
      echo ('</form>');
    } else {
      // Le traitement normal, sauvegarde en base et tout et tout.
    }
    En gros, tu envoies tes données, puis dans le second fichier tu testes si elles te conviennent. Si ce n'est pas le cas, tu crées ton formulaire de retour et tu n'enregistre rien. Quand le gars va cliquer sur retour, ca va poster tes valeurs grace aux champs hidden.
    Et dans le premier fichier, tes inputs sont prérempli avec des valeurs potentiellement récupérée de $_POST (mise a vide par défaut).

    Au passage, écrire value="<?php echo $_POST['nom_edit'];?>" directement dans le code, ca n'est pas terrible dans la mesure ou $_POST['nom_edit'] n'est pas nécessairement défini. Ca n'est pas non plus très génant, ca n'est juste pas... propre.
    Pense éventuellement à activer tous les warnings (pendant le dev, pas en prod). C'est un peu ch** au début, mais ca aide bien à faire des choses propres au final.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  11. #11
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    J'ai corrigé l'erreur cela semble marcher, par contre il ne me rempli que le champ sur lequel j'ai une erreur (nom déjà en base par ex) et ne reprend pas tout le formulaire.

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    <?php
    session_start();
    ?>
    <?php include('top.php');?>
    	  <div id="main">
    		<div class="right_side">
                  <h2>De nouveaux personnages?</h2>
                  <h3>Ajoutez vos h&eacute;ros favoris &agrave; notre base</h3>
                  <p>
                    <script type="text/javascript" src="js/livevalidation.js"></script>
                  </p>
    <?php
    // vérification du formulaire avant insertion
    if ($_POST['valide'] == 1) 
    {
    	// Ajout membre_id 
    	$member_id = $_SESSION['id_user'];
    	$nom_edit = (htmlentities ($_POST['nom_edit']));
    	$date_edit = $_POST['date_edit'];
    	$hist_edit = (htmlentities ($_POST['hist_edit']));
    	$source_edit = $_POST['source_edit'];
     
    	if ($nom_edit == '' || $date_edit == '' || $hist_edit == '' || $source_edit == '')
    	{
    		if($nom_edit == '')
    			echo "<b>Merci de renseigner le champ nom</b><br>";
    			echo ('<form name="retour" method="post" action="a-editeurs.php">');
    			echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    			echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    			echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    			echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    			echo ('<input type="submit" value="retour">');
    			echo ('</form>');
    		if($date_edit == '')
    			echo "<b>Merci de renseigner le champ date</b><br>";
    			echo ('<form name="retour" method="post" action="a-editeurs.php">');
    			echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    			echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    			echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    			echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    			echo ('<input type="submit" value="retour">');
    			echo ('</form>');
    		if($hist_edit == '')
    			echo "<b>Merci de renseigner le champ histoire</b><br>";
    			echo ('<form name="retour" method="post" action="a-editeurs.php">');
    			echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    			echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    			echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    			echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    			echo ('<input type="submit" value="retour">');
    			echo ('</form>');
    		if($source_edit == '')
    			echo "<b>Merci de renseigner au moins une source</b><br>";
    			echo ('<form name="retour" method="post" action="a-editeurs.php">');
    			echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    			echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    			echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    			echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    			echo ('<input type="submit" value="retour">');
    			echo ('</form>');
    	}
     	else
    	{
    // Connexion a la base
    require("configCD.php");
    		// On vérifie si le nomFR et nomGB existe déjà ou pas
    		$sql =	"SELECT * FROM editeurs WHERE nom_edit = '". addslashes($nom_edit)."'";
    		$req =	mysql_query($sql);
     
    		// On compte le nombre de ligne reçu par la requête
    		$count = mysql_num_rows($req);
    		// FORMULAIRE - Si le nom n'existe pas
    		if ($count == 0)
    		{
    			// HISTO ajout un member_id
    			$sql = 	"INSERT INTO editeurs (member_id, nom_edit, date_edit, hist_edit, source_edit)
    			 VALUES ('$member_id','$nom_edit', '$date_edit', '$hist_edit', '$source_edit')";
    			mysql_query($sql) or die('Erreur SQL '.mysql_error().'<br />Requête utilisée : '.$sql);
     
    			//--->>> upload de la tof
    			//si fichier à uploader
    			if ($avatar_edit != NULL) {
    				if (!empty($_FILES['avatar_edit']['tmp_name']) AND is_uploaded_file($_FILES['avatar_edit']['tmp_name'])) {
     
    					//vérif. poids du fichier
    					if(filesize($_FILES['avatar_edit']['tmp_name'])>30000){
    					echo("Erreur : taille supérieure à 30ko!");
    					echo ('<form name="retour" method="post" action="a-editeurs.php">');
    					echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    					echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    					echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    					echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    					echo ('<input type="submit" value="retour">');
    					echo ('</form>');
    					}
    					else if(filesize($_FILES['avatar_edit']['tmp_name'])<30000) {	
     
    					//Vérif type de fichier
    					list($largeur, $hauteur, $type, $attr)=getimagesize($_FILES['avatar_edit']['tmp_name']);
     
     
    					//Si pas Jpeg
    						if($type !=2 ) {
    						echo("Erreur : ce n'est pas un fichier JPEG!");
    						echo ('<form name="retour" method="post" action="a-editeurs.php">');
    						echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    						echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    						echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    						echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    						echo ('<input type="submit" value="retour">');
    						echo ('</form>');
    						} 			
    					//Sinon : OK
    						else if($type===2) {				
    					//on select le perso qui vient d'être ajouté:
    						$av_perso = mysql_query("Select member_id, nom_edit FROM editeurs WHERE nom_edit = '".mysql_real_escape_string($nom_edit)."'");
    						$assoc_req = mysql_fetch_assoc($av_perso);
    						$id_perso = $assoc_req['member_id']; //id du nouveau perso = nom image							
     
    					//on bouge le fichier sur le serveur
    							if(move_uploaded_file($_FILES['avatar_edit']['tmp_name'], '../images/avatars/edit/'.intval($id_perso).'.jpg')) {
    							db_query("UPDATE heros SET image = '".mysql_real_escape_string($id_perso)."' WHERE member_id ='".mysql_real_escape_string($id_perso)."'");
    							}
    							else {
    					//Erreur
    							echo("Erreur lors du chargement de l'image");
    							echo ('<form name="retour" method="post" action="a-editeurs.php">');
    							echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    							echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    							echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    							echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    							echo ('<input type="submit" value="retour">');
    							echo ('</form>');
    							}
    						}
    					}
    				}
    			}
    				//-->> fin upload de la tof	
     
    			// Affichage d'un message pour décrire le bon déroulement
    			echo("<br><div align=\"center\"><font color=\"green\"><b>Merci ".$_SESSION["login"]." Le nouvel éditeur a été ajouté</b></div><br/>") ;
    		}
    		else
    		{
    			echo "<br><div align=\"center\"><font color=\"red\"><b>L'éditeur est déjà en base, merci de refaire une saisie.</b></div>";
    			echo ('<form name="retour" method="post" action="a-editeurs.php">');
    			echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    			echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    			echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    			echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    			echo ('<input type="submit" value="retour">');
    			echo ('</form>');
    		}
    		// On ferme la connexion à la base de données
    		mysql_close();
    	}
    }
    ?>
    	    </div>
    			<? include('gauche.php');?>
    	  </div>
    <? include('footer.php');?>
    	</div>
    </body>
    </html>

  12. #12
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Tu as plein de fois (8 si j'ai bien compté) exactement le même code, a savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo ('<form name="retour" method="post" action="a-editeurs.php">');
    echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    echo ('<input type="submit" value="retour">');
    echo ('</form>');
    C'est inutile d'une part, et franchement fastidieux à maintenir d'autre part (imagine le jour ou tu aura un formulaire avec une trentaine de champs...).
    En cas d'erreur, passe une variable "$erreur" a TRUE, et mets dans une variable commune le motif de l'erreur (tu peux même cumuler, en concatenant)
    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
     
    $en_erreur = false;
    if ('une erreur') {
      $en_erreur = true;
      $motif_erreur .= 'Le champ est vide. <br />';
    }
    if ('une autre erreur') {
     $en_erreur = true;
     $motif_erreur .= 'Il y a une autre erreur.<br />'
    }
    ...
    if ($en_erreur = true) {
      echo ($motif_erreur);
      // affichage du form.
    }
    Déjà, une fois que tu auras élagué ton code comme ca, tu y verras plus clair. Et avec un peu de bol, ton problème se sera résolu de lui même.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  13. #13
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Je pense avoir tout réécrit correctement

    Mais il ne me rempli toujours qu'un seul champ.

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    <?php
    session_start();
    ?>
    <?php include('top.php');?>
    	  <div id="main">
    		<div class="right_side">
                  <h2>De nouveaux personnages?</h2>
                  <h3>Ajoutez vos h&eacute;ros favoris &agrave; notre base</h3>
                  <p>
                    <script type="text/javascript" src="js/livevalidation.js"></script>
                  </p>
    <?php
    // vérification du formulaire avant insertion
    if ($_POST['valide'] == 1) 
    {
    	// Ajout membre_id 
    	$member_id = $_SESSION['id_user'];
    	$nom_edit = (htmlentities ($_POST['nom_edit']));
    	$date_edit = $_POST['date_edit'];
    	$hist_edit = (htmlentities ($_POST['hist_edit']));
    	$source_edit = $_POST['source_edit'];
     
    	$en_erreur = false;
    	if ($nom_edit == '') {
    	$en_erreur = true;
    	$motif_erreur .= 'Le champ nom est vide. <br />';
    	}
    	if ($date_edit == '') {
    	$en_erreur = true;
    	$motif_erreur .= 'Le champ date est vide. <br />';
    	}
    	if ($hist_edit == '') {
    	$en_erreur = true;
    	$motif_erreur .= 'Le champ histoire est vide. <br />';
    	}
    	if ($source_edit == '') {
    	$en_erreur = true;
    	$motif_erreur .= 'Le champ source est vide. <br />';
    	}
    	else
    	{
    // Connexion a la base
    require("configCD.php");
    		// On vérifie si le nomFR et nomGB existe déjà ou pas
    		$sql =	"SELECT * FROM editeurs WHERE nom_edit = '". addslashes($nom_edit)."'";
    		$req =	mysql_query($sql);
     
    		// On compte le nombre de ligne reçu par la requête
    		$count = mysql_num_rows($req);
    		// FORMULAIRE - Si le nom n'existe pas
    		if ($count == 0)
    		{
    			// HISTO ajout un member_id
    			$sql = 	"INSERT INTO editeurs (member_id, nom_edit, date_edit, hist_edit, source_edit)
    			 VALUES ('$member_id','$nom_edit', '$date_edit', '$hist_edit', '$source_edit')";
    			mysql_query($sql) or die('Erreur SQL '.mysql_error().'<br />Requête utilisée : '.$sql);
     
    			//--->>> upload de la tof
    			//si fichier à uploader
    			if ($avatar_edit != NULL) {
    				if (!empty($_FILES['avatar_edit']['tmp_name']) AND is_uploaded_file($_FILES['avatar_edit']['tmp_name'])) {
     
    					//vérif. poids du fichier
    					if(filesize($_FILES['avatar_edit']['tmp_name'])>30000){
    					echo("Erreur : taille supérieure à 30ko!");
    					}
    					else if(filesize($_FILES['avatar_edit']['tmp_name'])<30000) {	
     
    					//Vérif type de fichier
    					list($largeur, $hauteur, $type, $attr)=getimagesize($_FILES['avatar_edit']['tmp_name']);
     
     
    					//Si pas Jpeg
    						if($type !=2 ) {
    						$en_erreur = true;
    						$motif_erreur .= 'Ce n\'est pas un fichier JPG<br />';
    						} 			
    					//Sinon : OK
    						else if($type===2) {				
    					//on select le perso qui vient d'être ajouté:
    						$av_perso = mysql_query("Select member_id, nom_edit FROM editeurs WHERE nom_edit = '".mysql_real_escape_string($nom_edit)."'");
    						$assoc_req = mysql_fetch_assoc($av_perso);
    						$id_perso = $assoc_req['member_id']; //id du nouveau perso = nom image							
     
    					//on bouge le fichier sur le serveur
    							if(move_uploaded_file($_FILES['avatar_edit']['tmp_name'], '../images/avatars/edit/'.intval($id_perso).'.jpg')) {
    							db_query("UPDATE heros SET image = '".mysql_real_escape_string($id_perso)."' WHERE member_id ='".mysql_real_escape_string($id_perso)."'");
    							}
    							else {
    					//Erreur
    						$en_erreur = true;
    						$motif_erreur .= 'Erreur lors du chargement du fichier !!<br />';
    							}
    						}
    					}
    				}
    			}
    				//-->> fin upload de la tof	
     
    			// Affichage d'un message pour décrire le bon déroulement
    			echo("<br><div align=\"center\"><font color=\"green\"><b>Merci ".$_SESSION["login"]." Le nouvel éditeur a été ajouté</b></div><br/>") ;
    		}
    		else
    		{
    			$en_erreur = true;
    			$motif_erreur .= 'Le personnage est déjà en base<br />';
    			if ($en_erreur = true) {
    			echo ($motif_erreur);
    			// affichage du form.
    			echo ('<form name="retour" method="post" action="a-editeurs.php">');
    			echo ('<input type="hidden" name="nom_edit" value='.$nom_edit.'>');
    			echo ('<input type="hidden" name="avatar_edit" value='.$avatar_edit.'>');
    			echo ('<input type="hidden" name="hist_edit" value='.$hist_edit.'>');
    			echo ('<input type="hidden" name="source_edit" value='.$source_edit.'>');
    			echo ('<input type="submit" value="retour">');
    			echo ('</form>');
    } 
    		}
    		// On ferme la connexion à la base de données
    		mysql_close();
    	}
    }
    ?>
    	    </div>
    			<? include('gauche.php');?>
    	  </div>
    <? include('footer.php');?>
    	</div>
    </body>
    </html>

  14. #14
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Si tu arrives dans ce cas là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Erreur
    	$en_erreur = true;
    	$motif_erreur .= 'Erreur lors du chargement du fichier !!<br />';
    							}
    (quasiment a la fin), tu ne vas jamais passer dans l'affichage du formulaire.

    Ton code est ok si les champs sont vide, mais pas si le reste est faux.

    Sinon, après avoir regardé rapidement, visiblement, tu devrais bien afficher toutes les valeurs. Donc ce que tu peux faire c'est afficher le contenu complet de $_POST.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo ('<pre>'); // Balise html qui fait un pre-formatage, c'est plus agréable a lire.
    print_r($_POST);
    echo ('</pre>');
    Comme ca, tu vas voir si tu as les infos ou pas. Si tu ne les as pas, c'est dans le formulaire d'envois que tu a fait une faute. Sinon, eh bien tu affiches les variables dans lesquelles tu stockes tes données, jusqu'a trouver l'endroit ou tu perds ces données. Et une fois là, tu auras probablement compris ce qui se passe et comment le corriger. C'est peut-être un peu fastidieux et pas très agréable, mais il faut absolument en passer par là avant d'être capable de faire mieux.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  15. #15
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut petit exemple
    Désolé si j'ai eu un peu la flemme de lire tous les codes mais j'apporte ma petite contribution toute modeste...

    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
     
    <?php
    $tab_values = array();
     
    function formulaire($tab_values) {
        ?>
        <form action="ton_action_ici" method="post" >
            <input type="text" name="titre" value="<?php echo $tab_values['titre']; ?>" />
        </form>
        <?php
    }
    if(isset($_POST['titre']) && $_POST['titre'] != "") {
     
        $tab_values['titre'] = $_POST['titre'];
     
    }
    else {
     
        $tab_values['titre'] = "";
     
    }
     
    //Affichage du formulaire
    formulaire($tab_values);
    ?>
    C'est un tout petit exemple qui n'inclut pas les vérifications des champs et qui ne traite pas les $_POST[] au niveau de l'encodage des caractères spéciaux etc...
    Et pourtant... Elle tourne.
    http://www.djib.me

Discussions similaires

  1. [MySQL] Conserver les valeurs des champs après POST
    Par moudjahidine dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/05/2013, 14h56
  2. insérer un champ formulaire entre balises en conservant les valeurs
    Par Chello dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 08/04/2011, 09h57
  3. [AC-2003] Retirer les valeurs de champ de formulaire HTML vers Access
    Par faswebmaster dans le forum VBA Access
    Réponses: 0
    Dernier message: 01/06/2009, 15h11
  4. conserver les valeurs entrées dans un formulaire
    Par mitmit dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2007, 10h09
  5. Réponses: 4
    Dernier message: 23/03/2007, 09h49

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