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

PHP & Base de données Discussion :

Ordre des champs avec la fonction mysql_fetch_array [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut Ordre des champs avec la fonction mysql_fetch_array
    Bonsoir,

    je voudrais savoir quel est l'ordre des champs que l'on obtient avec la fonction "mysql_fetch_array". En effet, ils n'ont rien à voir avec l'ordre que l'on voit avec un "desc nom_table" et rien non plus avec l'ordre utilisé lors de la création des lignes (avec un "insert into nom_table"). Et beaucoup plus gênant, il y a un champ que j'écris avec un "insert into nom_table", et que je ne retrouve pas avec "mysql_fetch_array". Auriez-vous une explication ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu parles a la fois des champs et des lignes

    Les champs sont dans le meme ordre que dans la requete SELECT.
    Les lignes sont classés par la clause ORDER BY si elle est précisée, dans un ordre indeterminé sinon.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    OK, ça m'a donné une bonne idée car dans mon select, il n'y avait pas le champ que je voulais... mais quel serait l'ordre des champs en cas d'un "select * from nom_table" ?

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Nouvel question : comment récupérer l'identifiant de la ligne (il existe forcément vu que c'est la clé primaire) ? Faut-il faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from nom_table
    , et dans ce cas, l'ordre des champs avec "mysql_fetch_array" est-il celui que l'on obtient avec un desc ?

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Il n'est pas obligatoire qu'une clé primaire porte sur un champ "identifiant" (j'imagine que tu parles d'un champ type int + auto increment).
    Une clé primaire peut porter sur n'importe quoi, voir même plusieurs champs, bien que je ne sache pas si c'est vraiment conseillé.

    A priori lorsque tu executes une requete "select *..." les champs sont ordonnés comme ils ont été organisés dans la base de donnée.

    Accessoirement l'ordre des champs renvoyés par une requête n'a aucune importance lorsque tu utilises mysql_fetch_array() vu que cette fonction te restitue un tableau associatif. A moins de vouloir le traverser avec une boucle du style foreach, ce qui n'est pas la meilleure chose à faire.

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Ca peut ne pas porter sur un champ "identifiant", mais c'est une habitude que j'ai prise. Il est bien du type int et auto_increment.
    Je me suis douté que les champs étaient ordonnés comme avait été définie la base, et pour moi, c'était important, vu que j'ai passé la constante "MYSQL_NUM" à la fonction et que donc, ça me retourne un tableau indicé. Donc je n'ai plus de souci avec ça, par contre j'en ai un autre : j'avais développé un forum en php, et quand je l'affiche, si l'auteur a le même login que l'utilisateur connecté, je rajoute un lien qui donne la possibilité de modifier le message. Le problème, c'est que quand c'est le cas, j'écris une variable de session qui contient le texte, et comme je fais une boucle pour afficher toutes les lignes du forum, cette variable de session correspond toujours au dernier message écrit par cet utilisateur (comme l'ordre d'affichage est inversé, le dernier est le plus ancien). Comment résoudre ça pour donner la possibilité de modifier tous les messages dont on est l'auteur ?

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

Discussions similaires

  1. problème avec ordre des champs d’une requête
    Par Bonero dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/10/2012, 10h44
  2. Réponses: 3
    Dernier message: 23/10/2005, 22h06
  3. [débutant] Ordre des champs de saisie par la touche tab
    Par almisuifre dans le forum C++Builder
    Réponses: 10
    Dernier message: 03/03/2005, 19h45
  4. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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