IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Additionner les valeurs de certaines colonnes de deux tableaux


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Additionner les valeurs de certaines colonnes de deux tableaux
    Bonjour à tous,

    Soit un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array("prenom"=>"toto", "points"=>22);
    et un second :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array("prenom"=>"toto", "points"=>120);
    Comment additionner la colonne "points" pour obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array("prenom"=>"toto", "points"=>142);
    Merci de vos conseils.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    En itérant sur tes tableaux, tu n'as pas le choix.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $data = array(
    	array('a' => 1, 'b' => 2),
    	array('a' => 3, 'b' => 4),
    	array('a' => 5, 'b' => 6),
    );
     
    $results = array(
    	'a' => 0, 'b' => 0
    );
    foreach ($data as $row) {
    	$results ['a'] += $row['a'];
    	$results ['b'] += $row['b'];
    }
     
    var_dump( $results );

  3. #3
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour et merci de ta réponse. Depuis, mon projet a évolué, et du coup ma question n'est plus tout à fait la bonne, je me permets de la reformuler :

    Soit un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Array
    (
        [14] => Array
            (
                [0] => Array
                    (
                        [id_prod] => 268
                        [qte_a_cder] => 48
                    )
     
                [1] => Array
                    (
                        [id_prod] => 1238
                        [qte_a_cder] => 48
                    )
            )
    )
    La clé 14 représente un code fournisseur.
    Les sous tableaux de id de produits et des quantités.

    J'ai ensuite un second tableau, construit de la même manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Array
    (
        [14] => Array
            (
                [0] => Array
                    (
                        [id_prod] => 180
                        [qte_a_cder] => 12
                    )
     
                [1] => Array
                    (
                        [id_prod] => 1238
                        [qte_a_cder] => 36
                    )
           )
         [16] => Array
            (
                       [id_prod] => 698
                       [qte_a_cder] => 2
            )
    )
    Et je voudrais donc les réunir en un seul, en additionnant les quantités pour un même id_prod au sein d'une même fournisseur. Évidement, les id_prod sont uniques et toujours affectés au même fournisseur. Dans cet exemple, on devrait se retrouver avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Array
    (
        [14] => Array
            (
                [0] => Array
                    (
                        [id_prod] => 268
                        [qte_a_cder] => 48
                    )
     
                [1] => Array
                    (
                        [id_prod] => 1238
                        [qte_a_cder] => 84
                    )
     
                 [2] => Array
                    (
                        [id_prod] => 180
                        [qte_a_cder] => 12
                    )      
     
           )
     
          [16] => Array
                  (
                       [id_prod] => 698
                       [qte_a_cder] => 2
                  )
     
    )
    Les quantités du produit 1238, commun aux 2 tableaux se sont additionnées pour donner 48 +36 = 84. C'est jouable ? Merci de tes précieux conseils.

  4. #4
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Par défaut
    Pas mieux que la première fois, tu va devoir itérer tes tableaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    //soit tes 2 tableaux $cde 1 et $cde2
     
    //on boucle tout les fournisseur chez qui on doit commander en table 2
    foreach($cde2 as $fournisseur => $commande) {
    	//on boucle ttes les lignes de commandes pour ce fournisseur dans table 2
    	foreach($commande as $key => $ligneCde) {
    		//juste pour faire plus concis dans la suite
    		$idAjoute 	= $ligneCde['id_prod'];
    		$qteAjoute 	= $ligneCde['qte_a_cder'];
     
    		//on boucle ttes les commandes chez ledit fournisseur dans table 1
    		foreach($cde1[$fournisseur] as $clefCde => $dataCde) {
    			$trouve = false;
    			//on recherche si une ligne porte sur le même id produit
    			if($dataCde[id_prod] == $idAjoute) {
    				//si on le trouve on ajoute la qté
    				$cde1[$fournisseur][$clefCde]['qte_a_cder'] += $qteAjoute;
    				$trouve = true;
    			}
    			//si on a pas trouvé il faut ajouter une ligne
    			if(!$trouve) {
    				$cde1[$fournisseur][] = array('id_prod' => $idAjoute, 'qte_a_cder' => $qteAjoute);
    			}
    		}
    	}
    }

  5. #5
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Par défaut
    Je simplifierai les tableaux et les rassemblerai dans un seul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    $tableau1[14][238]=48;
    $tableau1[14][1238]=36;
     
    $tableau2[14][180]=12;
    $tableau2[14][1238]=36;
    $tableau2[16][698]=2;
     
     
    //on réunis les 2 tableaux;
    $tableauMerge[]=$tableau1;
    $tableauMerge[]=$tableau2;
     
     
    $tableauTotal=null;
     
    foreach($tableauMerge as $key => $value)
    {
    	foreach($tableauMerge[$key] as $key1 => $value1)
    	{
    		foreach($tableauMerge[$key][$key1] as $key2 => $value2)
    		{
    			if(!isset($tableauTotal[$key1][$key2]))
    			{
    				$tableauTotal[$key1][$key2]=0;
    			}
    			$tableauTotal[$key1][$key2]+=$value2;
    		}
    	}
    }
     
    echo "<hr><xmp>";print_r($tableauTotal);echo "</xmp>";
    ?>

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 22
    Par défaut addition les valeur d'une colonne
    bonsoir le forum ,
    je voulais s'additionner tous les champ de type a 50%,type 75% et type 150%.en plus chaque type se trouve dans une colonne .donc comment je peut additionner
    voila mon affichage
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     <a href="formulaireheure.php">Ajouter</a><br>
     <table border cellspacing="0" cellpadding="6">
        <thead>
          <th>Nom </th>
          <th>Date debut </th>
          <th>Date fin </th>
        	<th>Heure debut</th>
        	<th>Heure fin</th>
        	<th>Jour Ã* 50%</th>
            <th>Jour Ã* 75%</th>
            <th>Jour Ã* 150%</th>
        </thead>
        <tbody>
     <?php while($sa = mysql_fetch_array($res)) { ?>
        	<tr>
            <td><?php  echo $sa['nom'];?></td>
     
    <td><?php   echo date("d-m-20y",strtotime($sa['datedebut']));?></td>
    <td><?php  echo date("d-m-20y",strtotime($sa['datefin']));?></td>
     
        		<?php 
           $date1 =date_create($sa['datedebut']);
             $date2 = date_create($sa['datefin']);
             $HS=$calculer_HS($date1,$date2);
     ?> 
     <td>
       <?php
     echo $HS['Type50'];
     
    }
       ?>
     </td>
                <td>
    <?php 
    echo $HS['Type75'];
    }
     
    ?>
            </td>
                     <td>
             <?php 
     
             echo $HS['Type150'];
     
    }
     
    ?>
            </td>
     
        	</tr>
    <?php } ?>
    <?php
    ?>
     </tbody>
     </table>
     
           >

Discussions similaires

  1. [MySQL] Additionner les valeurs d'une colonne
    Par Denis Placé dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 23/03/2015, 07h55
  2. Réponses: 2
    Dernier message: 09/02/2015, 13h27
  3. Réponses: 2
    Dernier message: 10/11/2014, 12h17
  4. Additionner les valeurs de deux dropdowlist
    Par ecoinfo dans le forum ASP.NET
    Réponses: 6
    Dernier message: 22/02/2008, 08h05
  5. intervertir les valeurs dans une colonne d'une table
    Par hammou dans le forum Débuter
    Réponses: 2
    Dernier message: 26/01/2004, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo