Probléme avec un IF...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probléme avec un IF...

par Kimble » 16 sept. 2006, 14:33

J'ai trouvé ! En fait il fallait se servir de la variable "$nbre_annule"...
<?php
if($nbre_annule>'oui')
{  
        $lien="index.phpliste=millesime_ventes_annulees&millesime_choisi=".$millesime_choisi."&annule=".$annule."";                      
        echo "Il y a ".$total."  ventes et <a href=".$lien." target=\"_top\" title=\"  Voir les ventes annulées de ".htmlentities(urldecode($commercial['commercial'])). " en ".$millesime['millesime']." ?\"> ".$nbre_annule." annulation(s) pour l'année ".$millesime['millesime']."";       
        }  
        else  
        {//cette condition n'est toujours pas prise en compte !! 
        echo "Il y a ".$total."  ventes et aucune annulation pour l'année ".$millesime['millesime']."";          
        }    ?>
Affichage :
Si il existe des annulations :
Il y a 13 ventes et 1 annulation(s) pour l'année 2006
Et le lien est actif pour voir le détail de l'annulation.
Si il n'y a pas d'annulation :
Il y a 18 ventes et aucune annulation pour l'année 2006
Et le lien est inactif.
Donc résolu et merci à tous les 3.

par Cyrano » 16 sept. 2006, 09:13

Restons dans la logique, ça devrait te sembler relativement évident. Plus haut, tu assignais une valeur à $annule juste avant de tester cette valeur : tu as corrigé en supprimant cette assignation, mais du coup, la variable n'est plus définie du tout.

En outre, je comprend mal cette suite de requête juste pour sortir les liens vers les différentes ventes annulées. Je note entre autres choses que tu fais avec la seconde requête ainsi que sur la dernière un beau produit cartésien parce que ta requête porte sur deux tables mais tu ne fais aucune jointure.

Essaye de simplifier un peu tout ça. Pour définir ce que tu veux afficher, tu as besoin du nombre de ventes réussies et d'autre part du nombre de ventes annulées triées par commercial. Tu afficheras la première alternative uniquement si le seconde requête retourne un nombre supérieur à 0.

par Kimble » 16 sept. 2006, 08:45

Ok, au lieu de déclarer en haut de page que $annule='oui', j'ai refait mes requétes de façon à
assigner à la variable "$annule" la valeur "oui" ou pas "oui":
<?php
//requete qui affiche les ventes par commercial et millesime choisi	   	 	  
	    $result = mysql_query("SELECT * from vente_v2 
		WHERE idmillesime='".$millesime_choisi."' 
		AND idcommercial='".$com_choisi."' 
		ORDER BY client LIMIT $start, $nb_results_p_page");
//Affichage du millesime		
		$req_millesime=mysql_query("select * from vente_v2, millesime 
		where id_millesime LIKE '".$millesime_choisi."'");
		$millesime=mysql_fetch_array($req_millesime);
//requete qui affiche le nbre total de ventes nettes du commercial (hors annulations)		
		$text_query_total="select * from vente_v2 
		where idcommercial='".$com_choisi."' 
		AND idmillesime='".$millesime_choisi."'  
		AND annule NOT LIKE '%oui%'";	
		$req_vente_total=mysql_query($text_query_total) or die (mysql_error());
//$total est le nombre de ventes		
		$total=mysql_num_rows($req_vente_total);
//requete qui affiche le nbre total d'annulations du commercial 		
		$text_nbre_annule="select * from vente_v2 
		where idcommercial='".$com_choisi."' 
		and idmillesime='".$millesime_choisi."' 
		AND annule LIKE '%oui%'";	
		$req_nbre_annule=mysql_query($text_nbre_annule) or die (mysql_error()); 
//$req_nbre_annule	est le nb total d'annulation	
		$nbre_annule=mysql_num_rows($req_nbre_annule);		
//Affichage du nom du commercial		
		$req_commercial=mysql_query("select * from vente_v2, commercial 
		where id_commercial  LIKE'".$com_choisi."'");
		$commercial=mysql_fetch_array($req_commercial);
if ($annule=='oui') 
        { 
        $lien="index.phpliste=millesime_ventes_annulees&millesime_choisi=".$millesime_choisi."&annule=".$annule."";                     
        echo "Il y a ".$total."  ventes et <a href=".$lien." target=\"_top\" title=\"  Voir les ventes annulées de ".htmlentities(urldecode($commercial['commercial'])). " en ".$millesime['millesime']." ?\"> ".$nbre_annule." annulation(s) pour l'année ".$millesime['millesime']."";      
        } 
        else 
        {//cette condition n'est toujours pas prise en compte !!
        echo "Il y a ".$total."  ventes et aucune annulation pour l'année ".$millesime['millesime']."";         
        }     
        ?> 
Voilà le résultat :
Il y a 15 ventes + 1 annulation(s) pour l'année 2006
Ce qui est bon, avec le lien qui s'affiche...
Il y a 14 ventes + 0 annulation(s) pour l'année 2005
Ce qui n'est pas bon, parce que c'est la 1ére condition et que le lien s'affiche ! Le script fait bien la différence si la valeur "oui" existe, mais
que sur la 1ére condition...Pourtant j'ai tout vérifié ! mon code semble bon. Il est ou le probléme :?:

par graphistnet » 15 sept. 2006, 19:52

Regarde bien ces deux lignes
$annule = "oui"; 
        if ($annule=='oui'){} 

Tu assigne une valeur à $annule que tu testes juste après, tu vas forcément tomber dans la partie true de ta condition donc la 1ere dans ce cas.

par Kimble » 15 sept. 2006, 19:26

Bon ! je ne vois pas...j'ai beau le tourner dans tous les sens :? et toujours la même chose. Un petit coup de pouce ? :oops:

par marvllt » 15 sept. 2006, 16:42

ben normal

Code : Tout sélectionner

//Affichage $annule = "oui"; if ($annule=='oui') { $lien="index.phpliste=millesime_ventes_annulees&millesime_choisi=".$millesime_choisi."&annule=".$annule.""; echo "Il y a ".$total." ventes et <a href=".$lien." target=\"_top\" title=\" Voir les ventes annulées de ".htmlentities(urldecode($commercial['commercial'])). " en ".$millesime['millesime']." ?\"> ".$nbre_annule." annulation(s) pour l'année ".$millesime['millesime'].""; } else {//cette condition n'est jamais pris en compte echo "Il y a ".$total." ventes et aucune annulation pour l'année ".$millesime['millesime'].""; }
tu définies $annule au début il ne peut qu'égal a oui donc c'est tj la premiere condition qui est rempli

Probléme avec un IF...

par Kimble » 15 sept. 2006, 16:23

Bonjour,
Le commercial fait des ventes, mais malheureusement certaines ventes
peuvent être annulées !
J'affiche une des 2 phrases suivantes suivant la condition remplie :
Par exemple :
Il y a 13 ventes et 1 annulation(s) pour l'année 2006
ou
Il y a 18 ventes et aucune annulation pour l'année 2005
Dans le 1er cas, j'affiche un lien pour avoir le détail de la vente qui
est annulée.
Le probléme est que seule la 1ére condition est prise en compte
et que le lien est affiché dans les 2 phrases !
Voici le code :
<?php
//requete qui affiche les ventes par commercial et du millesime choisi	   	 	  
$result = mysql_query("SELECT * from vente_v2 WHERE idmillesime='".$millesime_choisi."'
 AND idcommercial='".$com_choisi."' 
ORDER BY client LIMIT $start, $nb_results_p_page");

//Affichage du millesime		
$req_millesime=mysql_query("select * from vente_v2, millesime WHERE id_millesime LIKE '".$millesime_choisi."'");
$millesime=mysql_fetch_array($req_millesime);

//requete qui affiche le nbre total de ventes nettes du commercial (hors annulations)		
$text_query_total="select * from vente_v2 WHERE idcommercial='".$com_choisi."' 
AND idmillesime='".$millesime_choisi."' 
AND annule NOT LIKE '". $annule."'";	
$req_vente_total=mysql_query($text_query_total) or die (mysql_error());
//$total est le nombre de ventes		
$total=mysql_num_rows($req_vente_total);

//requete qui affiche le nbre total d'annulations du commercial 	
$text_nbre_annule="select * from vente_v2 WHERE idcommercial='".$com_choisi."' 
AND idmillesime='".$millesime_choisi."' 
AND annule='".$annule."'";	
$req_nbre_annule=mysql_query($text_nbre_annule) or die (mysql_error()); 
//$req_nbre_annule est le nb total d'annulation	
$nbre_annule=mysql_num_rows($req_nbre_annule);
	
//Affichage
		$annule = "oui";  
		if ($annule=='oui')
		{
		$lien="index.phpliste=millesime_ventes_annulees&millesime_choisi=".$millesime_choisi."&annule=".$annule."";					
		echo "Il y a ".$total."  ventes et <a href=".$lien." target=\"_top\" title=\"  Voir les ventes annulées de ".htmlentities(urldecode($commercial['commercial'])). " en ".$millesime['millesime']." ?\"> ".$nbre_annule." annulation(s) pour l'année ".$millesime['millesime']."";     
		}
		else
		{//[color=orange]cette condition n'est jamais pris en compte[/color]
		echo "Il y a ".$total."  ventes et aucune annulation pour l'année ".$millesime['millesime']."";        
		}	
		?>
Une idée ? merci.
Kimble