Tableau php.

Résolu
nicofree Messages postés 42 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 5 décembre 2015 - Modifié par jordane45 le 4/12/2015 à 18:10
nicofree Messages postés 42 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 5 décembre 2015 - 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.

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
4 déc. 2015 à 18:33
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



1
nicofree Messages postés 42 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 5 décembre 2015
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.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 5/12/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 = '';
}

0
nicofree Messages postés 42 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 5 décembre 2015 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
5 déc. 2015 à 16:44
OK merci beaucoup, bonne soirée à toi.
0
Rejoignez-nous