Tableaux multidimensionnel et compter les items de même type

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 : Tableaux multidimensionnel et compter les items de même type

par ouckileou » 04 juil. 2006, 22:37

Ben tu fais tonarray_count_values() et sur le tableau que tu récupères tu passes each() ce qui te renvoie 2 variables : nom et quantité

Ou tu peux faire simplement une boucle foreach :
echo 'Dans votre panier :<br />';
foreach($tabQuantites as $nomArticle => $qte) {
   echo $nomArticle.' : '.$qte.' exemplaire(s)<br />';
}

par ascodas » 04 juil. 2006, 22:18

Ok merci pour le condeil et le lien, par contre je vois pas en quoi each va m'avancer je veux la somme des quantité mais pas afficher l'artiche chaque fois qu'il dans une ligne de tableau.

Ce que j'arrive a faire avec ma première fonction, mais en spécifiant les produits que je veux compter :

Voila l'exemple de ce que voudrais obtenir sans rien spécifier en entrée :

Image

PS : Je débute ;)

Re: Tableaux multidimensionnel et compter les items de même

par ouckileou » 04 juil. 2006, 21:06

par contre j'aimerais récupérer le nom de l'id article dans une variable et la quantité dans une autre pour pouvoir le présenter correctement.
Il existe beaucoup de fonctions de manipulation de tableaux, quand tu veux faire un truc, prend l'habitude d'aller voir la liste et de regarder s'il n'y en a pas une qui fait ce que tu veux ou qui pourrait participer :
http://fr.php.net/manual/fr/ref.array.php

En l'occurence, each() semble convenir

par ascodas » 04 juil. 2006, 20:23

aie désolé j'ai posté en croyant être loggué :oops:

Re: Tableaux multidimensionnel et compter les items de même

par Invité » 04 juil. 2006, 20:22

Mais ce que je voudrais est une fonction qui me compte tout les produits qui ont le même nom sans que je le spécifie en entré (je ne suis pas censé savoir ce qu'il y a dans le panier) et qui accessoirement calcule le prix total par article et le total des totals.
Est-ce que array_count_values() ne serait pas une bonne base de départ ?
Ca semble en effet un tres bon point de départ car le dump donne un truc du style :
Array ( [Sebadoh] => 3 [Dinosaur] => 4 )
par contre j'aimerais récupérer le nom de l'id article dans une variable et la quantité dans une autre pour pouvoir le présenter correctement.

Merci.

par Invité » 04 juil. 2006, 20:06

salut,
tout les produits qui ont le même nom
le même id_article ?

Pour compter les articles en plusieurs exemplaires, voici une méthode simple : en parcourant le tableau $_SESSION['panier']['id_article'], tu peuples un autre tableau $a, de la manière suivante :
$a = array();
foreach ($_SESSION['panier']['id_article'] as $id) {
  if (isset($a[$id])) $a[$id]++;
  else $a[$id] = 1;
}
Merci a vous deux.

- Pour la première solution j'ai procédé en construisant une fonction :
function compter()
{
$a = array();
foreach ($_SESSION['panier']['id_article'] as $id) {
if (isset($a[$id])) $a[$id]++;
else $a[$id] = 1;
}
return $id." : ".$a[$id];
}

et dans ma page ;
echo compter();
Alors ca marche mais un article est affiché à la fois, alors que je voudrais un tableau récapitulatif de tous les articles présents dans le panier avec leur quantité en temps réel.

Mais peut-être je m'y prend mal ...

Pour être plus explicite quand j'ajoute un exemplaire de Sebadoh, ta fonction me dit bien Sebadoh : 1, mais ensuite si je rajoute un article Dinosaur la ligne précédente est substituée par Dinosaur : 1 et ainsi de suite, alors que je les voudrais l'une sous l'autre ...

Merci

Re: Tableaux multidimensionnel et compter les items de même

par ouckileou » 04 juil. 2006, 12:01

Mais ce que je voudrais est une fonction qui me compte tout les produits qui ont le même nom sans que je le spécifie en entré (je ne suis pas censé savoir ce qu'il y a dans le panier) et qui accessoirement calcule le prix total par article et le total des totals.
Est-ce que array_count_values() ne serait pas une bonne base de départ ?

par goeb » 04 juil. 2006, 11:44

salut,
tout les produits qui ont le même nom
le même id_article ?

Pour compter les articles en plusieurs exemplaires, voici une méthode simple : en parcourant le tableau $_SESSION['panier']['id_article'], tu peuples un autre tableau $a, de la manière suivante :
$a = array();
foreach ($_SESSION['panier']['id_article'] as $id) {
  if (isset($a[$id])) $a[$id]++;
  else $a[$id] = 1;
}

Tableaux multidimensionnel et compter les items de même type

par ascodas » 04 juil. 2006, 11:00

Salut,

Je suis en train de faire un panier et je voudrais faire tableau récapitulatif de ce qu'il y a dans le panier, j'arrive à faire une fonction qui compte le produit que je lui passe en paramètre :
function compter_prd($article)
{	
	$prd_panier=0;
	$nb_articles = count($_SESSION['panier']['id_article']);
	for($i=0;$i<$nb_articles;$i++)
	{
	if($_SESSION['panier']['id_article'][$i] == $article)
		{
		$prd_panier=$prd_panier+1;
		$montant += $_SESSION['panier']['qte'][$i] * $_SESSION['panier']['prix'][$i];
		}
	}

echo "<tr><td>".$article."</td><td>".$prd_panier."</td><td>".$montant."</td></tr>";
}
Mais ce que je voudrais est une fonction qui me compte tout les produits qui ont le même nom sans que je le spécifie en entré (je ne suis pas censé savoir ce qu'il y a dans le panier) et qui accessoirement calcule le prix total par article et le total des totals.

Voici l'architecture de mon tableau et un dump avec deux articles dedans :
$_SESSION['panier'] = array();

$_SESSION['panier']['id_article'] = array();
$_SESSION['panier']['qte'] = array();
$_SESSION['panier']['prix'] = array();



Array ( [id_article] => Array ( [0] => Sebadoh [1] => Dinosaur ) [qte] => Array ( [0] => 1 [1] => 1 ) [prix] => Array ( [0] => 10 [1] => 15 ) )

Merci.