Probleme avec les conditions (if, else..)

Eléphant du PHP | 58 Messages

13 déc. 2011, 18:14

Bonjour, ça fais plusieurs jours je bloque sur une condition, je réfléchi, teste, ... mais trouve pas la solution :(

j'ai un formulaires avec plusieurs champs à remplir obligatoirement, si la personne à oublié de remplir un champs, ça lui indique le champs qu'il a oublié... jusque là ça fonctionne et ça enregistre dans la base de donnée les infos...

j'ai un autre champ qui n'est pas obligatoire (même si la personne ne remplis pas le champs, les info s’enregistreront quand même dans la base de donnée)mais j'aimerais quand même indiqué à la personne si il a écrit une mauvaise saisie...,
mais je ne sais pas ou placer cette condition:
if(!preg_match("/^[A-Za-z0-9\s_-.€]{1,}$/", $_POST["prix"]))
{
 $message = "Votre champ prix n'est pas correctement rempli";
}
mon code
// Redirige l'utilisateur s'il est pas identifié
if(!isset($_SESSION['id']))
{
     header('Location: /index.php');
     exit();  
}

else
{
           
     // Une fois le formulaire envoyé
     if(isset($_POST["message"]) AND isset($_POST["titre"]) AND isset($_POST["departement"]) AND isset($_POST["contact"]))
     {
	 // Vérification de la validité des champs
           
		  
		   		  
	   if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ'._-]{1,}$/", $_POST["titre"]))
          {
               $message = "Votre titre n'est pas rempli";
               
          }
		  
	  elseif(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ@',._-]{1,}$/", $_POST["message"]))
          {
               $message = "Votre description n'est pas remplie";
               
          }
		  
	  elseif(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ_-]{1,}$/", $_POST["departement"]))
          {
               $message = "Votre département n'est pas sélectionné";
               
          }
		  
	  elseif(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ@._-]{1,}$/", $_POST["contact"]))
          {
               $message = "Votre contact n'a pas été rempli";
               
          }
		  		            		 	    		   
	  else
          {
	     		  	
			$gamme = htmlspecialchars($_POST["cliocompe"]);
			$titre = htmlspecialchars($_POST["titre"]);
			$description = htmlspecialchars($_POST["message"]);
			$departement = htmlspecialchars($_POST["departement"]);
			$contact = htmlspecialchars($_POST["contact"]);
			$prix = htmlspecialchars($_POST["prix"]);
			
			
			     // Création du compte utilisateur
						 					 					 						 
			$query=$db->prepare('INSERT INTO annonce (
                                     gamme
                                   , titre
                                   , description
                                   , contact
                                   , departement
                                   , prix						   
                                                                  )
                                       VALUES (:gamme, :titre, :description, :contact, :departement, :prix)');
                        	$query->bindValue(':gamme', $gamme, PDO::PARAM_STR);	                        
	                        $query->bindValue(':titre', $titre, PDO::PARAM_STR);
                         	$query->bindValue(':description', $description, PDO::PARAM_STR);
                          	$query->bindValue(':departement', $departement, PDO::PARAM_STR);
				$query->bindValue(':contact', $contact, PDO::PARAM_STR);
		                $query->bindValue(':prix', $prix, PDO::PARAM_STR); 										
                                $query->execute();
							
	           
			                             // Si une erreur survient
                         if(!$query)
                         {
                              $message = "Erreur d'accès à la base de données lors de la création de votre annonce";
                         }
						 
						 
			 else
			 {
                                   
                          // Message de confirmation
                      $message = "Votre annonce a correctement été créer";
               
            		
			  }
	  } 		 									                                       
      }	      
}



ViPHP
xTG
ViPHP | 7331 Messages

13 déc. 2011, 18:48

Faudrait le placer à la toute fin en concaténation avec celui là :
else
{
                                   
  // Message de confirmation
  $message = "Votre annonce a correctement été créer";
               
  if(!preg_match("/^[A-Za-z0-9\s_-.€]{1,}$/", $_POST["prix"]))
  {
    $message .= "Votre champ prix n'est pas correctement rempli";
  }
}

Eléphant du PHP | 58 Messages

13 déc. 2011, 18:52

merci, je vais tester ça maintenant, je tiens au courant :)

Eléphant du PHP | 58 Messages

13 déc. 2011, 19:00

ça ne fonctionne pas :( j'ai rentré toute les valeurs obligatoire sauf prix ! j'ai bien le message "Votre annonce a correctement été créer" et collé j'ai le message "Votre champ prix n'est pas correctement rempli" de plus j'ai un warning


Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 15 in C:\wampserver\.......


ViPHP
xTG
ViPHP | 7331 Messages

13 déc. 2011, 20:57


Eléphant du PHP | 58 Messages

13 déc. 2011, 22:09

Merci pour le lien j'ai trouvé le problème pour le warning donc une erreur de moins qui s'affiche plus, mais....

je rencontre toujours le souci pour la vérification du champ "prix" . Si je rentre tout mes champs obligatoire + mon champ "prix" c'est tout OK ça fonctionne j'ai le message qui s'affiche "Votre annonce a correctement été créer" mais Si je remplis pas mon champ titre j'ai mes 2 messages collé comme cela "Votre annonce a correctement été créerVotre champ prix n'est pas correctement rempli"

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 déc. 2011, 22:33

Il faut que tu remplaces le " .= " qui sert à concatener (donc à coller tes deux chaines ensembles) par un " = " qui sert à affecter

Ca te permettrait de remplacer le premier message par le second au lieu de le compléter :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 58 Messages

13 déc. 2011, 22:52

Merci cool ça fonctionne mais bon ça me contrôle pas mon champ "prix" exemple si je rempli par des "ééé" logiquement ça devrais bloqué vu dans mon preg_match je n'autorise pas les é !! et là ça bloque pas et dans ma table "annonce" dans le champ "prix" ça écris bien les "ééé".....

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 déc. 2011, 23:04

Ah ben y a deux choses... faut un test avant qui bloque quand c'est mal renseigné (comme tu le fais pour ton titre ou ton département) et faut un deuxième test qui - quand c'est bien renseigné - vérifie que le prix n'est pas vide et affiche le message si c'est pas le cas :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 58 Messages

13 déc. 2011, 23:17

Vu c'est pas un champ obligatoire ça fait réfléchir... mais bon c'est pas important de vérifier ce type de champs... car j'en ai un qui me fait peur.... :shock:

Dans mon formulaire j'ai un champ de type="file" et cette section est un peu plus complexe car faut je vérifie si l'extension de la photo est correcte si la photo est pas trop grosse etc ...et là je ne sais pas du tout ou placé dans ma page ces types de vérifications c'est pour ça je testé avec un simple champs prix de type"text" mais vu je galère pour un simple champ je vais avoir le cerveau qui va chauffer pour l'upload de photo #-o

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 déc. 2011, 00:19

Ben en fait dans tes tests avant enregistrement, il y a plusieurs choses à contrôler :
- est-ce que l'utilisateur a renseigné les champs obligatoires
- est-ce que les données renseignées sont correctes

Si ce n'est pas le cas, tu n'enregistres pas et tu demandes à l'utilisateur de recommencer (non mais sans blague ?! :))
Si tout est correct, tu peux enregistrer tes données, et refaire une série de test pour informer l'utilisateur des champs non obligatoire qui pourraient lui manquer...


Pour ton fichier, c'est un peu le même principe : qu'est ce que tu veux contrôler ? qu'est ce qui est bloquant ? ... si ce n'est pas correcte, tu n'enregistres pas le fichier, si tout est bon, tu peux faire appel à move_uploaded_file() pour récupérer le fichier envoyé :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 49 Messages

14 déc. 2011, 01:42

Bonsoir,
Si j'avais à faire ce genre de script, je ne résonnerais pas comme toi : je ne ferais pas la requête si on arrive dans le else{}
Si je comprends bien, ton but est d'inserer uniquement si tous les tests de champs sont OK

//Par exemple, tu initialises un array() qui contiendrais les éventuelles erreurs
$aErrors = array();

//Tu fais ta suite de tests pour chaque champ et tu remplis ton tableau si une erreur est détectée
if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ'._-]{1,}$/", $_POST["titre"]))
{

$aErrors['titre'] = "Votre titre n'est pas rempli";
}
if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ@',._-]{1,}$/", $_POST["message"]))
{
$aErrors['message'] = "Votre description n'est pas remplie";
}
//etc....

//Quand tous tes tests sont finis, tu décides ou non de faire ta requete
// => tu regardes si ton tableau $aErrors est encore vide ou contient des messages éventuels
if(count($aErrors)==0)
{
// je fais ma requête
}

//Au niveau des champs de ton formulaire, tu check le tableau $aErrors et affiche si il y a un msg correspondant au champ

Jérôme
http://liens-geeks.com

Eléphant du PHP | 58 Messages

14 déc. 2011, 10:10

Merci j'ai codé ce que tu m'as dis de faire, ça améliore le visibilité des erreurs mais je reste toujours sur le même soucie, il me reste 2 champs un de type="text" pour le prix et l'autre de type="file" pour upload une photo pour compléter l'annonce qui ne sont pas obligatoire donc même si la personne en remplissant le formulaire ne remplis pas le champ prix ou n'upload pas de photo l'annonce sera créera quand même.

Mais je ne sais pas ou ajouter la vérification avec le message d'erreur pour le prix en cas si la personne rentrerai des bêtises et des messages d'erreurs pour la grosse vérification pour le champs du type file si la personne ajouter une mauvaise extension etc...:(

Voila mon code en entier
<?php
session_start();
require('../include/connexionpdo.inc.php'); 
			  			   
// Redirige l'utilisateur s'il est pas identifié
if(!isset($_SESSION['id']))
{
     header('Location: /index.php');
	exit();  
}

else
{
   
     // Formulaire visible par défaut
     $masquer_formulaire = false;
	   
     if(isset($_POST["message"]) AND isset($_POST["titre"]) AND isset($_POST["departement"]) AND isset($_POST["contact"]))
     {
     $aErrors = array();
	 
	 // Vérification de la validité des champs

		  if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ'._-]{1,}$/", $_POST["titre"]))
          {
               $aErrors['titre'] = "Votre titre n'est pas rempli";              
          }
		  
		  if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ@',._-]{1,}$/", $_POST["message"]))
          {
               $aErrors['message'] = "Votre description n'est pas rempli";               
          }
		  
		  if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ_-]{1,}$/", $_POST["departement"]))
          {
               $aErrors['departement'] = "Votre département n'est pas selectionné";               
          }
		  
		  if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ@._-]{1,}$/", $_POST["contact"]))
          {
               $aErrors['contact'] = "Votre champs contact n'a pas été rempli";               
          }
		  		  
		  		  		  			  		            		 	    		   
		  if(count($aErrors)==0)
          {
	     		  				
			$titre = htmlspecialchars($_POST["titre"]);
			$description = htmlspecialchars($_POST["message"]);
			$departement = htmlspecialchars($_POST["departement"]);
			$contact = htmlspecialchars($_POST["contact"]);
			$prix = htmlspecialchars($_POST["prix"]);
			

			                // Création du compte utilisateur
						 					 					 						 
				 $query=$db->prepare('INSERT INTO annonce (
                                   
                                   , titre
                                   , description
                                   , contact
                                   , departement
                                   , prix						   
                                     )
                                       VALUES (:titre, :description, :contact, :departement, :prix)');                       
	                        $query->bindValue(':titre', $titre, PDO::PARAM_STR);
                         	$query->bindValue(':description', $description, PDO::PARAM_STR);
                          	$query->bindValue(':departement', $departement, PDO::PARAM_STR);
				$query->bindValue(':contact', $contact, PDO::PARAM_STR);
				$query->bindValue(':prix', $prix, PDO::PARAM_STR);												
                            $query->execute();
							
	           
			                             // Si une erreur survient

			             if(!$query)
                         {
                              $messageok = "Erreur d'accès à la base de données lors de la création de votre annonce";
                         }
					
			             else
						 {
                                   
                                     // Message de confirmation
                      $messageok = "Votre annonce a correctement été créer";				 					                                                  
                                  // On masque le formulaire
                                  $masquer_formulaire = true;
                   				  
					     }				     					   
		   }		 						 					 												                                       
	  }	      
}
$titre = "Véhicule de compétition - clio";
require('../include/debut-xhtml.inc.php');      									 
?>
                                                           <!-- espace membre -->													   
<div class="espacemembre">
<?php

		    				 		               
if(!empty($_SESSION['id'])) {
?>
<p class="deconnexion">
      <strong>[ <?php echo htmlspecialchars($_SESSION['id_nom'], ENT_QUOTES, 'UTF-8'); ?> ]</strong>
	  <a href="/user/deconnexion.php">Déconnexion</a><hr />
	  
	 <p><img src="../image/control.gif" alt="espace membre" title="espace membre" /><a class="accueil" href="../user/page_membre.php">-Espace utilisateur</a></p>
	<p><img src="../image/poster-annonce.png" alt="poster annonce" title="poster annonce" /><a class="accueil" href="poster-annonce.php">-Poster une annonce</a></p>
<?php } 
else 

{ 
    
    require ('../include/connexion.inc.php');
			
}

?>
</div>	
                                                                   <!-- corps -->
<?php
$query->CloseCursor();
?>																	   
<h2>PASSER VOTRE ANNONCE</h2>

    <p>
        Vous pouvez passer votre annonce ci dessous :<br /><br /><br />
    </p>
	

<div id="formulaire_annonce">
<p class="centre"><strong>VEHICULE DE COMPETITION :</strong></p><hr />

<?php if(isset($messageok)) { ?>
<h3 class="rouge"><?php echo htmlspecialchars($messageok); ?></h3>
<?php } if($masquer_formulaire != true) { ?>

<p class="rouge">* : Renseignements obligatoires</p>


<form id="formannonce" action="http://<?php echo htmlspecialchars($_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]); ?>" method="post" enctype="multipart/form-data">

<fieldset>
 <legend>Détail de l'annonce :</legend>
  <label for="titre"><strong>Titre * :</strong></label>
   <input type="text" name="titre" size="40" 
   maxlength="40"  id="titre" />
<?php if(isset($aErrors['titre'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['titre']); ?></p><?php }?>   
       
  <label for="message"><strong>Description * :</strong></label>
  <textarea name="message" id="message"cols='60' rows='3' maxlength="1000"><?php if(isset($_POST['message'])) echo htmlspecialchars($_POST['message']); ?></textarea>
<?php if(isset($aErrors['message'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['message']); ?></p> <?php }?>    
 
 <label for="prix"><strong>Prix :</strong></label>
   <input type="text" name="prix" size="40" 
   maxlength="40"  id="prix" />
<?php if(isset($aErrors['prix'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['prix']); ?></p><?php }?>      
   
</fieldset>

<fieldset>
 <legend>Vos coordonnées :</legend>
  <label for="contact"><strong>Contact * :</strong></label>
   <input type="text" name="contact" size="40" 
   maxlength="40"  id="contact" />
<?php if(isset($aErrors['contact'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['contact']); ?></p> <?php }?>        
    
   
   <label for="departement"><strong>Département * :</strong></label>
   <select name="departement" id="departement">
   <option value="" >-- Choisir --</option>
   <option value="01 - Ain">01 - Ain</option>
   <option value="02 - Aisne">02 - Aisne</option>
   <option value="03 - Allier">03 - Allier</option>
   <option value="04 - Alpes de Hautes-Provence">04 - Alpes de Hautes-Provence</option>
   <option value="05 - Hautes-Alpes">05 - Hautes-Alpes</option>
   <option value="06 - Alpes-Maritimes">06 - Alpes-Maritimes</option>
   <option value="07 - Ardèche">07 - Ardèche</option>
   <option value="08 - Ardennes">08 - Ardennes</option>
   <option value="09 - Ariège">09 - Ariège</option>
   <option value="10 - Aube">10 - Aube</option>
   <option value="11 - Aude">11 - Aude</option>
   <option value="12 - Aveyron">12 - Aveyron</option>
   <option value="13 - Bouches-du-Rhône">13 - Bouches-du-Rhône</option>
   <option value="14 - Calvados">14 - Calvados</option>
   <option value="15 - Cantal">15 - Cantal</option>
   <option value="16 - Charente">16 - Charente</option>
   <option value="17 - Charente-Maritime">17 - Charente-Maritime</option>
   <option value="18 - Cher">18 - Cher</option>
   <option value="19 - Corrèze">19 - Corrèze</option>
   <option value="2A - Corse-du-Sud">2A - Corse-du-Sud</option>
   <option value="2B - Haute-Corse">2B - Haute-Corse</option>
   <option value="21 - Côte-d'Or">21 - Côte-d'Or</option>
   <option value="22 - Côtes d'Armor">22 - Côtes d'Armor</option>
   <option value="23 - Creuse">23 - Creuse</option>
   <option value="24 - Dordogne">24 - Dordogne</option>
   <option value="25 - Doubs">25 - Doubs</option>
   <option value="26 - Drôme">26 - Drôme</option>
   <option value="27 - Eure">27 - Eure</option>
   <option value="28 - Eure-et-Loir">28 - Eure-et-Loir</option>
   <option value="29 - Finistère">29 - Finistère</option>
   <option value="30 - Gard<">30 - Gard</option>
   <option value="31 - Haute-Garonne">31 - Haute-Garonne</option>
   <option value="32 - Gers">32 - Gers</option>
   <option value="33 - Gironde">33 - Gironde</option>
   <option value="34 - Hérault">34 - Hérault</option>
   <option value="35 - Ille-et-Vilaine">35 - Ille-et-Vilaine</option>
   <option value="36 - Indre">36 - Indre</option>
   <option value="37 - Indre-et-Loire">37 - Indre-et-Loire</option>
   <option value="38 - Isère">38 - Isère</option>
   <option value="39 - Jura">39 - Jura</option>
   <option value="40 - Landes">40 - Landes</option>
   <option value="41 - Loir-et-Cher">41 - Loir-et-Cher</option>
   <option value="42 - Loire">42 - Loire</option>
   <option value="43 - Haute-Loire">43 - Haute-Loire</option>
   <option value="44 - Loire-Atlantique">44 - Loire-Atlantique</option>
   <option value="45 - Loiret">45 - Loiret</option>
   <option value="46 - Lot">46 - Lot</option>
   <option value="47 - Lot-et-Garonne">47 - Lot-et-Garonne</option>
   <option value="48 - Lozère">48 - Lozère</option>
   <option value="49 - Maine-et-Loire">49 - Maine-et-Loire</option>
   <option value="50 - Manche">50 - Manche</option>
   <option value="51 - Marne">51 - Marne</option>
   <option value="52 - Haute-Marne">52 - Haute-Marne</option>
   <option value="53 - Mayenne">53 - Mayenne</option>
   <option value="54 - Meurthe-et-Moselle">54 - Meurthe-et-Moselle</option>
   <option value="55 - Meuse">55 - Meuse</option>
   <option value="56 - Morbihan">56 - Morbihan</option>
   <option value="57 - Moselle">57 - Moselle</option>
   <option value="58 - Nièvre">58 - Nièvre</option>
   <option value="59 - Nord">59 - Nord</option>
   <option value="60 - Oise">60 - Oise</option>
   <option value="61 - Orne">61 - Orne</option>
   <option value="62 - Pas-de-Calais">62 - Pas-de-Calais</option>
   <option value="63 - Puy-de-Dôme">63 - Puy-de-Dôme</option>
   <option value="64 - Pyrénées-Atlantiques">64 - Pyrénées-Atlantiques</option>
   <option value="65 - Hautes-Pyrénées">65 - Hautes-Pyrénées</option>
   <option value="66 - Pyrénées-Orientales">66 - Pyrénées-Orientales</option>
   <option value="67 - Bas-Rhin">67 - Bas-Rhin</option>
   <option value="68 - Haut-Rhin">68 - Haut-Rhin</option>
   <option value="69 - Rhône">69 - Rhône</option>
   <option value="70 - Haute-Saône">70 - Haute-Saône</option>
   <option value="71 - Saône-et-Loire">71 - Saône-et-Loire</option>
   <option value="72 - Sarthe">72 - Sarthe</option>
   <option value="73 - Savoie">73 - Savoie</option>
   <option value="74 - Haute-Savoie">74 - Haute-Savoie</option>
   <option value="75 - Paris">75 - Paris</option>
   <option value="76 - Seine-Maritime">76 - Seine-Maritime</option>
   <option value="77 - Seine-et-Marne">77 - Seine-et-Marne</option>
   <option value="78 - Yvelines">78 - Yvelines</option>
   <option value="79 - Deux-Sèvres">79 - Deux-Sèvres</option>
   <option value="80 - Somme">80 - Somme</option>
   <option value="81 - Tarn">81 - Tarn</option>
   <option value="82 - Tarn-et-Garonne">82 - Tarn-et-Garonne</option>
   <option value="83 - Var">83 - Var</option>
   <option value="84 - Vaucluse">84 - Vaucluse</option>
   <option value="85 - Vendée">85 - Vendée</option>
   <option value="86 - Vienne">86 - Vienne</option>
   <option value="87 - Haute-Vienne">87 - Haute-Vienne</option>
   <option value="88 - Vosges">88 - Vosges</option>
   <option value="89 - Yonne">89 - Yonne</option>
   <option value="90 - Territoire-de-Belfort">90 - Territoire-de-Belfort</option>
   <option value="91 - Essonne">91 - Essonne</option>
   <option value="92 - Hauts-de-Seine">92 - Hauts-de-Seine</option>
   <option value="93 - Seine-Saint-Denis">93 - Seine-Saint-Denis</option>
   <option value="94 - Val-de-Marne">94 - Val-de-Marne</option>
   <option value="95 - Val-d'Oise">95 - Val-d'Oise</option> 
   </select> 
<?php if(isset($aErrors['departement'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['departement']); ?></p> <?php }?>     
 </fieldset>
 
 <fieldset>
 <legend>Votre photo :</legend>
 
<p>            
     <strong>Photo :</strong> <input type="file" name="avatar" />
</p>
   

</fieldset>

 <p>
 <input type="submit" value="Envoyer" />
 </p>

</form>

</div>
<?php require ('../include/footer.inc.php');
} ?>


ViPHP
xTG
ViPHP | 7331 Messages

14 déc. 2011, 11:25

Faut pas compter le nombre de message mais le nombre d'erreurs critiques en fait pour t'en sortir. ;)
if( .... ){ // champ obligatoire
  $message[] = "Ce champ est incorrect.";
  $erreurCritique++;
}
if( ... ){ // n'est pas obligatoire.
  $message[] = "Ce champ est vide ou incorrect mais n'est pas obligatoire.";
}

if( $erreurCritique === 0 ){
  // on insère
  $message[] = "Informations insérées";
}
foreach($message as $msg)
  echo $msg . '<br />';

Eléphant du PHP | 58 Messages

14 déc. 2011, 12:08

Et sans :
foreach($message as $msg)
  echo $msg . '<br />';
ça marchera ?

car j'ai écris le code comme cela:
<?php
session_start();
require('../include/connexionpdo.inc.php'); 

			  			   
// Redirige l'utilisateur s'il est pas identifié
if(!isset($_SESSION['id']))
{
     header('Location: /index.php');
	 exit();  
}

else
{
   
     // Formulaire visible par défaut
     $masquer_formulaire = false;
	   
     if(isset($_POST["message"]) AND isset($_POST["titre"]) AND isset($_POST["departement"]) AND isset($_POST["contact"]))
     {
     $aErrors = array();
	 
	 // Vérification de la validité des champs
 
		  if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ'._-]{1,}$/", $_POST["titre"]))
          {
               $aErrors['titre'] = "Votre titre n'est pas rempli"; 
               $erreurCritique++;			   
          }
		  
		  if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ@',._-]{1,}$/", $_POST["message"]))
          {
               $aErrors['message'] = "Votre description n'est pas rempli";  
              $erreurCritique++;			   
          }
		  
		  if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ_-]{1,}$/", $_POST["departement"]))
          {
               $aErrors['departement'] = "Votre département n'est pas selectionné"; 
              	$erreurCritique++;		   
          }
		  
		  if(!preg_match("/^[A-Za-z0-9\sÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ@._-]{1,}$/", $_POST["contact"]))
          {
               $aErrors['contact'] = "Votre champs contact n'a pas été rempli"; 
               	$erreurCritique++;		   
          }
		  
		  if(!preg_match("/^[A-Za-z0-9.€]{1,}$/", $_POST["prix"]))
         {
            $aErrors['prix'] = "Votre champ prix n'est pas correctement rempli";
         }
		  		  
		  		  		  			  		            		 	    		   
		  if( $erreurCritique === 0 )
          {
	     		  	
			$gamme = htmlspecialchars($_POST["cliocompe"]);
			$titre = htmlspecialchars($_POST["titre"]);
			$description = htmlspecialchars($_POST["message"]);
			$departement = htmlspecialchars($_POST["departement"]);
			$contact = htmlspecialchars($_POST["contact"]);
			$prix = htmlspecialchars($_POST["prix"]);
			
			
			
			                // Création du compte utilisateur
						 					 					 						 
						  $query=$db->prepare('INSERT INTO annonce (
                                   gamme
                                   , titre
                                   , description
                                   , contact
                                   , departement
                                   , prix						   
                                     )
                                       VALUES (:gamme, :titre, :description, :contact, :departement, :prix)');
                        	$query->bindValue(':gamme', $gamme, PDO::PARAM_STR);	                        
	                        $query->bindValue(':titre', $titre, PDO::PARAM_STR);
                         	$query->bindValue(':description', $description, PDO::PARAM_STR);
                          	$query->bindValue(':departement', $departement, PDO::PARAM_STR);
							$query->bindValue(':contact', $contact, PDO::PARAM_STR);
							$query->bindValue(':prix', $prix, PDO::PARAM_STR);												
                            $query->execute();
							
	           
			                             // Si une erreur survient

			             if(!$query)
                         {
                              $messageok = "Erreur d'accès à la base de données lors de la création de votre annonce";
                         }
					
			             else
						 {
                                   
                                     // Message de confirmation
                      $messageok = "Votre annonce a correctement été créer";				 					                                                  
                                  // On masque le formulaire
                                  $masquer_formulaire = true;
                   				  
					     }				     					   
		   }		 						 					 												                                       
	  }	      
}
$titre = "Véhicule de compétition - clio";
require('../include/debut-xhtml.inc.php');      									 
?>
                                                           <!-- espace membre -->													   
<div class="espacemembre">
<?php

		   
 if(!empty($_COOKIE['connexion_automatique'])&& !empty($_COOKIE['pass']))
 {                                 					         													           					    											
         if (false !== $_COOKIE['pass'])
         {
				 $query=$db->prepare('SELECT id_comptes_utilisateurs, Nom_Utilisateur, Mot_de_Passe, hash_cookie
                                    FROM Comptes_Utilisateurs 
	                                WHERE Mot_de_Passe = :connexion_automatique');
					$query->bindValue(':connexion_automatique',$_COOKIE['pass'], PDO::PARAM_STR);
                    $query->execute();
	     if ($row = $query->fetch(PDO::FETCH_ASSOC))
		  {
				  		                 								 				
				if($_COOKIE['connexion_automatique'] == $row["hash_cookie"])
				{								
				$_SESSION['id']=$row["id_comptes_utilisateurs"];
                $_SESSION['id_nom']=$row["Nom_Utilisateur"];
				}
				
				
				if($_COOKIE['connexion_automatique'] != $row["hash_cookie"])
				{								
				setcookie("connexion_automatique", "", time() - 3600, "/");
                setcookie("pass", "", time() - 3600, "/"); 			    
				}				
										
          }

		  
     }   				
         
 }	 				 		               
if(!empty($_SESSION['id'])) {
?>
<p class="deconnexion">
      <strong>[ <?php echo htmlspecialchars($_SESSION['id_nom'], ENT_QUOTES, 'UTF-8'); ?> ]</strong>
	  <a href="/jmc-competition/user/deconnexion.php">Déconnexion</a><hr />
	  
	 <p><img src="../image/control.gif" alt="espace membre" title="espace membre" /><a class="accueil" href="../user/page_membre.php">-Espace utilisateur</a></p>
	<p><img src="../image/poster-annonce.png" alt="poster annonce" title="poster annonce" /><a class="accueil" href="poster-annonce.php">-Poster une annonce</a></p>
<?php } 
else 

{ 
    
    require ('../include/connexion.inc.php');
			
}

?>
</div>	
                                                                   <!-- corps -->
<?php												  
$query->CloseCursor();
?>	
																   
<h2>PASSER VOTRE ANNONCE</h2>

    <p>
        Vous pouvez passer votre annonce ci dessous :<br /><br /><br />
    </p>
	

<div id="formulaire_annonce">
<p class="centre"><strong>VEHICULE DE COMPETITION :</strong></p><hr />

<?php if(isset($messageok)) { ?>
<h3 class="rouge"><?php echo htmlspecialchars($messageok); ?></h3>
<?php } if($masquer_formulaire != true) { ?>

<p class="rouge">* : Renseignements obligatoires</p>



<form id="formannonce" action="http://<?php echo htmlspecialchars($_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]); ?>" method="post" enctype="multipart/form-data">


<fieldset>
 <legend>Détail de l'annonce :</legend>
  <label for="titre"><strong>Titre * :</strong></label><?php if(isset($aErrors['titre'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['titre']); ?></p><?php }?> 
   <input type="text" name="titre" size="40" 
   maxlength="40"  id="titre" value="<?php if(isset($_POST['titre'])){echo htmlspecialchars($_POST['titre'], ENT_QUOTES, 'UTF-8');} ?>" />
  
       
  <label for="message"><strong>Description * :</strong></label><?php if(isset($aErrors['message'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['message']); ?></p> <?php }?>    
  <textarea name="message" id="message"cols='60' rows='3' maxlength="1000"><?php if(isset($_POST['message'])){echo htmlspecialchars($_POST['message']);} ?></textarea>

 
 <label for="prix"><strong>Prix :</strong></label>
   <input type="text" name="prix" size="40" 
   maxlength="40"  id="prix" />
<?php if(isset($aErrors['prix'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['prix']); ?></p><?php }?>      
   
</fieldset>

<fieldset>
 <legend>Vos coordonnées :</legend>
  <label for="contact"><strong>Contact * :</strong></label><?php if(isset($aErrors['contact'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['contact']); ?></p> <?php }?>  
   <input type="text" name="contact" size="40" 
   maxlength="40"  id="contact" value="<?php if(isset($_POST['contact'])){echo htmlspecialchars($_POST['contact'], ENT_QUOTES, 'UTF-8');} ?>" />
      
       
   <label for="departement"><strong>Département * :</strong></label>
   <select name="departement" id="departement">
   <option value="" >-- Choisir --</option>
   <option value="01 - Ain">01 - Ain</option>
   <option value="02 - Aisne">02 - Aisne</option>
   <option value="03 - Allier">03 - Allier</option>
   <option value="04 - Alpes de Hautes-Provence">04 - Alpes de Hautes-Provence</option>
   <option value="05 - Hautes-Alpes">05 - Hautes-Alpes</option>
   <option value="06 - Alpes-Maritimes">06 - Alpes-Maritimes</option>
   <option value="07 - Ardèche">07 - Ardèche</option>
   <option value="08 - Ardennes">08 - Ardennes</option>
   <option value="09 - Ariège">09 - Ariège</option>
   <option value="10 - Aube">10 - Aube</option>
   <option value="11 - Aude">11 - Aude</option>
   <option value="12 - Aveyron">12 - Aveyron</option>
   <option value="13 - Bouches-du-Rhône">13 - Bouches-du-Rhône</option>
   <option value="14 - Calvados">14 - Calvados</option>
   <option value="15 - Cantal">15 - Cantal</option>
   <option value="16 - Charente">16 - Charente</option>
   <option value="17 - Charente-Maritime">17 - Charente-Maritime</option>
   <option value="18 - Cher">18 - Cher</option>
   <option value="19 - Corrèze">19 - Corrèze</option>
   <option value="2A - Corse-du-Sud">2A - Corse-du-Sud</option>
   <option value="2B - Haute-Corse">2B - Haute-Corse</option>
   <option value="21 - Côte-d'Or">21 - Côte-d'Or</option>
   <option value="22 - Côtes d'Armor">22 - Côtes d'Armor</option>
   <option value="23 - Creuse">23 - Creuse</option>
   <option value="24 - Dordogne">24 - Dordogne</option>
   <option value="25 - Doubs">25 - Doubs</option>
   <option value="26 - Drôme">26 - Drôme</option>
   <option value="27 - Eure">27 - Eure</option>
   <option value="28 - Eure-et-Loir">28 - Eure-et-Loir</option>
   <option value="29 - Finistère">29 - Finistère</option>
   <option value="30 - Gard<">30 - Gard</option>
   <option value="31 - Haute-Garonne">31 - Haute-Garonne</option>
   <option value="32 - Gers">32 - Gers</option>
   <option value="33 - Gironde">33 - Gironde</option>
   <option value="34 - Hérault">34 - Hérault</option>
   <option value="35 - Ille-et-Vilaine">35 - Ille-et-Vilaine</option>
   <option value="36 - Indre">36 - Indre</option>
   <option value="37 - Indre-et-Loire">37 - Indre-et-Loire</option>
   <option value="38 - Isère">38 - Isère</option>
   <option value="39 - Jura">39 - Jura</option>
   <option value="40 - Landes">40 - Landes</option>
   <option value="41 - Loir-et-Cher">41 - Loir-et-Cher</option>
   <option value="42 - Loire">42 - Loire</option>
   <option value="43 - Haute-Loire">43 - Haute-Loire</option>
   <option value="44 - Loire-Atlantique">44 - Loire-Atlantique</option>
   <option value="45 - Loiret">45 - Loiret</option>
   <option value="46 - Lot">46 - Lot</option>
   <option value="47 - Lot-et-Garonne">47 - Lot-et-Garonne</option>
   <option value="48 - Lozère">48 - Lozère</option>
   <option value="49 - Maine-et-Loire">49 - Maine-et-Loire</option>
   <option value="50 - Manche">50 - Manche</option>
   <option value="51 - Marne">51 - Marne</option>
   <option value="52 - Haute-Marne">52 - Haute-Marne</option>
   <option value="53 - Mayenne">53 - Mayenne</option>
   <option value="54 - Meurthe-et-Moselle">54 - Meurthe-et-Moselle</option>
   <option value="55 - Meuse">55 - Meuse</option>
   <option value="56 - Morbihan">56 - Morbihan</option>
   <option value="57 - Moselle">57 - Moselle</option>
   <option value="58 - Nièvre">58 - Nièvre</option>
   <option value="59 - Nord">59 - Nord</option>
   <option value="60 - Oise">60 - Oise</option>
   <option value="61 - Orne">61 - Orne</option>
   <option value="62 - Pas-de-Calais">62 - Pas-de-Calais</option>
   <option value="63 - Puy-de-Dôme">63 - Puy-de-Dôme</option>
   <option value="64 - Pyrénées-Atlantiques">64 - Pyrénées-Atlantiques</option>
   <option value="65 - Hautes-Pyrénées">65 - Hautes-Pyrénées</option>
   <option value="66 - Pyrénées-Orientales">66 - Pyrénées-Orientales</option>
   <option value="67 - Bas-Rhin">67 - Bas-Rhin</option>
   <option value="68 - Haut-Rhin">68 - Haut-Rhin</option>
   <option value="69 - Rhône">69 - Rhône</option>
   <option value="70 - Haute-Saône">70 - Haute-Saône</option>
   <option value="71 - Saône-et-Loire">71 - Saône-et-Loire</option>
   <option value="72 - Sarthe">72 - Sarthe</option>
   <option value="73 - Savoie">73 - Savoie</option>
   <option value="74 - Haute-Savoie">74 - Haute-Savoie</option>
   <option value="75 - Paris">75 - Paris</option>
   <option value="76 - Seine-Maritime">76 - Seine-Maritime</option>
   <option value="77 - Seine-et-Marne">77 - Seine-et-Marne</option>
   <option value="78 - Yvelines">78 - Yvelines</option>
   <option value="79 - Deux-Sèvres">79 - Deux-Sèvres</option>
   <option value="80 - Somme">80 - Somme</option>
   <option value="81 - Tarn">81 - Tarn</option>
   <option value="82 - Tarn-et-Garonne">82 - Tarn-et-Garonne</option>
   <option value="83 - Var">83 - Var</option>
   <option value="84 - Vaucluse">84 - Vaucluse</option>
   <option value="85 - Vendée">85 - Vendée</option>
   <option value="86 - Vienne">86 - Vienne</option>
   <option value="87 - Haute-Vienne">87 - Haute-Vienne</option>
   <option value="88 - Vosges">88 - Vosges</option>
   <option value="89 - Yonne">89 - Yonne</option>
   <option value="90 - Territoire-de-Belfort">90 - Territoire-de-Belfort</option>
   <option value="91 - Essonne">91 - Essonne</option>
   <option value="92 - Hauts-de-Seine">92 - Hauts-de-Seine</option>
   <option value="93 - Seine-Saint-Denis">93 - Seine-Saint-Denis</option>
   <option value="94 - Val-de-Marne">94 - Val-de-Marne</option>
   <option value="95 - Val-d'Oise">95 - Val-d'Oise</option> 
   </select> 
<?php if(isset($aErrors['departement'])) { ?>
<p class="rouge"><?php echo htmlspecialchars($aErrors['departement']); ?></p> <?php }?>     
 </fieldset>
 
 
 <fieldset>
 <legend>Votre photo :</legend>
 
<p>            
     <strong>Photo :</strong> <input type="file" name="avatar" />
</p>
   

</fieldset>

 <p>
 <input type="submit" value="Envoyer" />
 </p>

</form>

</div>
<?php require ('../include/footer.inc.php');
} ?>


Et quand je rempli le formulaire en oubliant volontairement d'oublier des champs obligatoires j'ai bien les message qui s'affiche en me disant que j'ai oublier de remplir le titre.... mais tout en haut de ma page j'ai une erreur me disant Notice: Undefined variable: erreurCritique in C:\wampserver\............................. pour cette ligne
$erreurCritique++;