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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Sélectionner le nombre de champs d'une table !

par K20 » 06 juil. 2005, 19:39

Oups, j'suis boulet j'avais pas vu que c'était pas un result ...
De toute façon, je ferais pas ce que je voulais car je vois pas comment faire pour gérer les champs dans mes requêtes ...

Problème résolu ;)

par ouckileou » 06 juil. 2005, 19:36

normal, regarde ce que contient la variable $requete que tu utilises dans mysql_field_name, et ce que tu devrais utiliser :
string mysql_field_name ( resource result, int field_index )

par K20 » 06 juil. 2005, 19:13

Heu ... Désolé, mais en fait mon problème est pas résolu ... J'arrive pas a afficher le nom de mes champs ...

Voici le code que j'ai fait :
<?
// Nombre de champs
$requete = "SELECT * FROM `disques` LIMIT 0,1";
$o_result = mysql_query($requete);
$nb_champ = mysql_num_fields($o_result);
// Affichage noms champs
$i = 0;
while ($i < $nb_champ) {
		$nom = mysql_field_name($requete,$i);
		echo $nom.'<br />';
$i++;
} 
?>
Voici ce qu'il me renvoie : http://demonstory.free.fr/disque/admin/champs.php :(

par K20 » 06 juil. 2005, 18:35

en même temps qui a besoin de connaitre le nombre de champs d'une table hein hein hein ? :lol:
L'auteur de ce post, c'est à dire moi :lol:

EDIT : ne tenez pas compte du reste du message ... j'ai trouvé la solution grace à vous ;)
j'utiliserais la fonction : mysql_field_name() ;)
SUJET RESOLU, merci à tous ;)

(Sinon, est-ce possible de récupérer le nom de chacun des champs de ma tble (c'est ça ma principale question) ??

C'est pour afficher un formulaire pour enregistrer des disques avec plusieurs infos (titre, vitesse, album, auteur ...) et la personne qui désire le script m'a demandé s'il était possible de rajouter des champs plus tard sans toucher au code php ... Donc j'ai fait une page qui permet d'ajouter ou supprimer des champs, mais faut aussi que la page qui permet d'ajouter des infos et la page des résultats de la recherche des disques s'adapte en fonction des champs présents dans la table ...

(je sais pas si je suis très clair :oops: )

Voilà, merci d'avance ;))

par zeus » 06 juil. 2005, 12:17

L'experience petit, l'experience :mrgreen:
Bien joué, c'est de bonne guerre :lol:

[MODE a_part]

Code : Tout sélectionner

DELETE FROM membre WHERE login LIKE "Rei Itchido"
:evil:
[/MODE]
:langue

par ouckileou » 06 juil. 2005, 12:13

en même temps qui a besoin de connaitre le nombre de champs d'une table hein hein hein ? :lol:

par Rei Itchido » 06 juil. 2005, 12:08

L'experience petit, l'experience :mrgreen:

par zeus » 06 juil. 2005, 12:05

C'est une boucle sans fin :lol:

Finalement, c'est ta solution Rei Itchido qui semble être la mieux

par Rei Itchido » 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:

par ouckileou » 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 ;)

par Rei Itchido » 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 :)

par ouckileou » 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:

par Rei Itchido » 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:

par zeus » 06 juil. 2005, 11:23

Hum hum :P

Et un bout de code en mémoire, un :lol:

par ouckileou » 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