Mysql_fetch pour un tableau multi dimmensionel [Résolu]

- - Dernière réponse : TychoBrahe
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Dernière intervention
5 juin 2013
- 18 août 2011 à 11:40
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)
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
22
3
Merci
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 -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
160
Date d'inscription
mardi 2 janvier 2007
Dernière intervention
7 mai 2012
0
Merci
Salut,
ça dépend ce que tu veux y mettre.
Commenter la réponse de dvwyns
0
Merci
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++
Commenter la réponse de Utilisateur anonyme
Messages postés
160
Date d'inscription
mardi 2 janvier 2007
Dernière intervention
7 mai 2012
0
Merci
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
Commenter la réponse de dvwyns
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
22
0
Merci
$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 -
Commenter la réponse de kohntark
0
Merci
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++
Commenter la réponse de Utilisateur anonyme
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
22
0
Merci
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 -
Commenter la réponse de kohntark
Messages postés
160
Date d'inscription
mardi 2 janvier 2007
Dernière intervention
7 mai 2012
0
Merci
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
Commenter la réponse de dvwyns
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Dernière intervention
23 mars 2012
1
0
Merci
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




______________________________________________________________________
Commenter la réponse de phpAnonyme
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Dernière intervention
5 juin 2013
13
0
Merci
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>
Commenter la réponse de TychoBrahe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.