Bonsoir,
Avec la fonction mysql_fetch_field utilisée sur une ressource MySQL, on peut connaître la liste des colonnes d'une table et notamment laquelle correspond à la clé primaire (propriété primary_key).
Or, si la requête d'origine comporte un tri (ORDER BY...), mysql_fetch_field n'a plus cette info.
Quel est le meilleur moyen de connaître le nom de la clé primaire d'une table à tous les coups, quelle que soit la requête ? Je sais qu'on peut faire une requête "SHOW COLUMNS FROM lenomdelatable" et tester la valeur de la colonne PRI mais c'est pas terrible de multiplier les requêtes...
EDIT : en fait, je vais développer mon problème parce que je crois que je pars sur une mauvaise analyse.
J'ai deux tables qui sont en relation l'une avec l'autre. Je veux classer les résultats d'une requête sur ces deux tables en fonction de leur relation, qui est basée sur la clé primaire de la première. Pour être plus clair, j'ai ça :
TABLE a
ida (clé primaire)
... (autres colonnes)
TABLE b
idb (clé primaire)
ida (relation avec la clé de a)
... (autres colonnes)
Ma requête sera alors "SELECT * FROM a,b WHERE a.ida=b.ida"
Je trie alors le résultat pour classer les infos entre elles en me basant sur le nom des clés primaires que j'obtiens via mysql_fetch_field.
Sauf que si je rajoute un ORDER BY à ma requête ça ne marche plus (plus de clés primaires) et si j'ai des noms de clés identiques entre plusieurs tables (A : id, B : id et ida, requête "SELECT * FROM a,b WHERE a.id=b.ida"), je ne peux plus me baser sur le nom des clés des tables pour trier mes données.
Il faudrait donc que je puisse classer mes données en fonction des relations obtenues suite à la requête SQL. J'imagine que c'est possible vu que les résultats dans PHPMyAdmin donnent des colonnes spéciales (entourées en orange pour celles qui font partie des clauses WHERE). Mais je ne sais pas trop vers quelles fonctions mysql_* chercher.