[RESOLU] Nom de la n ième colonne

Eléphanteau du PHP | 13 Messages

23 mars 2011, 16:16

Bonjour

Je suis à la recherche d'une requête sql qui pourra me donner le nom de la n-ième colonne d'une table donnée
Du style :
select column_name from Nom_de_ma_table where column_id='3'
=> Nom de la colonne qui est en 3ème position

J'ai beau chercher sur internet pas moyen de trouver !! Du coup je me demande si je suis claire dans ma requête :lol:

D'avance merciiiiiiiiii
Chloe

ViPHP
xTG
ViPHP | 7331 Messages

23 mars 2011, 16:20

Tu parles de la valeur de la case de la colonne 3 ?
Ou bien du nom de la colonne 3 ?
Si c'est le second cas on ne parle jamais de n-uplet puisque la structure de la table est statique, donc ta clause where est inutile.

Si c'est le premier cas et que tu cherches à récupérer le troisième n-uplet de ta table, pour MySQL :
SELECT `champ1`, `champ2` FROM `maTable` ORDER BY `cle_primaire` ASC LIMIT 2,1

Eléphanteau du PHP | 13 Messages

23 mars 2011, 16:29

Je cherche bien le nom de la colonne en fonction d'un chiffre

Je gère des réponses à des questionnaires soit des dizaines de tables différentes à un p'tit chouyat prêt
donc pas statiques en elles mêmes

ex : table 1 : a|b|c|d|
position 3 renvoie c

table 2 : a|aa|b|c|d|
position 3 renvoie b

C'est effectivement ces valeurs en gras que je souhaite récupérer
Est possible??

Merci

Eléphant du PHP | 275 Messages

23 mars 2011, 19:07

DESCRIBE <table>;
Mais sinon, c'est dans quel but ?

devlop78
Invité n'ayant pas de compte PHPfrance

23 mars 2011, 19:55

Le nom, le type, etc ... C'est galère. De mémoire, par exemple une colonne liste, pour avoir ses valeurs possibles, on doit parser la réponse de MySQL... Et moi j'ai voulu connaitre à quel nom de KEY correspondait le chiffre 2, j'avais qu'à me brosser ...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 mars 2011, 21:19

DESCRIBE <table>;
Mais sinon, c'est dans quel but ?
Question interessante, ca sent l'erreur de modelisation et donc la solution tordue pour arriver a ses fins :)

Pourrait-on aovir plus d'infos sur la structure de la table et sur ce aue tu essaies de faire ?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 mars 2011, 22:39

Je cherche bien le nom de la colonne en fonction d'un chiffre

Je gère des réponses à des questionnaires soit des dizaines de tables différentes à un p'tit chouyat prêt
donc pas statiques en elles mêmes

ex : table 1 : a|b|c|d|
position 3 renvoie c

table 2 : a|aa|b|c|d|
position 3 renvoie b

C'est effectivement ces valeurs en gras que je souhaite récupérer
Est possible??

Merci
Bonjour,

Bien sûr on peut accéder à la structure d'une table et lire les métadonnées et donc les informations décrivant ses colonnes entre autres. Du coup, on peut récupérer les noms des colonnes et les mémoriser dans un tableau selon leur ordre d'origine dans la table. De ce fait on peut effectivement récupérer le nom d'une colonne par son n° d'ordre.

Pour plus d'informations voir : SHOW COLUMNS

Voici un exemple php/mysql, qui interroge une table de 3 colonnes : maTable (a int, b int, c int) et affiche les noms des colonnes selon leur n° d'ordre.
<pre>
<?php
// se connecter à la base
mysql_connect("localhost","root");
mysql_select_db("test");

// créer une table d'exemple 
mysql_query("CREATE TABLE maTable (a int, b int, c int)"); // une table à 3 colonnes : a, b et c

// extraction des colonnes de la table "maTable"
$resultat = mysql_query("SHOW COLUMNS FROM maTable");
// lire le résultat
$champs = array(); // on stockera dans ce tableau les noms des colonnes de la table interrogée
while($resultat && $row = mysql_fetch_array($resultat))
{
	$champs[] = $row["Field"]; // le champ "Field" correspond au nom d'une colonne de la table interrogée
}
// en résultat on obtient donc le tableau $champs contenant les noms des colonnes de la table
echo "Liste des colonnes de maTable: \n";
print_r($champs);

// afficher par exemple la première colonne de la table
echo "Colonne n°1 : " , $champs[0], "\n"; // affiche "a"
// afficher par exemple la deuxième colonne de la table
echo "Colonne n°2 : " , $champs[1], "\n"; // affiche "b"
// afficher par exemple la troisième colonne de la table
echo "Colonne n°2 : " , $champs[2], "\n"; // affiche "c"
?>
</pre>
Et voici le résultat de ce programme après exécution:
Liste des colonnes de maTable:
Array
(
[0] => a
[1] => b
[2] => c
)
Colonne n°1 : a
Colonne n°2 : b
Colonne n°2 : c
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 13 Messages

24 mars 2011, 11:03

Yeeeeeeeees Merci tout le monde grâce à vos infos j'ai réussi à débloquer la situation !!
J'ai utilisé la réponse de sadeq pour me dépatouiller
Et oui j'avoue la modélisation est un tantinet tordue : le mon de la nieme colonne me permet de récupérer le type de réponse qui correspond à la valeur de cette colonne
Reprendre un programme existant qu'on n'a pas modélisé demande de faire face à un certain méli mélo !!

En tout cas merci !!
Chloe

Eléphant du PHP | 275 Messages

24 mars 2011, 12:34

Euh... si tu as la valeur, t'as probablement le nom de la colonne aussi non ? mysql_fetch_assoc ?