Mysql_fetch pour un tableau multi dimmensionel

Résolu
Signaler
-
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
-
Hello,

On sait que :

mysql_fetch_assoc : Lit une ligne de résultat MySQL dans un tableau associatif
mysql_fetch_row : Retourne une ligne de résultat MySQL sous la forme d'un tableau
mysql_fetch_array : Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux

Mais est-il possible de retourner un résultat mysql_fetch dans un tableau multi dimensionnel ?

Actuellement je fait :

$data = array();
while ($row = mysql_fetch_assoc($recordset)) {
     $data[] = $row;
}


Y a t'il une autre méthode plus simple ?

Merci

Belle soirée,

A++

Fabien Schenkels (alias fabienfs)

10 réponses

Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Quel problème cela pose t-il au juste ?
mysql_fetch_* retourne la ligne courante, il est donc obligatoire de déplacer le pointeur pour parcourir les résultats.

Les fonctions mysql_* sont obsolètes, du devrais passer à mysqli, ou mieux, PDO.
D'ailleurs ce dernier te permet de parvenir très facilement à ton résultat avec la méthode fetchAll()

Cordialement,

Kohntark -
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Salut,
ça dépend ce que tu veux y mettre.
Hello,

Imaginons, j'ai une table membre qui contient id, prenom, nom, age et email.
J'aimerais avec un mysql_fetch sortir un tableau multi dimensionnel comme ceci :

Array
(
    [0] => Array
        (
            [id] => 1
            [prenom] => john
            [nom] => doe
            [age] => 25
            [email] => john@doe.com
        )
 
    [1] => Array
        (
            [id] => 2
            [prenom] => john
            [nom] => doe
            [age] => 25
            [email] => john@doe.com
        )
 
    [2] => Array
        (
            [id] => 3
            [prenom] => john
            [nom] => doe
            [age] => 25
            [email] => john@doe.com
        )
 
    [3] => Array
        (
            [id] => 4
            [prenom] => john
            [nom] => doe
            [age] => 25
            [email] => john@doe.com
        )
 
)


Comment faire ? Suis-je obligé d'utiliser ma première méthode ? Ou existe-t-il un mysql_fetch_??? qui peut me sortir le même résultat ?

Merci

A++
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Salut,

kohntark, tu viens de m'apprendre que les fonctions mysql sont obsolètes.
Bien que si une personne comme moi, actif dans le domaine du web, je ne l'apprend que mtn, c qu'elles fonctionneront encore quelques temps. D'ailleurs je l'espere, je viens de terminer un site en utilisant que c fonctions. En tout cas mtn, je vais prendre cela en considération pour mes sites futures.
Sinon pour fabienfs, comme dit kohntark, si tu commences un site mieux vaut aprrendre l'api DPO, mais sinon :
$tab = array()
while($data = mysql_fetch_array($result)){
    $sousTab array( 'id'> $data['id'],
                      'prenom' => $data['prenom'],
                     ect.................);
    $tab[] = $soustab;
}

Je pense que ça fonctionne comme ça sinon je pense qu'il existe une fonction array_push qui te permmettra d'arriver au résultat

Enjoy
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
$tab = array()
while($data = mysql_fetch_array($result)){
    $sousTab array( 'id'> $data['id'],
                      'prenom' => $data['prenom'],
                     ect.................);
    $tab[] = $soustab;
}

Ca revient au même que le code du premier message de Fabienfs, ... sauf que c'est plus lourd


Bien que si une personne comme moi, actif dans le domaine du web, je ne l'apprend que mtn, c qu'elles fonctionneront encore quelques temps. D'ailleurs je l'espere, je viens de terminer un site en utilisant que c fonctions.


Ca fait un bout de temps déjà que ces fonctions ne sont plus recommandées.
Sauf à programmer encore avec des ancêtres de PHP il faut les proscrire.
Sans doute fonctionneront elles encore quelques temps, il y a tellement de codes qui ont été développés avec elles. C'est un peu le même problème qu'avec les magic quotes, dur dur pour les développeurs de PHP de les supprimer. Mais à trop attendre on se retrouve avec des tonnes de scripts qui ne fonctionnent plus.
Et puis au delà de ça c'est tout de même dommage de se passer à côté de la puissance et des possibilités / flexibilité de mysqli ou PDO, qui sont, contrairement au premier, toujours en développement.

Cordialement,


Kohntark -
Hello,

Merci pour vos réponses. Si j'ai bien compris, avec mysql_* on est obligé de tout lister avec une while comme je l'ai fait.

Je vais cependant me pencher aussi sur PDO dont vous parlez, ça m'intéresse :-)

Merci à vous deux.

Belle soirée,

A++
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Il y a même un exemple dans la doc qui montre par ailleurs l'utilisation des requêtes préparées, très utiles dans de nombreux cas.


Cordialement,


Kohntark -
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Yop,
J'ai lu trop vite lu le commentaire sans vraiment regarder le code de fabienfs, effectivement, la boucle fetch_assoc fournit un tableau associatif, donc mon code est plus lourd ( je devais partir de mon boulot, du coup, j'ai trop vite fait ça , sorry fabienfs).


C'est un peu le même problème qu'avec les magic quotes, dur dur pour les développeurs de PHP de les supprimer.


Heureusemment, j'ai tout de suite travaillé avec les addslashes (en fait, contre mon gré, d'ailleurs si tu as quelque chose de mieux que ce long mot accompagné de son stripslashes, je suis preneur ^^)


Et puis au delà de ça c'est tout de même dommage de se passer à côté de la puissance et des possibilités / flexibilité de mysqli ou PDO, qui sont, contrairement au premier, toujours en développement.


Content d'aider dans un forum, pour finir, j'y apprend plein de choses

Cordialement
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
53
Ca fait un bout de temps déjà que ces fonctions ne sont plus recommandées.
Sauf à programmer encore avec des ancêtres de PHP il faut les proscrire.
Sans doute fonctionneront elles encore quelques temps, il y a tellement de codes qui ont été développés avec elles. C'est un peu le même problème qu'avec les magic quotes, dur dur pour les développeurs de PHP de les supprimer. Mais à trop attendre on se retrouve avec des tonnes de scripts qui ne fonctionnent plus.

J'ajouterai ou plutôt pour aller dans le même sens : que c'est surtout la faute au trop nombreux tutos sur le net qui ne traitent quasiment que de ces fonctions ou plutôt qui datent de l'époque où il n'y avait pas de PDO et comparses.
Après concernant les développeurs il y a surtout un manque de bonne volonté (flagrant chez certains) d'évolution.

Toute proportion gardé, l'objet c'est tellement plus beau et plus pratique




______________________________________________________________________
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
14
Salut,

Toute proportion gardé, l'objet c'est tellement plus beau et plus pratique

<troll>La programmation par objets est une idée exceptionnellement mauvaise qui ne pouvait naître qu'en Californie.</troll>