8795 sujets

Développement web côté serveur, CMS

Bonjour, j'ai une page dans laquelle j'ai mis les champs en echo, mais je n'arrive pas à garder les champs lors d'un back ou un refresh.

Aurais-je oublier qqc?

Code du formulaire

<?php
session_start();
include('top.php');
?>
	  <div id="main">
			<div class="right_side">
              <?  
			  echo("<h2>Ajout d'éditeurs dans la base<br/></h2>") ;
			  echo("<h3></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>
                          <br>
              <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>
                  <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>


Code de la page de vérification

<?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>

Modérateur
Salut,

Je fais vite une petite apparition (pas trop le temps d'examiner ton code).

Je pense que tu veux parler des valeurs des champs ? Si c'est le cas, je te propose de voir si tes superglobales prennent bien en compte les valeurs (ex : print_r($_POST)).

Peut être que tu vas avoir recour à un/des petits cookies ou voir avec des variables de session.

Je regarderai plus longuement ton code ce soir si j'ai un petit peu de temps.

++
Hello,

le plus simple est en général de tout faire sur la même page (vérification des champs et éventuellement réaffichage) et de ne sortir via header('Location: mapage.php') que lorsque tout est OK.

Un petit exemple dans ce post.

A+
J'ai lu avec attention cette réponse, je vais tester cela rapidement, mais je préfèrerai garder mes deux fichiers distincts.

Me tourner vers les sessions pourquoi pas, mais je dois au préalable faire mes déclarations. Toutefois, je ne sais pas où les placer : Dans le fichier d'origine ou dans celui de vérification?

Merci de votre aide.
si je compte faire un formulaire caché dans mon fichier de vérification, faut il que je le mette dans ma balise PHP où se situe mon "retour" ou bien après?
cloridriks a écrit :
si je compte faire un formulaire caché dans mon fichier de vérification, faut il que je le mette dans ma balise PHP où se situe mon "retour" ou bien après?
Euh... quoi ? Smiley biggol