Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tableau associatif multidimensionnel

Sujet résolu
    26 janvier 2020 à 13:03:14

    Bonjour, 

    Je cale totalement, j'ai un premier tableau, j'aimerai que chaque élément du tableau contienne un nouveau tableau rempli grâce à une requête SQL.

    Donc chaque élément du premier tableau deviendrait la clé du second, je pense.

    Mais je n'arrive pas à mettre ce schéma en forme. 

    Si vous pensez que c'est possible, auriez vous des pistes ?

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      26 janvier 2020 à 13:21:50

      Salut,

      <?php
          $array1 = array();
          $ssArray1 = array();
      
          $array1['sous_array1'] = $ssArray1;
      //etc...



      • Partager sur Facebook
      • Partager sur Twitter
        26 janvier 2020 à 14:15:13

        Merci, 

        mais je n'arrive toujours pas à faire l'association des deux... Voilà mon code :

        $equipesEngagees = ['Amiens', 'Angers', 'Bordeaux', 'Brest', 'Dijon', 'Lille', 'Lyon', 'Marseille', 'Metz', 
                            'Monaco', 'Montpellier', 'Nantes', 'Nice', 'Nimes', 'Paris SG', 'Reims', 'Rennes', 
                            'St Etienne', 'Strasbourg', 'Toulouse'];
        
                        $serieButs = array();
        
                  for($i=0;$i<20;$i++){
                       $req = $bdd->query('SELECT (scoreDom + scoreExt) AS nbButs
                                           FROM franceD1champ 
                                           WHERE saison="2019/2020" 
                                           AND (equipeDom="'.$equipesEngagees[$i].'" OR equipeExt="'.$equipesEngagees[$i].'") ORDER BY id');
        
                            while ($donnees = $req->fetch()){ 
        
                                $equipesEngagees[$donnees['nbButs']] = $serieButs;
        
                                var_dump($serieButs);
                            }
                                     
                  }
                      
                                  $req->closeCursor();  
                                 

        J'obtiens des arrays vide, je suis paumé...

        • Partager sur Facebook
        • Partager sur Twitter
          26 janvier 2020 à 14:29:37

          déjà fais un var_dup de $donnees pour savoir si tu as un résultat de requête ;) à mon avis c'est pas sûr. Sinon tu peux afficher la requête jouée pour savoir ce que tu envois en base :D
          • Partager sur Facebook
          • Partager sur Twitter
            26 janvier 2020 à 15:03:15

            Le var_dump de $donnees me donne ca : 

            array (size=2)
              'nbButs' => string '3' (length=1)
              0 => string '3' (length=1)
            
            array (size=2)
              'nbButs' => string '1' (length=1)
              0 => string '1' (length=1)
            
            array (size=2)
              'nbButs' => string '3' (length=1)
              0 => string '3' (length=1)
            
            array (size=2)
              'nbButs' => string '2' (length=1)
              0 => string '2' (length=1)
            
            array (size=2)
              'nbButs' => string '4' (length=1)
              0 => string '4' (length=1)
            
            array (size=2)
              'nbButs' => string '3' (length=1)
              0 => string '3' (length=1)

            Cela renvoie bien le nombre de buts pour toutes les à chaque match mais je souhaiterai que ce soit classé par équipe dans un tableau.

            Dans ma table, j'ai cinq colonnes :

            | id | equipeDom | equipeExt | ScoreDom | ScoreExt |

            qui correspondent  à l'équipe à domicile, l’équipe à l'extérieur, les score à domicile et les score à l'extérieur. 

            • Partager sur Facebook
            • Partager sur Twitter
              26 janvier 2020 à 15:14:56

              tu sais que tu ajoutes un arry vide à chacun des tours de la boucle ???

              Et en plus ce ça pour vérifier tu affiches ce même array vide $serieButs

              revois ton algo, il est foireux ;)

              • Partager sur Facebook
              • Partager sur Twitter
                26 janvier 2020 à 15:20:16

                C'est bien ce que je disais dans mon premier message, je n'arrive pas à le mettre en forme.

                Je vais repartir à zéro.

                Merci pour ton aide 

                • Partager sur Facebook
                • Partager sur Twitter
                  26 janvier 2020 à 15:39:41

                  <?php
                  	$equipesEngagees = ['Amiens', 'Angers', 'Bordeaux', 'Brest', 'Dijon', 'Lille', 'Lyon', 'Marseille', 'Metz',
                  	'Monaco', 'Montpellier', 'Nantes', 'Nice', 'Nimes', 'Paris SG', 'Reims', 'Rennes',
                  	'St Etienne', 'Strasbourg', 'Toulouse'];
                  
                  	$serieButs = array();
                  
                  	$req = "SELECT (scoreDom + scoreExt) AS nbButs
                  			FROM franceD1champ
                  			WHERE saison="2019/2020"
                  			AND (equipeDom=:equipedom OR equipeExt=equipeext) ORDER BY id";
                  	$stmt = $bdd->prepare($req);
                  	for($i=0;$i<20;$i++){
                  		$stmt->bindvalue('equipeDom',$equipesEngagees[$i]);
                  		$stmt->bindvalue('equipeExt',$equipesEngagees[$i]);
                  		while ($donnees = $stmt->fetch()){
                  			$serieButs[] = $donnees['nbButs'];
                  		}
                  		var_dump($serieButs);
                  	}
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 janvier 2020 à 16:28:04

                    Je te remercie,

                    ça me donne un array vide, je n'ai rien en faisant un var_dump $donnees. 

                    Je vais étudier ton code, le positionnement de la boucle est plus logique, faut que je vois pourquoi je n'ai pas de résultat de requête.

                    En tout cas merci beaucoup, il me reste beaucoup à apprendre...

                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 janvier 2020 à 16:36:03

                      il manque l'execute aprs les bindvalues

                      <?php
                          $equipesEngagees = ['Amiens', 'Angers', 'Bordeaux', 'Brest', 'Dijon', 'Lille', 'Lyon', 'Marseille', 'Metz',
                          'Monaco', 'Montpellier', 'Nantes', 'Nice', 'Nimes', 'Paris SG', 'Reims', 'Rennes',
                          'St Etienne', 'Strasbourg', 'Toulouse'];
                       
                          $serieButs = array();
                       
                          $req = "SELECT (scoreDom + scoreExt) AS nbButs
                                  FROM franceD1champ
                                  WHERE saison="2019/2020"
                                  AND (equipeDom=:equipedom OR equipeExt=equipeext) ORDER BY id";
                          $stmt = $bdd->prepare($req);
                          for($i=0;$i<20;$i++){
                              $stmt->bindvalue('equipeDom',$equipesEngagees[$i]);
                              $stmt->bindvalue('equipeExt',$equipesEngagees[$i]);
                      $stmt->execute();
                              while ($donnees = $stmt->fetch()){
                                  $serieButs[] = $donnees['nbButs'];
                              }
                              var_dump($serieButs);
                          }



                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 janvier 2020 à 16:44:19

                        $stmt = $bdd->prepare(<<<'EOS'
                            SELECT (scoreDom + scoreExt)
                                FROM franceD1champ
                                WHERE saison="2019/2020"
                                    AND :equipe IN(equipeDom, equipeExt)
                                ORDER BY id
                        EOS
                        );
                        $stmt->bindParam(':equipe', $equipe);
                        $serieButs = [];
                        foreach ($equipesEngagees as $equipe) {
                            $stmt->execute();
                            $serieButs[$equipe] = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
                        }
                        var_dump($serieButs);

                        Tu n'as pas activé les erreurs PDO/SQL ? Il manque un `:`  devant equipeExt et la casse des marqueurs n'est pas bonne entre la requête et leurs binds (potentiellement celle des colonnes aussi) mais ça ne sert à rien de binder deux fois la même valeur. Après, je ne sais pas vraiment ce que tu veux obtenir.

                        Décidément, leur éditeur HTML, c'est une vraie bouze aussi ...

                        Et il y a probablement moyen de faire ça en une requête.

                        -
                        Edité par julp 26 janvier 2020 à 17:40:53

                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 janvier 2020 à 17:25:21

                          Merci Christouphe et Julp,

                          je vous remets mon code, j'ai fait des corrections, le résultat est presque ce qu'il me faut. J'ai un array avec chaque équipe à l'intérieur et pour chaque équipe, j'ai un array dans lequel se trouve le nb de but à chaque match.

                          Le dernier problême est que le nb de but correspond à la dernière boucle. Pour chaque équipe, j'ai le nombre de but de Tououse alors que j'aimerai avoir pour chaque équipe, son nombre de but.

                          Si vous avez une idée pour résoudre ca, ce serait sympa, je vous remercie.

                           $equipesEngagees = ['Amiens', 'Angers', 'Bordeaux', 'Brest', 'Dijon', 'Lille', 'Lyon', 'Marseille', 'Metz', 
                                              'Monaco', 'Montpellier', 'Nantes', 'Nice', 'Nimes', 'Paris SG', 'Reims', 'Rennes', 
                                              'St Etienne', 'Strasbourg', 'Toulouse'];
                          
                                         
                              $serieButs = array();
                           
                              $req = "SELECT (scoreDom + scoreExt) AS nbButs
                                      FROM franceD1champ
                                      WHERE saison='2019/2020'
                                      AND (equipeDom=:equipedom OR equipeExt=:equipeext) ORDER BY id";
                              $stmt = $bdd->prepare($req);
                                     
                              for($i=0;$i<20;$i++){
                                  $stmt->bindvalue('equipedom',$equipesEngagees[$i]);
                                  $stmt->bindvalue('equipeext',$equipesEngagees[$i]);
                          
                                  $stmt->execute();
                              }
                                  while ($donnees = $stmt->fetch()){
                                    for($i=0;$i<20;$i++){
                                      $serieButs[$equipesEngagees[$i]][] = $donnees['nbButs'];
                                    }
                                  }
                                  var_dump($serieButs);


                          Le var dump me donne ca : 

                          array (size=20)
                            'Amiens' => 
                              array (size=20)
                                0 => string '2' (length=1)
                                1 => string '1' (length=1)
                                2 => string '4' (length=1)
                                3 => string '2' (length=1)
                                4 => string '4' (length=1)
                                5 => string '1' (length=1)
                                6 => string '2' (length=1)
                                7 => string '4' (length=1)
                                8 => string '4' (length=1)
                                9 => string '3' (length=1)
                                10 => string '5' (length=1)
                                11 => string '5' (length=1)
                                12 => string '3' (length=1)
                                13 => string '2' (length=1)
                                14 => string '3' (length=1)
                                15 => string '3' (length=1)
                                16 => string '6' (length=1)
                                17 => string '1' (length=1)
                                18 => string '3' (length=1)
                                19 => string '7' (length=1)
                            'Angers' => 
                              array (size=20)
                                0 => string '2' (length=1)
                                1 => string '1' (length=1)
                                2 => string '4' (length=1)
                                3 => string '2' (length=1)
                                4 => string '4' (length=1)
                                5 => string '1' (length=1)
                                6 => string '2' (length=1)
                                7 => string '4' (length=1)
                                8 => string '4' (length=1)
                                9 => string '3' (length=1)
                                10 => string '5' (length=1)
                                11 => string '5' (length=1)
                                12 => string '3' (length=1)
                                13 => string '2' (length=1)
                                14 => string '3' (length=1)
                                15 => string '3' (length=1)
                                16 => string '6' (length=1)
                                17 => string '1' (length=1)
                                18 => string '3' (length=1)
                                19 => string '7' (length=1)
                            'Bordeaux' => 
                              array (size=20)
                                0 => string '2' (length=1)
                                1 => string '1' (length=1)
                                2 => string '4' (length=1)
                                3 => string '2' (length=1)
                                4 => string '4' (length=1)
                                5 => string '1' (length=1)
                                6 => string '2' (length=1)
                                7 => string '4' (length=1)
                                8 => string '4' (length=1)
                                9 => string '3' (length=1)
                                10 => string '5' (length=1)
                                11 => string '5' (length=1)
                                12 => string '3' (length=1)
                                13 => string '2' (length=1)
                                14 => string '3' (length=1)
                                15 => string '3' (length=1)
                                16 => string '6' (length=1)
                                17 => string '1' (length=1)
                                18 => string '3' (length=1)
                                19 => string '7' (length=1)



                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 janvier 2020 à 17:30:59

                            Ton imbrication de boucles est totalement faux : le while devrait être dans le (premier) for et le second for à virer.

                            Il est pas bien mon code ? :roll:

                            -
                            Edité par julp 26 janvier 2020 à 17:36:10

                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 janvier 2020 à 17:39:05

                              OK julp, merci, en faisant ton code, c'est ce qu'il me faut.

                              mais je pense que j'ai un array en trop.

                              Le var_dump donne ça  : 

                              $stmt = $bdd->prepare(<<<'EOS'
                                  SELECT (scoreDom + scoreExt)
                                      FROM franceD1champ
                                      WHERE saison="2019/2020"
                                          AND :equipe IN(equipeDom, equipeExt)
                                      ORDER BY id
                              EOS
                              );
                              $stmt->bindParam(':equipe', $equipe);
                              $serieButs = [];
                              foreach ($equipesEngagees as $equipe) {
                                  $stmt->execute();
                                  $serieButs[$equipe] = $stmt->fetchAll(PDO::FETCH_NUM);
                              }
                              var_dump($serieButs);
                              
                              array (size=20)
                                'Amiens' => 
                                  array (size=20)
                                    0 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    1 => 
                                      array (size=1)
                                        0 => string '1' (length=1)
                                    2 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    3 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                    4 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    5 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    6 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    7 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                    8 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    9 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                    10 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    11 => 
                                      array (size=1)
                                        0 => string '1' (length=1)
                                    12 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    13 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    14 => 
                                      array (size=1)
                                        0 => string '6' (length=1)
                                    15 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    16 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                    17 => 
                                      array (size=1)
                                        0 => string '5' (length=1)
                                    18 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    19 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                'Angers' => 
                                  array (size=20)
                                    0 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    1 => 
                                      array (size=1)
                                        0 => string '6' (length=1)
                                    2 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    3 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                    4 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    5 => 
                                      array (size=1)
                                        0 => string '5' (length=1)
                                    6 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                    7 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                    8 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    9 => 
                                      array (size=1)
                                        0 => string '1' (length=1)
                                    10 => 
                                      array (size=1)
                                        0 => string '0' (length=1)
                                    11 => 
                                      array (size=1)
                                        0 => string '1' (length=1)
                                    12 => 
                                      array (size=1)
                                        0 => string '0' (length=1)
                                    13 => 
                                      array (size=1)
                                        0 => string '1' (length=1)
                                    14 => 
                                      array (size=1)
                                        0 => string '4' (length=1)
                                    15 => 
                                      array (size=1)
                                        0 => string '2' (length=1)
                                    16 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    17 => 
                                      array (size=1)
                                        0 => string '0' (length=1)
                                    18 => 
                                      array (size=1)
                                        0 => string '3' (length=1)
                                    19 => 
                                      array (size=1)
                                        0 => string '2' (length=1)


                              Je vais étudier ton code également, ca raccourcie pas mal quand même ;)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 janvier 2020 à 17:41:52

                                Corrigé (code édité), j'avais oublié de vraiment prendre en compte le format de sortie du tableau

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 janvier 2020 à 17:58:52

                                  Merci beaucoup, c' est parfait, faut que j'étudie tout ca.

                                  Je comprend à peu près le code mais à quoi correspond <<<<'EOS' je ne trouve rien là dessus ? 

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    26 janvier 2020 à 18:09:48

                                    Ok, merci beaucoup, bonne soirée
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Tableau associatif multidimensionnel

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown