Help calcul frais de port

Mammouth du PHP | 804 Messages

24 mai 2007, 12:03

Bonjour tout le monde

depuis ce matin je planche sur un problème et je ne sais vraiment pas pourquoi ca ne marche pas ?
c'est d'un simple pourtant mais rien à faire :(

je fais une requete qui me liste une commande

je dois faire un calcule pour savoir quel port est attribuer j'ai deux type de frais de port


ici je calcul le nombre de fois ou le port est attribué à un produit

Pourquoi :

Si j'ai un produit avec le port 1 c'est le port 4.10 qui est prit pour la commande
Si j'en est 2 en port 1 le port 1 passe à la valeur 5.30
si j'ai 0 produit avec le port 1 et un produit avec le port 2 c'est 6.80 qui est prix en compte
Si j'ai +de 1 produit en port 2 c'est le port 8.30 qui est prix en compte
Si j'ai 1 produit en port 2 et 1 ou + porduit en port 1 c'est le port 8.30 qui est prix en compte


//mise à 0 des ports
$p1=0; 
$p2=0; 

while($row = @mysql_fetch_array($mysql_result)) {

$_GET['produit'] = $row['i'];

// frais de port 1 ou 2 
$DB_port=$row['port'];

if ($DB_port=="1"){
    
$p1=$p1+1; 

}
else if($DB_port=="2"){

$p2=$p2+1; 

}

Ensuite je choisis quel port va être utiliser pour l'envoi de la commande
if (( $p1 ==1 )&&( $p2 == 0 )){

$_GET['p_total'] = 4.10;

}
				
if (($p1 > 1 )&&($p2 == 0 )){				

$_GET['p_total'] = 5.30;

}

// Condition sur le port 2 
				
if (($p2 == 1)&&($p1 == 0)){

$_GET['p_total'] = 6.80;


}
				

if (($p2 >= 1 )&&($p1 > 1)){	
			
$_GET['p_total'] = 8.30;

}
Dans mon test j'ai 2 produits chacun avec un port différent
je devrais donc avoir $p1 = 1 et $p2=2 hors j'ai $p1 = 0 et $p2 = 1
impossible de comprendre ou ca cloche

Eléphant du PHP | 281 Messages

24 mai 2007, 14:38

---
Modifié en dernier par Ouaibou le 07 juil. 2007, 11:05, modifié 1 fois.

Mammouth du PHP | 804 Messages

24 mai 2007, 17:37

j'ai déjà fait cette vérification

le port 1 est pas prit en compte et niveau BDD rien à signaler ! le Ik complet je ne sais pas ou peu bien venir le problème :(

dans mon essai je dois avoir :
$p1 = 1
$p2 = 1

hors j'ai

$p1 = 0
$p2 = 1

c'est au niveau des comptes que ca ne va pas :?

Mammouth du PHP | 804 Messages

24 mai 2007, 17:41

apparement il me prend uniquement en compte le dernier port qui sort ?

Eléphant du PHP | 281 Messages

24 mai 2007, 17:47

---
Modifié en dernier par Ouaibou le 07 juil. 2007, 11:05, modifié 1 fois.

Mammouth du PHP | 804 Messages

24 mai 2007, 17:49

je vais faire 2 essais en prenant un produit à la fois pour chaque port, je verais comme ca si les ports son juste.

Mammouth du PHP | 804 Messages

24 mai 2007, 19:18

merci pour ton aide Ouaibou j'ai fais une belle boulette sur mes conditions et mes opérateurs :oops:

Et par dessus le marché j'ai oublié que j'étais dans une boucle foreach ou le produit avait sa quantité en session :?

quand j'avais plusieurs produits je contabilisais le port pour un produit au lieu de le multiplier par la quantité de produit, une belle brochette de betises qui ne pouvaient que donner le résultat que j'avais obtenu



Par principe :

Code : Tout sélectionner

$cde c'est ma quantité au moment de la lecture d'un produit , il ce trouve dans mon foreach session

$port = $row['port'];

if ($port ==1){
$port1=$port1+1*$cde;
}

if ($port ==2){
$port2=$port2+1*$cde;
}


		if ($port1 ==1){ 
		$_GET['port_total']=4.10;
		}
		
		if ($port1 >=2){ 
		$_GET['port_total']=5.30;
		}

		if ($port2 == 1 && $port1 > 0){ 
		$_GET['port_total']=8.30;
		}
		
		if($port2 ==1 && !$port1 ){ 
		$_GET['port_total']=6.10;
		}
		
		if ($port2 >=2){ 
		$_GET['port_total']=8.30;
		}
si quelqu'un à plus simple et plus propre je suis preneur