Je ne comprends pas pourquoi ma variable n'est pas définie

Résolu/Fermé
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022 - 7 févr. 2022 à 10:19
yg_be Messages postés 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 - 7 févr. 2022 à 12:42
Bonjour,


Je crée un formulaire de devis et j'essaie d'afficher un message d'erreur lorsque l'utilisateur n'a pas rempli certaines données du formulaire. J'ai donc créé deux variables qui contienne les messages d'erreur, la variable $afficheErreur1 et $afficheErreur2. Cependant au moment de la compilation j'ai un message qui m'indique que les deux variables ne sont pas définies et pourtant elle fonctionne. J'aimerais comprendre pourquoi ? Et comment améliorer ça car visiblement je pense que je m'y prends mal.

Merci d'avance.
Voici mon code...

<?php
		//On démarre une nouvelle session
		session_start();
		
		//Formulaire 1
		//Si on appuie sur le bouton "suivant"
			if(isset($_POST['suivant'])){
				//On récupère les données dans $_POST
					
					$modele=$_POST['modele'];
					$taille=$_POST['taille'];
					$couleur=$_POST['couleur'];
					$quantite=$_POST['quantite'];
		
					//On définit des variables de session
					$_SESSION['modele'] = $modele;
					$_SESSION['taille'] = $taille;
					$_SESSION['couleur'] = $couleur;
					$_SESSION['quantite'] = $quantite;
					
				 if($quantite == false){
					 $afficheErreur1 = "<h4>Veuillez ajouter une quantité</h4>";
					 $_SESSION['afficheErreur1'] = $afficheErreur1;
				 }
				 else{
					// On va sur le formulaire 2
					header ('Location: #demo2');
					die();
				 }
			}
			
			//Formulaire 2
			//Si on appuie sur le bouton "suivant"
						if(isset($_POST['suivant1'])){
							//On récupère les données dans $_POST
								$qualite=$_POST['qualite'];
								$zone=$_POST['zone'];
								$impression=$_POST['impression'];
								$fichier=$_POST['fichier'];
								
								// On va sur le formulaire 3
								header('Location: #demo3');
								die();
								//header('Location: suite2.php');
								
								//On définit des variables de session
								$_SESSION['qualite'] = $qualite;
								$_SESSION['zone'] = $zone;
								$_SESSION['impression'] = $impression;
								$_SESSION['fichier'] = $fichier;
						}
						
						//Si on appuie sur le bouton "Précèdent"
						if(isset($_POST['retour1'])){
							// On va sur la formulaire 1
							header('Location: #demo1');
							die();
						}
			
		//Formulaire 3	
		//Si on appuie sur le bouton "suivant"
		if(isset($_POST['suivant2'])){
			//On récupère les données dans $_POST
				$prenom=$_POST['prenom'];
				$nom=$_POST['nom'];
				$email=$_POST['email'];
				$telephone=$_POST['telephone'];
				$client=$_POST['client'];
				$precision=$_POST['precision'];
				
				$_SESSION['prenom'] = $prenom;
				$_SESSION['nom'] = $nom;
				$_SESSION['email'] = $email;
				$_SESSION['telephone'] = $telephone;
				$_SESSION['client'] = $client;
				$_SESSION['precison'] = $precision;
			
			if($prenom == false || $nom == false || $email == false || $telephone == false){
				 $afficheErreur2 = "<h4>Veuillez compléter les champs obligatoires *</h4>";
				 $_SESSION['afficheErreur2'] = $afficheErreur2;
				}
			 
			 else{
				 header('Location: recupDataTest.php');
				 die();
				}
		}
		//Si on appuie sur le bouton "Précèdent"
		if(isset($_POST['retour2'])){
			// On va sur la page "index.php"
			header('Location: #demo2');
			die();
		}
?>

<!DOCTYPE htlm>
<html lang="fr">
<head>
	<meta charset="utf-8"/>
	<title>Formulaire de devis</title>
		<style>
			#quantite{
				width:3.5em;
			}
			
			select option[value="bleu"]{
				background: blue;
			}
			select option[value="rouge"]{
				background: red;
			}
			select option[value="vert"]{
				background: green;
			}
			h4{
				color: red;
			}
			a {
				  text-decoration: none;
				  padding: 15px;
				  background-color: white;
				  border-radius: 5px;
				  text-transform: uppercase;
				  color: black;
				  border: solid black;
			}
			a:hover{
				background-color: black;
				color: white;
			}
			.modal1 {
			  visibility: hidden;
			  opacity: 0;
			  position: absolute;
			  top: 0; right: 0;
			  bottom: 0; left: 0;
			  display: flex;
			  align-items: center;
			  justify-content: center;
			  background: rgba(77, 77, 77, .7);
			  transition: all .4s;
			}
			.modal1:target {
				  visibility: visible;
				  opacity: 1;
				}
				.modal_content1 {
				  border-radius: 4px;
				  position: relative;
				  width: 500px;
				  max-width: 90%;
				  background: white;
				  padding: 1.5em 2em;
				}
				.modal_close1 {
				  position: absolute;
				  top: 10px;
				  right: 10px;
				  color: grey;
				  text-decoration: none;
				}
				.modal2 {
			  visibility: hidden;
			  opacity: 0;
			  position: absolute;
			  top: 0; right: 0;
			  bottom: 0; left: 0;
			  display: flex;
			  align-items: center;
			  justify-content: center;
			  background: rgba(77, 77, 77, .7);
			  transition: all .4s;
			}
			.modal2:target {
				  visibility: visible;
				  opacity: 1;
				}
				.modal_content2 {
				  border-radius: 4px;
				  position: relative;
				  width: 500px;
				  max-width: 90%;
				  background: white;
				  padding: 1.5em 2em;
				}
				.modal_close2 {
				  position: absolute;
				  top: 10px;
				  right: 10px;
				  color: grey;
				  text-decoration: none;
				}
				.modal3 {
			  visibility: hidden;
			  opacity: 0;
			  position: absolute;
			  top: 0; right: 0;
			  bottom: 0; left: 0;
			  display: flex;
			  align-items: center;
			  justify-content: center;
			  background: rgba(77, 77, 77, .7);
			  transition: all .4s;
			}
			.modal3:target {
				  visibility: visible;
				  opacity: 1;
				}
				.modal_content3 {
				  border-radius: 4px;
				  position: relative;
				  width: 500px;
				  max-width: 90%;
				  background: white;
				  padding: 1.5em 2em;
				}
				.modal_close3 {
				  position: absolute;
				  top: 10px;
				  right: 10px;
				  color: grey;
				  text-decoration: none;
				}
				
		</style>
</head>
<body>
	<a href="#demo1">Devis Express</a>
	
	<!--Formulaire 1 -->
	<div id="demo1" class="modal1">
		<div class="modal_content1">
			<h1>Votre demande de devis</h1>
			<p>Faite votre demande de devis en seulement quelques clics !</br></br></br></p>
			<h2>Vos besoins (Total de 10 pièces minimum)</h2>
			<form action="" method="post">
				<p>
					<label for="modele">Modèle</label>
						<select name="modele" id="modele"/>
							<option>T-shirts</option>
							<option>Sweat-shirts</option>
							<option>Pulls</option>
						</select>
					
					<label for="quantite">Quantité</label>	
					<input type="number" name="quantite" id="quantite" min="10" value="<?php if (isset($_POST['quantite'])){echo $_POST['quantite'];} ?>"/>
					<br></br>	
				</p>

				<p>
					<label for="taille">Taille</label>
						<select name="taille" id="taille"/>
							<option>XS</option>
							<option>S</option>
							<option>M</option>
							<option>L</option>
							<option>XL</option>
						</select>
			
					<label for="couleur">Couleur</label>
						<select name="couleur" id="couleur">
							<option value="bleu">bleu</option>
							<option value="rouge">rouge</option>
							<option value="vert">vert</option>
						</select>
				</p>
				
				<p>
					<input type="submit" name="suivant" value="Suivant"/> 
				</p>
					<?php
						echo  $afficheErreur1;
					?>	
			</form>
		 <a href="#" class="modal_close1">×</a>
		</div>
	</div>
	
	<!--Formulaire 2 -->
	<div id="demo2" class="modal2">
		<div class="modal_content2">
			<h1>Votre demande de devis</h1>
			<p>Faite votre demande de devis en seulement quelques clics !</br></br></br></p>
			<h2>Infos supplémentaires pour impression</h2>
				<form action="" method="post">
					<p>
						<label for="qualite">Qualité</br></label>
						<select name="qualite" id="qualite">
							<option>Promotionnel/1er prix</option>
							<option>Meilleur rapport qualité / prix</option>
							<option>Haut de gamme</option>
						</select>
					</p>
		
					<p>
						<label for="zone">Zone de personnalisation</br></label>
						<select name="zone" id="zone">
							<option>Coeur</option>
							<option>Dos</option>
							<option>Manche</option>
						</select>
					</p>
		
					<p>
						<label for="impression">Technique d'impression</br></label>
						<select name="impression" id="impression">
							<option>DTG</option>
							<option>Transfert quadri</option>
							<option>Sérigraphie</option>
							<option>Flex Flock</option>
							<option>Broderie</option>
							<option>Sublimation</option>
						</select>
					</p>
		
					<p>
						<label for="fichier">Importez vos fichiers ici</br></label>
						<input type="file" id="fichier" name="fichier" accept="image/png, image/jpeg, .ai,
						.eps, .pdf, .svg">
					</p>
		
					<p>
						<input type="submit" name="retour1" value="Précèdent"/>
						<input type="submit" name="suivant1" value="Suivant"/>
					</p>
				</form>
		<a href="#" class="modal_close2">×</a>
		</div>
	</div>

	<!--Formulaire 3 -->
	<div id="demo3" class="modal3">
		<div class="modal_content3">
			<h1>Votre demande de devis</h1>
			<p>Faite votre demande de devis en seulement quelques clics !</br></br></br></p>
			<h2>Informations et précisions</h2>
		<form action="" method="post">
			<p>
				<input type="text" name="prenom" id="prenom" placeholder="prénom*" value ="<?php if (isset($_POST['prenom'])){echo $_POST['prenom'];} ?>"/>
				<input type="text" name="nom" id="nom" placeholder="Nom*" value ="<?php if (isset($_POST['nom'])){echo $_POST['nom'];} ?>"/>
				<input type="email" name="email" id="email" size="30" placeholder="Adresse mail*" value ="<?php if (isset($_POST['email'])){echo $_POST['email'];} ?>"/>
			</p>
		
			<p>
				<input type="tel" id="telephone" name="telephone" placeholder="Téléphone*" value ="<?php if (isset($_POST['telephone'])){echo $_POST['telephone'];} ?>"/>
				<select name="client" id="client">
					<option>Particulier</option>
					<option>Entreprise</option>
					<option>Autre</option>
				</select>
			</p>
		
			<p>
				<textarea id="precision" name="precision" rows="5" cols="40" 
				placeholder="Précision"></textarea>
			</p>
		
			<p>
				<input type="submit" name="retour2" value="Précèdent"/>
				<input type="submit" name="suivant2" value="Envoyer"/>
		</p>
		<?php
			echo  $afficheErreur2;
		?>	
	</form>
		<a href="#" class="modal_close3">×</a>
		</div>
	</div>
</body>
</html>

2 réponses

yg_be Messages postés 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 Ambassadeur 1 556
7 févr. 2022 à 11:35
bonjour,
ton message d'erreur ne t'indique aucun numéro de ligne?

es-tu certain que, avant d'exécuter la ligne 272, le code exécute d'abord une instruction
$afficheErreur1= ...;
?
Sinon, en ligne 272, le contenu de
$afficheErreur1
est indéfini.
1
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022
Modifié le 7 févr. 2022 à 12:37
Bah oui, en fait il fallait juste tester si la variable était renseignée ou pas. Merci beaucoup.
0
jee pee Messages postés 40559 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 décembre 2024 9 459
7 févr. 2022 à 11:44
Bonjour,

Au premier passage sur le formulaire, les variables ne sont pas définies, elles ne vont l'être qu'après. Il faudrait tester que la variable est renseignée ou pas :
<?php
						 if (isset($afficheErreur1)) {echo $afficheErreur1;}
?> 

1
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022
7 févr. 2022 à 12:35
Ah super, c'était ça ! En effet, il fallait tester pour voir si la variable était renseignée ou pas. Merci beaucoup.
0
yg_be Messages postés 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 1 556 > fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022
7 févr. 2022 à 12:42
Tu peux aussi assigner une valeur à la variable en début de programme.
1