Page 1 sur 2
Sélectionner le nombre de champs d'une table !
Posté : 05 juil. 2005, 19:09
par K20
Bonjour tout le monde !
Voilà, ma question est simple : comment compter et sélectionner le nombre de champs présents dans une table ?
Merci d'avance

Posté : 05 juil. 2005, 19:41
par Rei Itchido
Compter le nb de champs d'une table ou le nb d'enregistrements dans une table?
Posté : 05 juil. 2005, 19:42
par K20
Le nombre de champs

Posté : 05 juil. 2005, 19:58
par Rei Itchido
Je sais pas si y a pas une façon plus simple de faire ça, mais j'avais fais ça :
$result = mysql_query("SHOW COLUMNS FROM maTable");
$tableau = array();
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$tableau[] = $row['Field'];
}
}
count($tableau); > nb de champs de la table maTable
Posté : 06 juil. 2005, 08:47
par zeus
Je dirais bieun truc comme ca :
Quand tu fait un SELECT *, tu sélectionnes tout les champs et quand tu fait un mysql_fetch_array, tu créé un tableau dont le nombre de cases est le nombre de champs donc il ne te plus qu'a compter le nombre de cases du tableau
//La condition ne doit retourner qu'un ligne => soucis d'optimisation
$str_requete = "SELECT * FROM ma_table WHERE id=1"
$o_result = mysql_query($str_requete);
$a_result = mysql_fetch_array($o_result);
$nb_champ = count($a_result);
echo "Il y a ".$nb_champ." champs dans la table ma_table";
Posté : 06 juil. 2005, 10:58
par Rei Itchido
Oui, plus simple et plus logique Zeus

Posté : 06 juil. 2005, 11:04
par zeus
l'expérience petit, l'expérience

Posté : 06 juil. 2005, 11:22
par ouckileou
Je dirais bieun truc comme ca :
Quand tu fait un SELECT *, tu sélectionnes tout les champs et quand tu fait un mysql_fetch_array, tu créé un tableau dont le nombre de cases est le nombre de champs donc il ne te plus qu'a compter le nombre de cases du tableau
//La condition ne doit retourner qu'un ligne => soucis d'optimisation
$str_requete = "SELECT * FROM ma_table WHERE id=1"
$o_result = mysql_query($str_requete);
$a_result = mysql_fetch_array($o_result);
$nb_champ = count($a_result);
echo "Il y a ".$nb_champ." champs dans la table ma_table";
et comme ça :
//La condition ne doit retourner qu'un ligne => soucis d'optimisation
$str_requete = "SELECT * FROM ma_table WHERE id=1"
$o_result = mysql_query($str_requete);
$nb_champ = mysql_num_fields($o_result);
echo "Il y a ".$nb_champ." champs dans la table ma_table";
http://fr3.php.net/manual/fr/function.m ... fields.php
Posté : 06 juil. 2005, 11:23
par zeus
Hum hum
Et un bout de code en mémoire, un

Posté : 06 juil. 2005, 11:33
par Rei Itchido
et comme ça :
//La condition ne doit retourner qu'un ligne => soucis d'optimisation
$str_requete = "SELECT * FROM ma_table WHERE id=1"
$o_result = mysql_query($str_requete);
$nb_champ = mysql_num_fields($o_result);
echo "Il y a ".$nb_champ." champs dans la table ma_table";
Et si id=1 n'existe pas?

Posté : 06 juil. 2005, 11:34
par ouckileou
ça c'était le code de zeus !
=> tu vires le WHERE et tu remplaces par un LIMIT 0,1
mais c'est vrai qu'il faut que la table contiennent au moins une ligne avec ce système du coup...

Posté : 06 juil. 2005, 11:55
par Rei Itchido
A la limite on peut faire un INSERT, on compte puis on fait un DELETE WHERE id=".mysql_insert_id()."
Finalement mon code est pas si mal

Posté : 06 juil. 2005, 11:57
par ouckileou
et pour faire le INSERT tu fais comment si tu connais pas le nombre de champs et le type de chacun ?
et puis là ça devient un peu compliqué pour récupérer un simple nombre...
Finalement mon code est pas si mal
ouais c'est vrai

Posté : 06 juil. 2005, 11:58
par Rei Itchido
et pour faire le INSERT tu fais comment si tu connais pas le nombre de champs et le type de chacun ?
Ben tu fais d'abord ma methode

Posté : 06 juil. 2005, 12:05
par zeus
C'est une boucle sans fin
Finalement, c'est ta solution
Rei Itchido qui semble être la mieux