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 :

[Tableaux] Comment faire pour me passer de déclarer un tableau


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut [Tableaux] Comment faire pour me passer de déclarer un tableau
    Comment faire pour me passer de déclarer $tables_names dans lol_struct.php ?
    Dans un fichier "lol_struct.php" je éclare :
    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
     
    <CODE>
    ...
        $db_name = "lol";
        $db_prefix = $db_name +"_";
        $br = "<br />";
        $tables_names = array (
            "lol_livo", 
            "lol_mede", 
            "lol_meen", 
            "lol_memi", 
            "lol_mesr", 
            "lol_rest",
            "lol_user"
       &nbsp;);
            $tables_structs = array (
            "lol_livo" => array ("1"=>"livo_int", "2"=>"livo_date", "3"=>"livo_heure", "4"=>"livo_pseudo", "5"=>"livo_message"),
            "lol_mede" => array ("1"=>"orange", "2"=>"banane", "3"=>"pomme"),
            "lol_meen" => array ("1"=>"orange", "2"=>"banane", "3"=>"pomme"),
            "lol_memi" => array ("1"=>"orange", "2"=>"banane", "3"=>"pomme"),
            "lol_mesr" => array ("1"=>"orange", "2"=>"banane", "3"=>"pomme"),
            "lol_rest" => array ("1"=>"rest_int", "2"=>"rest_nom", "3"=>"rest_adresse_1", "4"=>"rest_adresse_2", "5"=>"rest_code_postal", "6"=>"rest_ville"),
            "lol_user" => array ("1"=>"user_int", "2"=>"user_user", "3"=>"user_pwd"),
       &nbsp;);
    ...
    </CODE>
    Dans un fichier "modif_tables.php" (qui va lire "lol_struct.php") j'ai :
    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
     
    <CODE>
    ...
    require("./includes/lol_struct.php");
    $nb_of_tables = 0;
    $nb_of_fields = 1;
    foreach ($tables_structs as $key_1 => $value_1) {
    $the_table = $tables_names[$nb_of_tables]; // nom de la table
    $nb_of_tables++;
    echo $the_table . $br;
    //echo "$key_1: $value_1" . $br;
    $the_array = $tables_structs[$the_table];
    $nb_of_fields = 1;
    foreach ($the_array as $key_2 => $value_2) {
    $the_field = $the_array[$nb_of_fields]; // nom du champ
    $nb_of_fields++;
    echo $the_field . $br;
    //echo "$key_2: $value_2" . $br;
    }
    }
    </CODE>
    Comment faire pour me passer de déclarer $tables_names dans lol_struct.php ?
    sachant qui le but final est de pouvoir avec un installer.php créer une
    base de données MySQL qui aura pour nom $db_name et dont toutes les tables
    sont préfixées par $db_prefix et dont le nom de chaque champ de chaque table
    est constitué de quatres lettres.

    Impossible de trouver la solution. Cela doit être pourtant simple mais je ne vois pas.

    Donc quelle instruction dois-je utiliser pour lire le contenu de la première valeur
    du tableau à deux dimensions $table_struct ?

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Je te conseille de revoir un peu (beaucoup ) l'utilisation de foreach.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tab = array("cle1" => "val1", "cle2" => "val2", "cle3" => "val3");
     
    foreach ($tab as $cle => $val)
    {
      echo "$cle : $val"; // affichera cle1 : val1 puis cle 2 : val2 etc.
    }
    donc quand tu itères avec foreach(), il vaut mieux que tu utilises $cle ou $val directement plutôt que $tab["machin"].

    Sinon tu peux regarder du côté de array_keys() qui te retourneras les clés d'un tableau. D'une manière générale la bibliothèque de fonction sur les tableaux et plutôt bien fournie
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  3. #3
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Tu fais un array_keys sur ton tableau, ça te retournera un tableaux avec les clé de ton premier tableau.


    EDIT: Zut trop tard
    deY!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par deY!
    Tu fais un array_keys sur ton tableau, ça te retournera un tableaux avec les clé de ton premier tableau.
    Je vous remercie tous les deux car je ne connaissait pas la fonction recherchée array_keys.

    Message bien reçu pour revoir ma leçon sur foreach...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] comment faire pour comparer 2 cellule d'une tableau
    Par fcolin dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/06/2009, 16h26
  2. Réponses: 2
    Dernier message: 09/08/2007, 11h08
  3. Réponses: 6
    Dernier message: 25/08/2006, 15h16
  4. Réponses: 24
    Dernier message: 24/05/2006, 19h19
  5. Réponses: 6
    Dernier message: 20/05/2006, 10h42

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