Tableau multidimensionnelle php

Tableau multidimensionnelle php - PHP - Programmation

Marsh Posté le 10-05-2010 à 18:39:24    

bonjour,
je débute dans la programmation de class en php et  j'ai un soucis pour la création de tableaux multidimensionnelles en php.En fait je veux contruire des tableaux de données avec leur clés primaires : j'ai du laissé mon code avec des données en "dure" :
  FOR($j=0;$j<$nb_colonnes;$j++)  {
                 $INF_LIGNE[$i][$tab_colonnes[$j]] = $p_TAB_RESULT[$i][$tab_colonnes[$j]];
      switch ($nb_param) {
      case 1:    $INF[$tab_key_param[0]['PARAM0']][$tab_colonnes[$j]]=$p_TAB_RESULT[$i][$tab_colonnes[$j]];
      break;
      case 2:    $INF[$tab_key_param[0]['PARAM0']][$tab_key_param[1]['PARAM1']][$tab_colonnes[$j]]=$p_TAB_RESULT[$i]lonnes[$j]];
           break;
      case 3:    $INF[$tab_key_param[0]['PARAM0']][$tab_key_param[1]['PARAM1']][$tab_key_param[2]['PARAM2']][$tab_colonnes[$j]]=$p_TAB_RESULT[$i][$tab_colonnes[$j]];
     break;
        ...      }
     }//FIN COLONNES

 
J'ai essayé de faire une fonction :   function encapsuleKey($tab_key_param[$i]['PARAM'.$i],$tableau)
   {  
    $tab=null;
     return $tab[$i_key]=$tableau;    
   }

 
pour résoudre le problème et enlever la partie case et switch mais y a quelque chose qui m'échappe car je n'ai pas toutes les données ...  cela ne fonctionne pas correctement ...
puis-je avoir un avis sur ces fonctions et ma façon d'utiliser ces tableaux ?  
 
merci d'avance.


---------------
popouec
Reply

Marsh Posté le 10-05-2010 à 18:39:24   

Reply

Marsh Posté le 11-05-2010 à 09:52:22    

1) j'ai rien compris à ton charabia, merci de t'exprimer dans un français intelligible,
2) merci d'utiliser les balises [code] quand tu postes du code et pas utiliser une couleur aussi peu lisible (ça explose les yeux!)
3) ta fonction encapsuleKey() est franchement magique!  
le prototype d'une fonction n'acceptes que des noms de variables, toi, t'y mets des valeurs
$tab=null;   <- ça sert à rien vu que $tab n'existe pas de toute manière
$i_key <- pas déclaré


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 12-05-2010 à 17:05:44    

bonjour,
 
Désolée si je me suis mal exprimée, je vais mieux expliquer le problème sur ma table à plusieurs clés :
 
Je veux tout simplement organiser les données d'un table dans un tableau  :
 
 exemple  : $TAB['key0']['key1']['key2']['key...n']['nom_colonne'] = $valeurColonne
 
comme le nombre "n" est en fonction de la table j'ai du coder :
 
   switch (n) :
               case 1: $TAB['key0']['nom_colonne'] = $valeurColonne
              case 2: $TAB['key0']['key1']['nom_colonne'] = $valeurColonne
              case 3: $TAB['key0']['key1']['key2']['nom_colonne'] = $valeurColonne
 
Il est claire que si n = 4 je dois rajouter dans le code :
 
                      case 4: $TAB['key0']['key1']['key2']['key3']['nom_colonne'] = $valeurColonne
         
et aini de suite ...  
 
pour l'instant j'ai 6 clés dans une des tables :
 
  case 6: $TAB['key0']['key1']['key2']['key3']['key4']['key5']['nom_colonne'] = $valeurColonne
 
Il est claire que c'est lourd comme code !
 
c'est pour cela que je voudrais qu'on m'explique comment je peux écrire  une fonction récurcive pour remplacer cela  :
   
      ['key0']['key1']['key2']['key3']['key4']['key5']...['keyn']
 
 
 
merci.
 
(j'espère que c'est un peu plus claire).

Reply

Marsh Posté le 16-05-2010 à 14:28:00    

Pourquoi ne pas passer par de l'objet en créant une classe pour gérer ça ?
je pense que se sera plus simple et surtout plus propre ;)
 
on peut voir la structure de ta table ?


Message édité par stef_dobermann le 16-05-2010 à 14:29:35

---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 16-05-2010 à 21:26:06    

En fait cette application doit être utilisée pour n'importe quelle table de ma base de données.
J'ai déjà commencé à écrire une class qui me permet de prendre n'importe quelle table pour afficher les données .
Mais j'essaie de trouver une méthode (récurssive) pour gérer les clés.
voici un exemple d'une de mes tables :
 
CREATE TABLE `db_p_p_formulaire` (
  `ID_PROJET` int(4) NOT NULL,
  `ID_PAGE` int(10) NOT NULL,
  `ID_FORMULAIRE` int(5) NOT NULL,
  `ID_TYPE_AFF` int(5) default NULL,
  `TYPE_trait` int(1) NOT NULL,
  `trait_nb_aff` int(2) NOT NULL,
  `htm_name` varchar(50) collate utf8_bin NOT NULL,
  `db_methode` varchar(4) collate utf8_bin NOT NULL,
  `db_action` varchar(500) collate utf8_bin NOT NULL,
  `b_javascript` tinyint(1) NOT NULL,
  `J_function_nom` varchar(30) collate utf8_bin default NULL,
  `db_table` varchar(50) collate utf8_bin default NULL,
  PRIMARY KEY  (`ID_PROJET`,`ID_PAGE`,`ID_FORMULAIRE`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
 
Ici j'ai une clé primaire avec trois éléments : (`ID_PROJET`,`ID_PAGE`,`ID_FORMULAIRE`)

Reply

Marsh Posté le 17-05-2010 à 10:19:11    

Tu pourrais nous dire ce que tu veux faire exactement, en fait, par ce que ton tableau à je sais pas combien de clés (et en plus, ce nombre semble pouvoir changer d'une ligne à l'autre de ton tableau) me paraît bizarre :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 17-05-2010 à 14:28:23    

voila c'est ça, je ne savais pas comment le formuler sans froisser ;)


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 17-05-2010 à 17:36:25    

popouec, là, tu nous as exprimé une solution technique et non un besoin. Je pense qu'il vaudrait mieux que tu nous exprimes le besoin initial, comme ça, on pourra te proposer une bonne solution technique. Parce que là, je pense que tu nous induits en erreur et donc, on va pouvoir te proposer que qq chose de bancal...
 
C'est comme si tu nous disais : j'ai un gros fichier excel et je veux écrire une macro pour manipuler les données + une petite IHM. En fait, dans ce cas, le besoin est inital est "j'ai des données que j'ai besoin de manipuler/filtrer via une IHM". Le fichier excel + macro est une solution technique mais une solution bien meilleure serait de passer par une base de données genre mysql et une ihm web (par ex). ;) Avec le ficheir excel, ça va être galère, alors qu'avec une BD + SQL, ça va être facile.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 24-05-2010 à 00:15:10    

plus de nouvelles => bonne nouvelles ?


---------------
Tout à commencé par un rêve...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed