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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Réorganisation d'un tableau


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut Réorganisation d'un tableau
    Bonjours ,

    sa fais maintenant presque une semaine que j'essaye d'aboutir a un résultat sans succès.

    dans mon programme je récupéré un tableau de ce type la

    Pièce jointe 144890

    et je dois le mettre en forme pour aboutir a un résultat comme ceci
    Pièce jointe 144901

    auriez vous des solutions a me proposé ? :-/
    ou un script ? merciii

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour les Karl 8-9 et Karl 10-11 ne sont pas sur la meme ligne ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    no pas dans la même ligne , parce-qu’il a changé de Num.

    c'est pour dire aussi que le test doit ce faire sur les 3 paramètres num , conducteur et parution

    si les 3 paramètre sont répétés on écrit sur la même ligne a l'heure exact le NbEx

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    no pas dans la même ligne , parce-qu’il a changé de Num.
    ce n'était pas comme ça dans le premier message

    Parcourir ton resultat en le ré-arrangeant en $table[$conducteur][$parution][$heure].
    Ensuite il n'y a plus qu'a parcourir. Très Schématiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach $conducteur
                    foreach $parution
                        for $heure = 1; $heure < 13; $heure++
                                echo $parution[$heure]
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    je n'es pas bien compris le schéma, et comment je peux vraiment le ré-arranger.

    en même temps j'ai pensé a découper en plusieurs tableaux par rapport au array_unique() et les afficher après.
    serais-t il faisable de faire sa ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'avais oublié le "num" dans mon exemple.
    Tu parours ton resultat de requête ligne par ligne et tu construits un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau[$num][$constructeur][$parution][$heure] = $NbEx
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    dois-je faire une concaténation pour faire les tests ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une concatenation de quoi et pour faire quels tests ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    pour tester Si Num.Conducteur.Parution[$i] != Num.Conducteur.Parution[$i+1]

    j'ai commencé à élaborer un algorithme mais pas de résultat encore
    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
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
     
    include_once "dbconnexion.php";
     
    while ($datas = $reponse->fetch(PDO::FETCH_ASSOC)){
     
    $C[] = $datas['Num']."  ".$datas['Conducteur']."  ".$datas['Parution'];
    $Machine[] = $datas['Num'];
    $Conducteur[] = $datas['Conducteur'];   
    $Parution[] = $datas['Parution'];
    $Heure[] = $datas['Heure'];
    $Nbex[] = $datas['NbEx'];
    }
     
     
     
    $Tab = array(array());  // tableau a 2 dimensions !
    $Concat = array();
    foreach ($C as $i => $value){
    	$Concat[$i] = $C[$i];
        $Tab[$i][0] = $Machine[$i];
    	$Tab[$i][1] = $Conducteur[$i];
    	$Tab[$i][2] = $Parution[$i];
    	$Tab[$i][3] = $Nbex[$i];
    }
     
     
     
    foreach ($Concat as $key => $value){
     
    	if (!isset($Concat[$key + 1]) OR ($value != $Concat[$key - 1]))	{
    	 	echo "<br />".$Tab[$key][0]; //machines differents 	
    		echo " ".$Tab[$key][1] ; // conducteurs differents
    		echo " " .$Tab[$key][2] ; // parution differente
    	    echo " ".$Tab[$key][3];
    	}
    	else
    	{
    		echo " ".$Tab[$key][3];
     
    	}
     
    }
     
     
    ?>
     
    //Notice: Undefined offset: -1 in C:\Program Files (x86)\*********  on line 46
     
    //1 Samy aaa 180 340 600
    //1 Karl bbb 154
    //2 Karl bbb 800 1600 2540
    //3 Franc ccc 160 127
    //4 Franc ddd 123
     
    //si je fais  
    	if (!isset($Concat[$key + 1]) OR ($value != $Concat[$key + 1]))	{
    	 	echo "<br />".$Tab[$key][0]; //machines differents 	
    		echo " ".$Tab[$key][1] ; // conducteurs differents
    		echo " " .$Tab[$key][2] ; // parution differente
    	    echo " ".$Tab[$key][3];
    	}
    	else
    	{
    		echo " ".$Tab[$key][3];
     
    	}
     
    }
     
    //180 340
    //1 Samy aaa 600
    //1 Karl bbb 154 800 1600
    //2 Karl bbb 2540 160
    //3 Franc ccc 127
    //4 Franc ddd 123
    suis-je dans la bonne voix ?

  10. #10
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Tu peux déjà régler ce problème en groupant tes résultats dans ta requête SQL :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Num, Conducteur, Parution, Heure, sum(NbEx) AS sumNbEx
    FROM matable
    GROUP BY Num, Conducteur,Parution, Heure
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    j'ai fais appel a une procédure stocké qui renvoi a la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM @resultat 
    ORDRED BY
    Num , Heure , Parution, Conducteur
    je ne peux pas modifier la procédure stocké mais je peux faire une autre requête dans mon programme php ???

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise la méthode que je t'ai indiqué.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par sabotage Voir le message
    J'avais oublié le "num" dans mon exemple.
    Tu parours ton resultat de requête ligne par ligne et tu construits un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau[$num][$constructeur][$parution][$heure] = $NbEx
    je n'es pas compris cette méthode

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($data = $reponse->fetch(PDO::FETCH_ASSOC)){
      $num = $data['Num'];
      $conducteur = $data['Conducteur'];   
      $parution = $data['Parution'];
      $heure = $data['Heure'];
      $NbEx = $data['NbEx'];
     
      $tableau[$num][$conducteur][$parution][$heure] = $NbEx;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    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
     
    var_dump($tableau)
     
    //array(4) 
    { [1]=> array(2) 
      { ["Karl"]=> array(1) 
         { ["bbb"]=> array(1) { [8]=> string(3) "154" } } 
            ["Samy"]=> array(1)
                { ["aaa"]=> array(4) 
                   { [7]=> string(3) "180" [8]=> string(3) "340" [9]=> string(3) "600" [15]=> string(3) "141" } } }
     [2]=> array(1) 
          { ["Karl"]=> array(1) 
             { ["bbb"]=> array(3) { [9]=> string(3) "800" [10]=> string(4) "1600" [11]=> string(4) "2540" } } } 
     [3]=> array(1)
       { ["Franc"]=> array(1) 
          { ["ccc"]=> array(2)
               { [7]=> string(3) "160" [8]=> string(3) "127" } } }
     [4]=> array(1) 
        { ["Franc"]=> array(1) 
            { ["ddd"]=> array(1) { [7]=> string(3) "123" } } } }
    comment je pourrais afficher après les données brutes de ce tableau a 4 dimensions ???
    excusez moi je suis encore qu'un apprentie

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    avec des boucles foreach imbriquées comme indiqué au début.
    je suis encore qu'un apprentie
    Justement il faut experimenter, manipuler, decortiquer
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    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
    while ($data = $reponse->fetch(PDO::FETCH_ASSOC)){
      $num = $data['Num'];
      $conducteur = $data['Conducteur'];   
      $parution = $data['Parution'];
      $heure = $data['Heure'];
      $NbEx = $data['NbEx'];
     
    $tableau[$num][$conducteur][$parution][$heure] = $NbEx;
    }
     
    foreach ($num as $n){
    	foreach ($conducteur as $c) {
    		foreach ($parution as $p) {
    			for ($heure=0; $heure<24; $heure++) {
    				echo $p[$heure]; }}}}
    // Warning: Invalid argument supplied for foreach() in C:\******* on line 26
    je suis pommé

  18. #18
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton premier foreach c'est evidemment sur $tableau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    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
    foreach ($tableau as $t){
    foreach ($tableau[$num] as $n){
    	foreach ($tableau[$num][$conducteur] as $c) {
    		foreach ($tableau[$num][$conducteur][$parution] as $p) {
    			for ($heure=0; $heure<3; $heure++) {
    				echo $p[$heure]; }}}}}
     
    // 123 123 123 123
     
    foreach ($tableau as $t){
    foreach ($tableau[$num] as $n){
    	foreach ($tableau[$num][$conducteur] as $c) {
    		foreach ($tableau[$num][$conducteur][$parution] as $p) {
    			for ($heure=0; $heure<24; $heure++) {
    				echo $p[$heure]; }}}}}
     
    // 123 
    //Notice: Uninitialized string offset: 3 in C:\******* on line 30
    //Notice: Uninitialized string offset: 4 in C:\***** on line 30
    // ... etc jusqu'au 24
    je n'arrive pas a comprendre le fonctionnement

  20. #20
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 47
    Points
    47
    Par défaut
    je suis arrivé a faire un truc qui est de ce genre

    j'ai crée 2 tableaux $info $heure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $info[$datas['Conducteur'].'-'.$datas['Parution']] = Array("Num" => $datas['Num'], "Conducteur" => $datas['Conducteur'], "Parution" => $datas['Parution']);
     
    if (array_key_exists($datas['Heure'], $Heure)){
    array_push($Heure[$datas['Heure']], $datas['NbEx']);
    }
    else {
    	$Heure[$datas['Heure']] = Array($datas['NbEx']); 
         }
    }
    var_dump ($heure)
    j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    array(6) {
    [7]=> array(3) { [0]=> string(3) "180" [1]=> string(3) "160" [2]=> string(3) "123" } 
    [8]=> array(3) { [0]=> string(3) "340" [1]=> string(3) "154" [2]=> string(3) "127" } 
    [9]=> array(2) { [0]=> string(3) "600" [1]=> string(3) "800" } 
    [15]=> array(1) { [0]=> string(3) "141" } 
    [10]=> array(1) { [0]=> string(4) "1600" }
     [11]=> array(1) { [0]=> string(4) "2540" } }
    truc qui est assez sympa mais je me retrouve après sur 2 obstacles
    1 : les heures sont pas Incrémenté du plus petit au plus grand :/
    2 : la mise en forme sous un tableau ou je block un peu

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réorganiser un tableau sans rechercher les données ?
    Par beninsky dans le forum Débuter
    Réponses: 1
    Dernier message: 30/03/2010, 12h08
  2. Réorganiser un tableau
    Par jiojio dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 13/07/2009, 12h27
  3. réorganiser un tableau
    Par Mo_Poly dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/11/2007, 05h47
  4. [Tableaux] Réorganiser un tableau apres un merge()
    Par Death83 dans le forum Langage
    Réponses: 3
    Dernier message: 07/01/2006, 01h39
  5. [Tableaux] Réorganiser un tableau
    Par skea dans le forum Langage
    Réponses: 6
    Dernier message: 03/01/2006, 11h59

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