Problème d'accolades dans un if ?

2501gigi
Invité n'ayant pas de compte PHPfrance

08 juil. 2006, 17:45

Bonjour a tous j'aurais voulus savoir se qui cloche dans mon script.

C'est pour un formulaire je voudrais faire que si deux conditions sont remplis sa verifi si les champs sont vides et sinon les metre dans la base de donnée.

ou alors si les deux condition ne sont pas remplis ily a deux autre condition et sa verifi champs vide ou sinon sa met dans bdd.

Je sais c'est un peut compliqué mais au depart le script etait beaucoup plus simple mais comme sa fait des heurs que j'y suis dessus je croit que plus sa va plus je complique c'est pour quoi je fais appel à vous.

Voilà mon script :
	if (($action=="soumi") && ($idemA=="IDEM")) {//1
	if (empty($nom) || empty($prenom) || empty($adresse) || empty($cp) || empty($ville) || empty($tel) || empty($mail)){$textad=  "Le champ n'est pas rempli."; }
	else {//2
	mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran);
	$insertSQL = "INSERT INTO bdadresliv (nom,prenom,adresse,cp,ville,tel,mail) VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')";
	$Resultl = mysql_query ($insertSQL,$ConnexionBoutmoran) or die(mysql_error()); 
	$insertSQL2 = "INSERT INTO bdadresfac (nomfac,prenomfac,adressefac,cpfac,villefac,telfac,mailfac) VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')";
	$Resultl2 = mysql_query ($insertSQL2,$ConnexionBoutmoran) or die(mysql_error());
	
    if (($action=="soumi") && ($idemA!="IDEM")) {//3
	if (empty($nom) || empty($prenom) || empty($adresse) || empty($cp) || empty($ville) || empty($tel) || empty($mail) || empty($nomf) || empty($prenomf) || empty($adressef) || empty($cpf) || empty($villef) || empty($telf) || empty($mailf))
	{$textad=  "Le champ n'est pas rempli."; $textad2=  "Le champ n'est pas rempli.";}
	else {//4
	mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran);
	$insertSQL = "INSERT INTO bdadresliv (nom,prenom,adresse,cp,ville,tel,mail) VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')";
	$Resultl = mysql_query ($insertSQL,$ConnexionBoutmoran) or die(mysql_error()); 
	$insertSQL3 = "INSERT INTO bdadresfac (nomfac,prenomfac,adressefac,cpfac,villefac,telfac,mailfac) VALUES ('$nomf','$prenomf','$adressef','$cpf','$villef','$telf','$mailf')";
	$Resultl3 = mysql_query ($insertSQL3,$ConnexionBoutmoran) or die(mysql_error());
	
	 
	if ($rdbmadame == "radmad") {
	$_SESSION['etat_civil']="Madame";
	} elseif ($rdbmade == "radmade") {
	$_SESSION ['etat_civil'] = "Mademoiselle";
	} elseif ($rdbmons == "radmons") {
	$_SESSION['etat_civil']="Monsieur";
	}
	
	
	$clientID=mysql_insert_id();
	$HTTP_SESSION_VARS['clientID']= $clientID;
	
	mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran);
	$insertSQL4 = "INSERT INTO bdcommande(clientID,date,totalcom) VALUES ('$clientID',NOW(),'$totalc')";
	$Resultl4 = mysql_query ($insertSQL4,$ConnexionBoutmoran) or die(mysql_error());
	
	for ($i=0;$i<count($liste);$i++)
		{
		$clientCID= $clientID;
		$nomArti=$liste[$i][1];
		$prixUni=$liste[$i][2];
		$Qu=$liste[$i][3];
		$prixArti=$liste[$i][4];
		mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran);
		$insertListe = "INSERT INTO bdpanier (clientCID,nomArti,prixUni,Qu,prixArti) VALUES ('$clientCID','$nomArti', '$prixUni','$Qu','$prixArti')";
		$Result5 = mysql_query($insertListe, $ConnexionBoutmoran) or die(mysql_error()); 
		}
	
	
	header("Location: ../PHPcommande/CatalogueRecapcommande.php");
	}//4
	}//3
	}//2
	}//1

Merci d'avance et bon courage.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 juil. 2006, 20:12

savoir se qui ne va pas
P't-être déjà que le titre de ton sujet n'est pas assez explicite... [-X

Invité
Invité n'ayant pas de compte PHPfrance

08 juil. 2006, 20:43

j'aurais voulu savoir si il y a des erreurs dans mon script voia tout.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 juil. 2006, 20:47

Règlements généraux

Nous vous rappelons les règles de nos forums qui sont valable pour tous:
  1. Le multipostage est interdit
    (...)
  2. Veuillez ne posez qu'une seule question par sujet
    (...)
  3. Veuillez utiliser un titre clair et précis qui correspond bien à votre problème.
    Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de votre problème.
    De même, nous savons déjà par votre message que vous avez besoin d'aide.
:wink:

2501gigi
Invité n'ayant pas de compte PHPfrance

08 juil. 2006, 20:52

je suis desoler je ne sais pas comment on fait pour changer le descriptif

en faite je voudrais savoir si les accolades ,les if et else sont bien placés ou si on peut simplifier le script

Eléphant du PHP | 90 Messages

08 juil. 2006, 20:57

pr moi lincolade //2 doit se mettre avant le if //3

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 juil. 2006, 21:00

je suis desoler je ne sais pas comment on fait pour changer le descriptif
Il suffit de rééditer le premier message du sujet.
Mais la fonction "éditer" n'apparaît que pour les membres inscrits.
Je l'ai donc modifié pour toi. ;)

Invité
Invité n'ayant pas de compte PHPfrance

09 juil. 2006, 00:12

merci et encore desolé et merci à toi marvlt je vais essayer

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

10 juil. 2006, 09:59

Au lieu de les aligner et de les compter avec des //1 //2 etc. indente ton code : à chaque fois que tu ouvres une accolade, tu décales tout le code qu'elle contient d'une tabulation :
if () {
   if() {
      for (;;) {
         // ...
      }
   }
   elseif {
      // ...
   }
   else {
      if() {
         // ...
      }
   }
}
Tu verras beaucoup plus clairement si elles sont équilibrées, il suffit de regarder en colonne s'il y a une accolade fermante située au même niveau :)

Invité
Invité n'ayant pas de compte PHPfrance

10 juil. 2006, 19:15

Merci ta methode est pas mal.

Je vais essaye.

2501gigi
Invité n'ayant pas de compte PHPfrance

11 juil. 2006, 17:11

Bon j'ai mal du m'expliquer tout d'abord je vous explique la page c'esr un formulaire contenant :

-au debut 3 checkbox
-puis la moitier pour l'adresse de livraison
-Si meme adresse de facturation que celle de livraison une checkbox.
-Puis si se n'est pas la meme la suite du formulaire avec l'edresse de facturation.

Tous cela sur la meme page.Bon voila pour le descriptif de la page.

Maintenant ce que je veut faire.

Quand on appuis sur le bouton pour soumettre le formulaire je veut qu'il verifi si les champs sont vide selon le choix de l'utilisateur c'est à dire.


Si l'utili rentre l'adresse de livraison puis qu'il coche la case cela verifi les champs nom prenom etc puis sa enregistre dans la base de donné si les champs ne sont pas vident ainsi que l'adresse de facturation mais avec les données de l'adresse de livraison.

2 ieme posibilite il entre l'adresse de livraison puis comme différente l'adresse de facturation et cela ferifi les 2 puis si les champs ne sont pas vident sa enregistre dans bdd.

Voila mon code eu peut arrengé mais j'ai une erreur

Parse error: parse error, unexpected $end in c:\program files\easyphp1-7\www\boutmoran2\phpformulaire\catalogueadresse.php on line 375

	
if ($action=="soumi")
	{//1
	 if ($idemA=="IDEM")
     {//2
	    if (empty($nom) || empty($prenom) || empty($adresse) || empty($cp) || empty($ville) || empty($tel) || empty($mail))
	    {$textad=  "Le champ n'est pas rempli."; }
	    else 
	    {//3
	    mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran);
	    $insertSQL = "INSERT INTO bdadresliv (nom,prenom,adresse,cp,ville,tel,mail) VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')";
	    $Resultl = mysql_query ($insertSQL,$ConnexionBoutmoran) or die(mysql_error()); 
	    $insertSQL2 = "INSERT INTO bdadresfac (nomfac,prenomfac,adressefac,cpfac,villefac,telfac,mailfac) VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')";
	    $Resultl2 = mysql_query ($insertSQL2,$ConnexionBoutmoran) or die(mysql_error()); 
		}//3
	 }//2
    else
    {//4
	 if ($idemA!="IDEM")
	 {//5
	    if(empty($nom) || empty($prenom) || empty($adresse) || empty($cp) || empty($ville) || empty($tel) || empty($mail) || empty($nomf) || empty($prenomf) || empty($adressef) || empty($cpf) || empty($villef) || empty($telf) || empty($mailf))
	    {$textad=  "Le champ n'est pas rempli."; $textad2=  "Le champ n'est pas rempli.";}
	    else 
	    {//6
	    mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran);
	    $insertSQL = "INSERT INTO bdadresliv (nom,prenom,adresse,cp,ville,tel,mail) VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')";
	    $Resultl = mysql_query ($insertSQL,$ConnexionBoutmoran) or die(mysql_error()); 
	    $insertSQL3 = "INSERT INTO bdadresfac (nomfac,prenomfac,adressefac,cpfac,villefac,telfac,mailfac) VALUES ('$nomf','$prenomf','$adressef','$cpf','$villef','$telf','$mailf')";
	    $Resultl3 = mysql_query ($insertSQL3,$ConnexionBoutmoran) or die(mysql_error()); 
		}//6
     }//5		
	
	// le reste du code pour plus de clarté 
	if ($rdbmadame == "radmad") {
	$_SESSION['etat_civil']="Madame";
	} elseif ($rdbmade == "radmade") {
	$_SESSION ['etat_civil'] = "Mademoiselle";
	} elseif ($rdbmons == "radmons") {
	$_SESSION['etat_civil']="Monsieur";
	}
	
	
	$clientID=mysql_insert_id();
	$HTTP_SESSION_VARS['clientID']= $clientID;
	
	mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran);
	$insertSQL4 = "INSERT INTO bdcommande(clientID,date,totalcom) VALUES ('$clientID',NOW(),'$totalc')";
	$Resultl4 = mysql_query ($insertSQL4,$ConnexionBoutmoran) or die(mysql_error());
	
	for ($i=0;$i<count($liste);$i++)
		{
		$clientCID= $clientID;
		$nomArti=$liste[$i][1];
		$prixUni=$liste[$i][2];
		$Qu=$liste[$i][3];
		$prixArti=$liste[$i][4];
		mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran);
		$insertListe = "INSERT INTO bdpanier (clientCID,nomArti,prixUni,Qu,prixArti) VALUES ('$clientCID','$nomArti', '$prixUni','$Qu','$prixArti')";
		$Result5 = mysql_query($insertListe, $ConnexionBoutmoran) or die(mysql_error()); 
		}
	
	
	header("Location: ../PHPcommande/CatalogueRecapcommande.php");
	// Fin du reste du code pour plus de clarté   
	}//1
[/php]

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

11 juil. 2006, 17:52

C'est laquelle la ligne 375 ??
est-ce qu'il ne te manquerait pas un point-virgule, une acolède, une parenthèse ou une guillemet dans les lignes qui précèdent ?

Sinon je me suis permis de complètement réindenter ton code et de découper quelques chaines pour te montrer que c'est quand même plus lisible ainsi :
if ($action=="soumi") {//1 
	if ($idemA=="IDEM") {//2 
		if (empty($nom) || empty($prenom) || empty($adresse) || empty($cp) 
			|| empty($ville) || empty($tel) || empty($mail)) {
			$textad=  "Le champ n'est pas rempli."; 
		} 
		else {//3 
			mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran); 
			$insertSQL = "INSERT INTO bdadresliv (nom,prenom,adresse,cp,ville,tel,mail) ";
			$insertSQL.= " VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')"; 
			$Resultl = mysql_query ($insertSQL,$ConnexionBoutmoran) or die(mysql_error()); 
			$insertSQL2 = "INSERT INTO bdadresfac (nomfac,prenomfac,adressefac,cpfac,villefac,telfac,mailfac) ";
			$insertSQL2.= " VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')"; 
			$Resultl2 = mysql_query ($insertSQL2,$ConnexionBoutmoran) or die(mysql_error()); 
		}//3 
	}//2 
	else {//4 
		if ($idemA!="IDEM") {//5 
			if(empty($nom) || empty($prenom) || empty($adresse) || empty($cp) 
				|| empty($ville) || empty($tel) || empty($mail) || empty($nomf) 
				|| empty($prenomf) || empty($adressef) || empty($cpf) || empty($villef) 
				|| empty($telf) || empty($mailf)) {
				$textad=  "Le champ n'est pas rempli."; 
				$textad2=  "Le champ n'est pas rempli.";
			} 
			else {//6 
				mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran); 
				$insertSQL = "INSERT INTO bdadresliv (nom,prenom,adresse,cp,ville,tel,mail) ";
				$insertSQL.= " VALUES ('$nom','$prenom','$adresse','$cp','$ville','$tel','$mail')"; 
				$Resultl = mysql_query ($insertSQL,$ConnexionBoutmoran) or die(mysql_error()); 
				$insertSQL3 = "INSERT INTO bdadresfac (nomfac,prenomfac,adressefac,cpfac,villefac,telfac,mailfac) ";
				$insertSQL3.= " VALUES ('$nomf','$prenomf','$adressef','$cpf','$villef','$telf','$mailf')"; 
				$Resultl3 = mysql_query ($insertSQL3,$ConnexionBoutmoran) or die(mysql_error()); 
			}//6 
		}//5         



		// le reste du code pour plus de clarté 

		if ($rdbmadame == "radmad") { 
			$_SESSION['etat_civil']="Madame"; 
		} elseif ($rdbmade == "radmade") { 
			$_SESSION ['etat_civil'] = "Mademoiselle"; 
		} elseif ($rdbmons == "radmons") { 
			$_SESSION['etat_civil']="Monsieur"; 
		} 

		$clientID=mysql_insert_id(); 
		$HTTP_SESSION_VARS['clientID']= $clientID; 
		
		mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran); 
		$insertSQL4 = "INSERT INTO bdcommande(clientID,date,totalcom) ";
		$insertSQL4.= " VALUES ('$clientID',NOW(),'$totalc')"; 
		$Resultl4 = mysql_query ($insertSQL4,$ConnexionBoutmoran) or die(mysql_error()); 
		
		for ($i=0;$i<count($liste);$i++) { 
			$clientCID= $clientID; 
			$nomArti=$liste[$i][1]; 
			$prixUni=$liste[$i][2]; 
			$Qu=$liste[$i][3]; 
			$prixArti=$liste[$i][4]; 
			mysql_select_db ($database_ConnexionBoutmoran,$ConnexionBoutmoran); 
			$insertListe = "INSERT INTO bdpanier (clientCID,nomArti,prixUni,Qu,prixArti) ";
			$insertListe.= " VALUES ('$clientCID','$nomArti', '$prixUni','$Qu','$prixArti')"; 
			$Result5 = mysql_query($insertListe, $ConnexionBoutmoran) or die(mysql_error()); 
		} 

		header("Location: ../PHPcommande/CatalogueRecapcommande.php"); 
		// Fin du reste du code pour plus de clarté  
	  
	  
	  
}//1 
On voit par exemple que ton else (n°4) n'est pas fermé.. est ce parce qu'il manque du code ou bien la parse error viendrait elle de là ?

de même ton if (n°5) ne sert à rien, si tu es dans le else (n°4), c'est parce que tu n'es pas rentré dans le if($idemA=="IDEM") et par conséquent que $idemA est forcément différent de "IDEM" :)

2501gigi
Invité n'ayant pas de compte PHPfrance

11 juil. 2006, 18:59

Merci Ryle alors pour le code avant ca c'est juste une initialisation des variables j'ai deja teste et il ne manque rien

Apres la ligne 375 c'est la fin de mon code il n'y a rein c'est la fin du html

<?php require_once('../Connections/ConnexionBoutmoran.php'); ?>
<?php session_start(); ?>
<?php

 
    if (!isset($HTTP_POST_VARS['nom'] )) $nom=""; else $nom=$HTTP_POST_VARS['nom'];   
	if (!isset($HTTP_POST_VARS['prenom'] )) $prenom="" ; else $prenom=$HTTP_POST_VARS['prenom'];
	if (!isset($HTTP_POST_VARS['adresse'] )) $adresse=""; else $adresse=$HTTP_POST_VARS['adresse'];
	if (!isset($_POST['cp'] )) $cp=""; else $cp=$_POST['cp'];
	if (!isset($HTTP_POST_VARS['ville'] )) $ville=""; else $ville=$HTTP_POST_VARS['ville'];
	if (!isset($HTTP_POST_VARS['tel'] )) $tel=""; else $tel=$HTTP_POST_VARS['tel'];
	if (!isset($HTTP_POST_VARS['mail'] )) $mail=""; else $mail=$HTTP_POST_VARS['mail'];
	if (!isset($HTTP_POST_VARS['action'])) $action=""; else $action = $HTTP_POST_VARS['action'];
	if (!isset($HTTP_POST_VARS['idemA'])) $idemA=""; else $idemA = $HTTP_POST_VARS['idemA'];
	if (!isset($HTTP_POST_VARS['nomf'] )) $nomf=""; else $nomf=$HTTP_POST_VARS['nomf'];   
	if (!isset($HTTP_POST_VARS['prenomf'] )) $prenomf="" ; else $prenomf=$HTTP_POST_VARS['prenomf'];
	if (!isset($HTTP_POST_VARS['adressef'] )) $adressef=""; else $adressef=$HTTP_POST_VARS['adressef'];
	if (!isset($_POST['cpf'] )) $cpf=""; else $cpf=$_POST['cpf'];
	if (!isset($HTTP_POST_VARS['villef'] )) $villef=""; else $villef=$HTTP_POST_VARS['villef'];
	if (!isset($HTTP_POST_VARS['telf'] )) $telf=""; else $telf=$HTTP_POST_VARS['telf'];
	if (!isset($HTTP_POST_VARS['mailf'] )) $mailf=""; else $mailf=$HTTP_POST_VARS['mailf'];
	if (!isset($HTTP_POST_VARS['rdbmadame'] )) $rdbmadame=""; else $rdbmadame=$HTTP_POST_VARS['rdbmadame'];
	if (!isset($HTTP_POST_VARS['rdbmade'] )) $rdbmade=""; else $rdbmade=$HTTP_POST_VARS['rdbmade'];
	if (!isset($HTTP_POST_VARS['rdbmons'] )) $rdbmons=""; else $rdbmons=$HTTP_POST_VARS['rdbmons'];
	if (!isset($_SESSION['totalc'])) $totalc=0; else $totalc=$_SESSION['totalc'];
	if (!isset($_SESSION['liste'])) $liste[]=array(0,"VIDE",0,1,0); else $liste=$_SESSION['liste'];
	if (!isset($_POST['texad'] )) $textad="";
	if (!isset($_POST['texad2'] )) $textad2=""; 

Voila se qui precède le if ($action=="soumi")


</table>
<p>&nbsp;</p>
</body>
</html>
la ligne 375 elle est là.


Et pour le else 4 et 5 je verifi et je te dis

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

11 juil. 2006, 19:04

Pourquoi utilises-tu alternativement $HTTP_POST_VARS[] et $_POST[] ? :shock:

2501gigi
Invité n'ayant pas de compte PHPfrance

11 juil. 2006, 19:07

Voila j'ai enlevé le if n°5 et j'ai fermé le if 4 il n'y à plus l'erreur ais il ne me verifie pas si les champs sont vident enfin tout au moin il pas a la page que j'ai mis dans header sans verifier les champs. que je coche la case idem ou pas.