Tableau php. [Résolu]

nicofree 42 Messages postés mardi 23 mars 2004Date d'inscription 5 décembre 2015 Dernière intervention - 4 déc. 2015 à 17:53 - Dernière réponse : nicofree 42 Messages postés mardi 23 mars 2004Date d'inscription 5 décembre 2015 Dernière intervention
- 5 déc. 2015 à 16:44
Bonjour à tous,

Je galère avec un tableau php.

Je travaille sur un ERP, et je dois ajouter les montants des écotaxes en fin de facture. Comme chaque article à des taxes différentes, je génère un tableau de ce type :

Array
(
    [2] => Array
        (
            [code] => Petit appareil
            [title] => Cotisation de recyclage Ecotrel.
            [price] => 0.068
            [qty] => 1
            [IDitem] => 4321
        )

    [3] => Array
        (
            [code] => Piles
            [title] => Cotisation de recyclage Ecobatterien.
            [price] => 0.06
            [qty] => 2
            [IDitem] => 4321
        )

    [4] => Array
        (
            [code] => Appareil moyen
            [title] => Cotisation de recyclage Ecotrel.
            [price] => 0.088
            [qty] => 1
            [IDitem] => 3547
        )

    [5] => Array
        (
            [code] => Piles
            [title] => Cotisation de recyclage Ecobatterien.
            [price] => 0.06
            [qty] => 2
            [IDitem] => 3547
        )

)

Maintenant, je voudrais un affichage de ce type


Cotisation de recyclage Ecotrel.
Petit appareil - 1 X 0.068 €
Appareil moyen - 1 X 0.088 €

Cotisation de recyclage Ecobatterien.
Piles - 4 X 0.06 €



Est-ce que quelqu'un aurait une idée pour moi ?

Merci d'avance.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

4 réponses

Répondre au sujet
jordane45 19324 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 décembre 2017 Dernière intervention - 4 déc. 2015 à 18:33
+1
Utile
3
Bonjour,

Comme ceci par exemple ? :

<?php
// activation de l'affichage des erreurs PHP
error_reporting(E_ALL);

$tonArray=Array
  (
    "2" => Array
        (
            "code" => "Petit appareil"
            ,"title" => "Cotisation de recyclage Ecotrel."
            ,"price" => "0.068"
            ,"qty" => "1"
            ,"IDitem" => "4321"
        )

    ,"3" => Array
        (
            "code" => "Piles"
            ,"title" => "Cotisation de recyclage Ecobatterien."
            ,"price" => "0.06"
            ,"qty" => "2"
            ,"IDitem" => "4321"
        )

    ,"4" => Array
        (
            "code" => "Appareil moyen"
            ,"title" => "Cotisation de recyclage Ecotrel."
            ,"price" => "0.088"
            ,"qty" => "1"
            ,"IDitem" => "3547"
        )

    ,"5" => Array
        (
            "code" => "Piles"
            ,"title" => "Cotisation de recyclage Ecobatterien."
            ,"price" => "0.06"
            ,"qty" => "2"
            ,"IDitem" => "3547"
        )
  );


	//Je remet en forme l'array de façon à classer par TITRE et par CODE
$new_array=array();
foreach($tonArray as $R){
 $code= isset($R['code'])?$R['code']:'';
 $title = isset($R['title'])?$R['title']:'';
 $price= isset($R['price'])?$R['price']:'';
 $qty= isset($R['qty'])?$R['qty']:'';
 $IDitem= isset($R['IDitem'])?$R['IDitem']:'';

 $new_array[$title][$code][] = array(
                                 'price' =>$price
                                 ,'qty' =>$qty
                                 ,'IDitem' =>$IDitem
                                 );
  

}

// Je génère l'affichage désiré
$retour = "";
foreach($new_array as $Title=>$codes){
	$retour .= "<pre><b>$Title</b>";
	foreach($codes as $code => $items){
		if(!is_array($items)){
      $price= isset($items['price'])?$items['price']:'';
      $qty= isset($items['qty'])?$items['qty']:'';
		}else{
			 $qty = 0;
			 foreach($items as $sousItems){
	        $price = isset($sousItems['price'])?$sousItems['price']:'';
          $qty += isset($sousItems['qty'])?$sousItems['qty']:'';	 
			 }
		}
  $retour .="<br>$code : $qty x $price euros";
 }
  $retour .="</pre>";
	
}
//affichage :
echo $retour;


?>



Ce qui donne :

Cotisation de recyclage Ecotrel.
Petit appareil : 1 x 0.068 euros
Appareil moyen : 1 x 0.088 euros

Cotisation de recyclage Ecobatterien.
Piles : 4 x 0.06 euros



Cette réponse vous a-t-elle aidé ?  
nicofree 42 Messages postés mardi 23 mars 2004Date d'inscription 5 décembre 2015 Dernière intervention - 5 déc. 2015 à 11:41
Bonjour Jordane et un grand merci. Ce code fonctionne parfaitement.

Je me doutais bien qu'il fallait passer par un tableau intermédiaire.

J'ai juste un peu de mal à comprendre cette syntaxe :

<?php
$var= isset($table['index'])?$table['index']:'';
?>


Si ce n'est pas abusé de ton temps, tu peux m'en dire plus ?
Et encore merci.
jordane45 19324 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 décembre 2017 Dernière intervention - 5 déc. 2015 à 14:35
ISSET : Sert à s'assurer que la variable existe

$var =  condition ? valeur si vrai : valeur si faux ;

C'est ce qu'on appel l'écriture ternaire. Une autre façon de faire un if.
ça remplace :

if( isset($table['index']) ) {
  $var = $table['index'];
}else{
 $var = '';
}

nicofree 42 Messages postés mardi 23 mars 2004Date d'inscription 5 décembre 2015 Dernière intervention > jordane45 19324 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 décembre 2017 Dernière intervention - 5 déc. 2015 à 16:44
OK merci beaucoup, bonne soirée à toi.
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.