boucle sur tableau

jeanmed
Invité n'ayant pas de compte PHPfrance

30 mars 2007, 13:36

bonjour,

Je me permets de vous demander de l aide car j ai du mal à finaliser un petit script. En faite il s agit d'un systeme de sauvegarde de commande via une petit interface d achat. Je recupere un tableau "$comloacal" avec des prix et un nuùmero de commande et une quantité le but et d afficher une liste de commande puis la commande. J'ai créé une boucle for sur mon tableau tous es ok. Sauf je voudrais afficer les commande par numero vous allez me dire c simple non dansl exemple de mon script je voudrais afficher :
Commande 45 total = 4x 12
Commande 34 total = 3x 34
Commande 44 total = (4x42)+(5x2)+(4x32))+(3x10)


Mon script n est vraiment pas top meme naz merci de votre aide


Merci de votre aide
 
$comloacal[]=array("num" => 45, "nb" => 4, "pa" => 12);
$comloacal[]=array("num" => 34, "nb" => 3, "pa" => 34);
$comloacal[]=array("num" => 44, "nb" => 4, "pa" => 42);
$comloacal[]=array("num" => 44, "nb" => 5, "pa" => 52);
$comloacal[]=array("num" => 44, "nb" => 4, "pa" => 32);
$comloacal[]=array("num" => 44, "nb" => 3, "pa" => 10);
$comloacal[]=array("num" => 44, "nb" => 3, "pa" => 10);



for ($i=0; $i <= count($comloacal); $i++)
{
$commandeN=$comloacal[$i]['num'];
if($comloacal[$i-1]['num']==$comloacal[$i]['num'])
{

$prixtotal=$comloacal[$i]['nb']*$comloacal[$i-1]['pa'];
print("opperation = ".$comloacal[$i]['nb']." x ".$comloacal[$i-1]['pa']."sous total" .$prixtotal );

$varnom=$comloacal[$i]['num'];

}

else
{print("b ".$comloacal[$i-1]['num']." n'et pas egal à A ".$comloacal[$i]['num'].".<br>");



}

Eléphant du PHP | 170 Messages

30 mars 2007, 17:53

 
$comloacal[]=array("num" => 45, "nb" => 4, "pa" => 12);
$comloacal[]=array("num" => 34, "nb" => 3, "pa" => 34);
$comloacal[]=array("num" => 44, "nb" => 4, "pa" => 42);
$comloacal[]=array("num" => 44, "nb" => 5, "pa" => 52);
$comloacal[]=array("num" => 44, "nb" => 4, "pa" => 32);
$comloacal[]=array("num" => 44, "nb" => 3, "pa" => 10);
$comloacal[]=array("num" => 44, "nb" => 3, "pa" => 10);
Si ceci représente un caddie ou tout autre système de commande( ce dont je suis quasi certain) je peux t'assurer que ton système est mal conçu.

Dans un système de caddie simple et efficace (ou de devis ou de facture...) on ne doit trouver que l'id de l'article et sa quantité, rien d'autre.

Exemple :
<?php
$caddie=array();
$caddie['num_article']=quantité;
?>
De plus, on ne doit pas trouver les mêmes références ????
Comment peux-tu avoir des articles ayant le même numéro (44) qui n'ont pas le même prix ????
C'est totalement illogique, ingérable, comment fais-tu la différence ????

Bref, il me semble que tu as un défaut de concept dans ton projet.
Pour finir, sur un tableau de ce type, l'utilisation d'un foreach est bien plus efficace, car fait pour ça.

Tiens voilà en gros l'idée d'un caddie :
Votre panier tout simplement !
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Mammouth du PHP | 19672 Messages

30 mars 2007, 18:23

Et s'il s'agit bien d'un caddie, il y a un lien en haut du forum "Débuter en PHP" vers ceci : basique et détaillé pour apprendre les bases essentielles.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 170 Messages

30 mars 2007, 20:42

Et s'il s'agit bien d'un caddie, il y a un lien en haut du forum "Débuter en PHP" vers ceci : basique et détaillé pour apprendre les bases essentielles.
J'y suis allé, j'ai suivi le lien et franchment je ne sais pas quoi dire !
J'ai des doutes quand je lis ça :
<?php
$_SESSION['panier']['id_article'] = array();
$_SESSION['panier']['qte'] = array();
$_SESSION['panier']['taille'] = array();
$_SESSION['panier']['prix'] = array(); 
?>
Un array pour les id, un array pour les quantités, un array pour les tailles, un array pour...
Donc en gros, quand on a besoin de toucher une valeur, il faut passer par 3 ou 4 arrays ????
Bin mon vieux !

Et ma déduction trouve sa vérité en lisant ça :
<?php
array_push($panier_tmp['id_article'],$_SESSION['panier']['id_article'][$i]);
                array_push($panier_tmp['qte'],$_SESSION['panier']['qte'][$i]);
                array_push($panier_tmp['taille'],$_SESSION['panier']['taille'][$i]);
                array_push($panier_tmp['prix'],$_SESSION['panier']['prix'][$i]); 
?>
Franchement je ne suis pas certain que c'est ça une méthode simple de gestion de caddie.

Je préfères de loin ma méthode sur le principe : $caddie['id_article']='quantité';
<?php
$_SESSION['caddie']['id_article1']='3';
$_SESSION['caddie']['id_article18']='1';
$_SESSION['caddie']['id_article462']='12'; 
?>
Plus simple, tu meurs ! :wink:
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

30 mars 2007, 21:23

Modération :
Merci de rester dans le sujet. =;
Surtout quand on ne sait pas de quoi on parle, Expreg

Le monsieur veut faire un enregistrement des commandes passées, pas un caddie.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 170 Messages

30 mars 2007, 23:47

Modération :
Merci de rester dans le sujet. =;
Surtout quand on ne sait pas de quoi on parle, Expreg

Le monsieur veut faire un enregistrement des commandes passées, pas un caddie.
Plutôt que de me dire que je ne sais pas de quoi je parle, pourquoi n'as-tu pas mis à profit ton intervention afin de lui apporter la solution.

- pourquoi n'as-tu pas dit au monsieur que c'était pas bien de faire un count dans le for.
- pourquoi n'as-tu pas dit au monsieur que ce serait mieux qu'il utilise une fonction vraiment adaptée et optimisée au parcours des array()
Je crois qu'elle s'appele foreach()

- pourquoi n'as-tu pas dit au monsieur que son if($comloacal[$i-1]['num']==$comloacal[$i]['num']) était plus que bizarre dans la gestion de son array()
Cette ligne ne devrait même pas exister car si l'array était correctement monté au départ, il n'y aurait aucun risque de doublon.

Alors, tu m'excuseras, et bien que ne sachant pas de quoi je parles, je me permet, à la vue de sa portion de code, de faire un rapprochement avec un caddie.
En me basant uniquement sur ce constat, je dis que son array est bancal.
Il ne tient qu'à lui de nous dire comment il assemble son truc, d'où proviennent ses données et fournir quelques compléments d'infos utiles au suivi de son problème.

Mais comme je ne sais pas de quoi je parles, tu dois forcément, expérience de modératrice oblige, avoir les réponses que je n'ai pas.

Je n'ai rien contre la modération, quand elle est utile, mais là, franchement... me la jouer sur l'air des gendarmettes dans une intervention qui n'apporte rien... ça m'énerve !

EDIT :
Tiens allez... qu'il nous expliques le relationnel dans cette partie de son array()

Code : Tout sélectionner

$comloacal[]=array("num" => 44, "nb" => 4, "pa" => 42); $comloacal[]=array("num" => 44, "nb" => 5, "pa" => 52); $comloacal[]=array("num" => 44, "nb" => 4, "pa" => 32); $comloacal[]=array("num" => 44, "nb" => 3, "pa" => 10); $comloacal[]=array("num" => 44, "nb" => 3, "pa" => 10);
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Mammouth du PHP | 19672 Messages

31 mars 2007, 12:11

En ce qui concerne le tuto que j'ai indiqué : tu trouves (expreg) que mon système est compliqué, mais il ne s'agit pas d'un code prêt à l'emploi. Le but premier de ce tuto est de faire toucher du doigt à un débutant différents aspects qu'il faut prendre en compte lorsqu'on construit ce genre d'application. C'est un tuto destiné à l'apprentissage de principe, pas un cours de PHP. En reprenant les principes généraux, ça pourrais aussi bien s'appliquer à de l'ASP, ou du Java.

J'ajoute enfin qu'avant publication de ce tuto, je l'avais soumis à plusieurs ViPhP ici et j'ai pu affiner certains détails grace à l'apport d'observations de plusieurs. Tu n'étais pas membre à ce moment là et encore moins ViPhP, tu n'as donc pas pu participer. Néanmoins, tes remarques auraient tendance à signifier que plusieurs des membres réguliers ici ne savent pas trop programmer, ce qui est un peu agaçant.

Je ne mets pas spécialement en doute tes compétences et ton souhait de participer activement sur PHPFrance est fort louable, mais sois aimable de ne pas bruler les étapes. Tu peux parfaitement avoir ta place parmi nous, mais ça se gagne et pas seulement avec un savoir technique.

Le sujet est clos et il serait bon de revenir au sujet original et de savoir maintenant si jeanmed a une piste de solution satisfaisante les éléments de réponses apportés ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 170 Messages

01 avr. 2007, 09:42

En ce qui concerne le tuto que j'ai indiqué : tu trouves (expreg) que mon système est compliqué, mais il ne s'agit pas d'un code prêt à l'emploi. Le but premier de ce tuto est de faire toucher du doigt à un débutant différents aspects qu'il faut prendre en compte lorsqu'on construit ce genre d'application. C'est un tuto destiné à l'apprentissage de principe, pas un cours de PHP. En reprenant les principes généraux, ça pourrais aussi bien s'appliquer à de l'ASP, ou du Java.

J'ajoute enfin qu'avant publication de ce tuto, je l'avais soumis à plusieurs ViPhP ici et j'ai pu affiner certains détails grace à l'apport d'observations de plusieurs. Tu n'étais pas membre à ce moment là et encore moins ViPhP, tu n'as donc pas pu participer. Néanmoins, tes remarques auraient tendance à signifier que plusieurs des membres réguliers ici ne savent pas trop programmer, ce qui est un peu agaçant.

Je ne mets pas spécialement en doute tes compétences et ton souhait de participer activement sur PHPFrance est fort louable, mais sois aimable de ne pas bruler les étapes. Tu peux parfaitement avoir ta place parmi nous, mais ça se gagne et pas seulement avec un savoir technique.

Le sujet est clos et il serait bon de revenir au sujet original et de savoir maintenant si jeanmed a une piste de solution satisfaisante les éléments de réponses apportés ?
MEA-CULPA !

Je te présente toutes mes excuses.
Loin de moi l'idée de te prendre pour un idiot. Mon intention n'était pas de critiquer pour critiquer ou de critiquer dans le seul but de faire des vagues.
J'ai simplement trouvé que cette approche est plutôt compliquée pour un débutant.

C'est vrai aussi qu'avec ma manière d'aller à l'essentiel immédiatement, sans prendre de raccourcis ou de gants, ça le fait pas toujours très bien.
Pour ça aussi, je te présente des excuses.

Pour te montrer ma bonne foi, je suis occupé à traiter un sujet identique avec une approche différente, on en reparlera plus tard si tu veux.

Je suis navré de ce dérapage involontaire et de mes intentions mal perçues.
C'est vrai qu'en me relisant, je te comprends.

Sorry, je ferais attention la prochaine fois d'élaborer une réponse plus détaillée afin de signifier correctement le ton et l'intention.
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends