Sélectionner le nombre de champs d'une table !

K20
Eléphant du PHP | 303 Messages

05 juil. 2005, 19:09

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 ;)

Eléphant du PHP | 396 Messages

05 juil. 2005, 19:41

Compter le nb de champs d'une table ou le nb d'enregistrements dans une table?

K20
Eléphant du PHP | 303 Messages

05 juil. 2005, 19:42

Le nombre de champs ;)

Eléphant du PHP | 396 Messages

05 juil. 2005, 19:58

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2005, 08:47

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";
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 396 Messages

06 juil. 2005, 10:58

Oui, plus simple et plus logique Zeus :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2005, 11:04

l'expérience petit, l'expérience :langue:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juil. 2005, 11:22

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2005, 11:23

Hum hum :P

Et un bout de code en mémoire, un :lol:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 396 Messages

06 juil. 2005, 11:33

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? :langue:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juil. 2005, 11:34

ç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... :roll:

Eléphant du PHP | 396 Messages

06 juil. 2005, 11:55

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 :)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juil. 2005, 11:57

et pour faire le INSERT tu fais comment si tu connais pas le nombre de champs et le type de chacun ? :lol:

et puis là ça devient un peu compliqué pour récupérer un simple nombre... :roll:
Finalement mon code est pas si mal :)
ouais c'est vrai ;)

Eléphant du PHP | 396 Messages

06 juil. 2005, 11:58

et pour faire le INSERT tu fais comment si tu connais pas le nombre de champs et le type de chacun ? :lol:
Ben tu fais d'abord ma methode :lol:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2005, 12:05

C'est une boucle sans fin :lol:

Finalement, c'est ta solution Rei Itchido qui semble être la mieux
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer