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 :

Création dynamique d'un tableau à 2 dimension


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut Création dynamique d'un tableau à 2 dimension
    Bonjour à tous,

    Je voudrais créer une fonction qui va me créer un tableau à deux dimensions de manière dynamique.

    J'ai une table "intervenant" dans laquelle se trouve les champs:
    id_intervenant, id_resa, prenom, nom, email

    Voici le code de ma fonction qui se trouve à l'intérieur de ma Class Connexion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function tableauresult($requete) {
    $res=$this->executer($requete);
    while ($arr = mysql_fetch_array($res)) {
    $intervenant = array(
    $arr[0] => array("id"=>$arr[0], "id_resa"=>$arr[1], "prenom"=>$arr[2], "nom"=>$arr[3], "email"=>$arr[4])
    }
    return $intervenant;
    }
    Lorsque j'appelle cette fontion il se passe rien.

    Si vous aviez une idée pour m'aider ca serait top

    En gros comment créer un tableau à deux dimensions dynamiquement avec comme valeurs le résultat d'une requete?

    Merci d'avance!

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Points : 40
    Points
    40
    Par défaut
    Salut,

    Ben déjà est-tu sûr de ta requête et du résultat qu'elle renvoie ?

    Pour vérifier fait un print_r($requete) et print_r($res)...

    Sinon, il me semble qu'on peut arriver directement à un tableau 2D a partir de la requete, non ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Salut Ludix,

    Oui je suis sur de ma requete, elle retourne bien toutes les lignes avec les bonnes valeurs. Quand je fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while ($arr = mysql_fetch_array($res)) {
    etc...
    Je retrouve bien mes valeurs, mais en fait je voudrais créer un tableau dynamiquement, pour m'éviter de refaire à chaque fois un mysql_fectch_array, comme ca je pourrais juste passer ma requete en parametre de ma fonction et j'aurais le résultat de la requete sous forme de tableau.

    Mais j'arrive pas...

    Si t'as une idée je suis preneur

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function tableauresult($requete) {
    $res=$this->executer($requete);
    while ($arr = mysql_fetch_array($res)) {
    Il y a des trucs pas clairs dans ici.
    Tu utilise $this->executer, ce qui suppose que tu serais dans un contexte Objet.
    Mais est-ce le cas ? J'ai l'impression que non.
    Faudrait en dire un peu plus.

    Php ne t'affiche t-il pas un message d'erreur ?
    L'affichage des erreurs est il activé d'ailleurs ?


    Ceci dit, et dans ton code, comment exploite tu cette fonction (ou méthode de classe) ?
    Mets y du code.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Salut Runcodephp

    Je suis dans un context Objet oui.

    Voici mon code:
    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
     
    class Connexion  {
        private
    	$Serveur     = '',
    	$Bdd         = '',
    	$Identifiant = '',
    	$Mdp         = '',
    etc...
     
    function executer($requete) {
    //$req=mysql_query($requete);
    return mysql_query($requete);
    }
     
    function tableauresult($requete) {
    $res=$this->executer($requete);
    while ($arr = mysql_fetch_array($res)) {
    $intervenant = array(
    $arr[0] => array("id"=>$arr[0], "id_resa"=>$arr[1], "prenom"=>$arr[2], "nom"=>$arr[3], "email"=>$arr[4])
    }
    return $intervenant;
    }
    Et dans ma page je fais cet appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $connection = new Connexion();
    $intervenant = "select * from intervenant";
    $resultat=$connection->tableauresult($intervenant);
    Si je fais le while($arr = Mysql_fetch) etc.. dans ma page ca marche, mais je voudrais créer ce tableau dans ma fonction pour pouvoir la réutiliser pour d'autres requetes et m'éviter de le refaire à chaque fois.

    Je sais pas si je suis clair et si j'ai donné toutes les infos?

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Essai de créer le tableau comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function tableauresult($requete) {
        $res=$this->executer($requete);
        while ($arr = mysql_fetch_array($res)) {
        $intervenant[] = array('id' => $arr['id'],
                               'id_resa' => $arr['id_resa'],
                               'prenom' => $arr['prenom'],
                               'nom' => $arr['nom'],
                               'email' => $arr[email]);
        }
        return $intervenant;
    }
    Avant le return, tu pourrais faire un print_r($intervenant) pour vérifier son contenu.

    L'inconvénient tout de même dans ce principe (ou concept), c'est que la méthode tableauresult() se réduit à récupérer les données d'une table, et non pas toutes les tables.
    Le gain est extrêmement minime, mais pourquoi pas.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Merci Runcode ca marche!!!

    Mais j'ai alors une question à te poser pour bien comprendre.
    Ma requete retourne 4 lignes avec chacune 5 valeurs.

    Dans ta construction du tableau tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ($arr = mysql_fetch_array($res)) {
        $intervenant[] = array('id' => $arr['id'],
                               'id_resa' => $arr['id_resa'],
                               'prenom' => $arr['prenom'],
                               'nom' => $arr['nom'],
                               'email' => $arr[email]);
        }
    Pourquoi ca crée un tableau multidirectionnel? Puisque la forme:
    $tableau[] = array('id' => '0',
    'id_resa' => '1',
    'prenom' => 'toto',
    'nom' => 'tata')
    est la forme d'un tableau simple?

    Pourquoi ca marche pas de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while ($arr = mysql_
    _array($res)) {
    $intervenant = array(
    $arr[0] => array("id"=>$arr['id'],
     "id_resa"=>$arr['id_resa'],
     "prenom"=>$arr['prenom],
     "nom"=>$arr['nom'],
     "email"=>$arr['email']);
    Je sais pas si ma question est claire?

    En tout cas merci ca fonctionne bien!

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Citation Envoyé par Tonii Voir le message
    Pourquoi ca marche pas de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while ($arr = mysql_
    _array($res)) {
    $intervenant = array(
    $arr[0] => array("id"=>$arr['id'],
     "id_resa"=>$arr['id_resa'],
     "prenom"=>$arr['prenom],
     "nom"=>$arr['nom'],
     "email"=>$arr['email']);
    Dans ton exemple, tu recrées un tableau à chaque tour de boucle en écrasant le précédent.

    Sinon si tu gardes les mêmes clés associatives que celles renvoyées par ta requete, tu peux simplifier ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $intervenant = array();
    while( $arr = mysql_fetch_assoc( $res ) ){
        $intervenant[] = $arr;
    }

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Merci petibidon, oui effectivement ca simplifie terriblement!

    Merci à tous!

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2014, 16h20
  2. Allocation dynamique d'un tableau à 2 dimension
    Par magiker dans le forum Débuter
    Réponses: 11
    Dernier message: 04/07/2009, 20h59
  3. [DOM] Création dynamique d'un tableau bug sous Firefox
    Par Ishizaki dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 16/02/2009, 14h57
  4. [Visual Web] Création dynamique d'un tableau
    Par QAYS dans le forum NetBeans
    Réponses: 1
    Dernier message: 20/06/2007, 15h47
  5. Réponses: 23
    Dernier message: 21/08/2003, 07h16

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