Problème fonction de tri PHP

Apâche -  
Apaachee Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
C'est la première fois que je post sur ce forum, soyez indulgent pour la présentation de mon problème ... =)

Voila je créé un petit site de e commerce ou les clients se log et à l'ouverture d'une session, 2 variables s'initialisent :

$_SESSION["panier"] = array();
$_SESSION["qtite"] = array();


La première variable enregistrent les No d'articles acheté et la 2e la quantité. Le problème est que si un "client" achète un objet, puis le réachète une deuxième fois, je dois trier mes tableaux...

Je procède donc en deux temps :

Je trie mes 2 tableaux de sorte que les NoArticle présent dans $_SESSION["panier"] soit triés :

array_multisort($_SESSION["panier"] , $_SESSION["qtite"]);


Puis je fais ma fonction de tri :

$a = array();
$b = array();
$c = array();
$d = array();

//On recopie les tableaux $_SESSION["panier"] et $_SESSION["qtite"] dans $c et $d
$i=0;
foreach($_SESSION["panier"] as $val){
	$c[$i]=$val;
	$d[$i]=$_SESSION["qtite"][$i];
	$i++;
}

echo $i;
$i--;
//$i contient la longueur des tableaux

$k = 0;
while($k != $i){
	$test = 0;
	//On concatene les 2 No d'articles identiques et on ajoute leur quantite
	if($c[$k] == $c[$k+1]){
		$a[$k] = $c[$k];
		$b[$k] = $c[$k] + $c[$k+1];
		$test = 1;
	}
	
	//Si on a concaténé, la longueur du tableau a diminuée de 1
	if ($test == 1){
		$i--;
		//On finit le remplissage des tableaux a et b
		for( $l = $k + 2 ; $l <= $i-1 ; $l++){
			$a[$l-1] = $c[$l];
			$b[$l-1] = $d[$l];
		}
	}
	else{
		$k++;
		//On copie $c et $d dans $a et $b
		$f = 0;
		foreach($c as $val){
			$a[$f] = $c[$f];
			$b[$f] = $d[$f];
		}
	}
	$c = array();
	$d = array();
	

	//Et on sauvegarde $a et $b dans $c et $d pour un nouveau triage
	$f=0;
	foreach($a as $val){
		$c[$f] = $val;
		$d[$f] = $b[$f];
	}
	
	//On réinitialise $a et $b
	$a = array();
	$b = array();*/
}
	
$_SESSION["panier"] = array();	
$_SESSION["qtite"] = array();

$i = 0;
foreach($c as $val){
	$_SESSION["panier"][$i] = $c[$i];
	$_SESSION["qtite"][$i] = $d[$i];
	$i++;
}



et donc cette dernière fonction ne marche pas... et impossible de trouver d'où ça vient...
Merci à tous ceux qui se pencheront sur mon problème =)
A voir également:

4 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Tu ne te casses pas un peu trop la tête ?
Pourquoi tu ne rechercherais pas simplement si ton No d'article est dans le premier tableau, et, si oui, quel est son index $i ?
Ensuite, il suffit de mettre à jour le deuxième tableau, non ?

Xavier
0
Apâche
 
Ah je n'avais pas pensé a faire un truc plus simple, je suis parti directement sur la fonction de tri ! Merci je vais me pencher la dessus ! Mais pour y avoir consacré un nombre conséquent de temps, j'aurais bien aimé savoir ce qui cloche avec ma fonction de tri :'(

Merci Reivax !
0
Apaachee Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   47
 
UP
0
Apaachee Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   47
 
Je m'autorépond à ma question, merci a Reivax pour son coup de main :

$a = array(); // Nouveaux objets triés
$b = array(); // Nouvelles quantités
$i=0;
foreach($_SESSION["panier"] as $val){
	$j = 0;
	$test = 1;
	foreach($a as $vala){
		if($val == $vala){ //NoArticle deja dans $a
			$ancienneQtite = $b[$j];
			$Qtiteajout = $_SESSION["qtite"][$i];
			$nvlleQtite = $ancienneQtite + $Qtiteajout;
			$b[$j] = $nvlleQtite;
			$test = 2;
		}
	$j++;
	}
	if($test==1){
		$a[] = $val;
		$b[] = $_SESSION["qtite"][$i];
	}
$i++;
}

$_SESSION["panier"] = array();	
$_SESSION["qtite"] = array();

$i = 0;
foreach($a as $val){
	$_SESSION["panier"][$i] = $a[$i];
	$_SESSION["qtite"][$i] = $b[$i];
	$i++;
	
	
}
0