Récuperer les valeurs d'un champ "ENUM"

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 : Récuperer les valeurs d'un champ "ENUM"

par resistenz76 » 07 sept. 2005, 10:51

j'ai trouvé sur le forum justen en-dessous (je vous assure j'avais (mal) cherché !!!)
// on envoie la requete 
$sql = "SELECT DISTINCT disciplines FROM sports"; 

// on envoie la requete 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque enregistrements 
while($data = mysql_fetch_array($req)) 
{
// on affiche les informations de l'enregistrements en cours 
echo '<table cellspacing="1">
<tr><td><font size="2"><a href="http://crij.phpnet.org/ub/disciplines.php?disciplines='.$data['disciplines'].'">'.$data['disciplines'].'</a></font><br>
</td></tr></table>';
    } 
// on ferme la connexion &agrave; mysql 
mysql_close(); 
Merci de nous répondre aussi gentiment.
Bonne continuation

par Invité » 07 sept. 2005, 08:24

merci pour ton aide!
// on envoie la requete 
$req = "DESCRIBE sports LIKE 'disciplines'"; 


{
// on affiche les informations de l'enregistrements en cours 
$s = "enum('Clubs omnisports', 'Aéromodélisme', 'Aéronautique', 'Aïkido et aïkibudo', 'Athlétisme', 'Automobile', 'Aviron', 'Basket-ball', 'Boxe', 'Canöe-kayak', 'Cyclisme', 'Cyclotourisme-VTT', 'Equitation', 'Escalade', 'Escrime', 'Fitness-aérobic-culture physique', 'Football', 'Golf', 'Gymnastique', 'Gymnastique volontaire', 'Hand-ball', 'Judo', 'Karaté', 'Kendo', 'Krav Maga', 'Motocyclisme', 'Natation', 'Parachutisme', 'Parapente', 'Pêche', 'Pelote Basque', 'Pétanque', 'Plongée sous-marine', 'Randonnée pédestre', 'Rugby', 'Ski', 'Spéléologie', 'Sport adapté', 'Squash', 'Taekwondo', 'Tennis', 'Tennis de table', 'Tir', 'Tir à l\'arc', 'Trampoline', 'Twirling bâton', 'ULM', 'Voile', 'Vol à voile', 'Volley-ball', 'Yoga')";
preg_match_all("/'(.*?)'/",$s,$resultats);

print_r($resultats);   // tous les résultats
print_r($resultats[1]);  // les résultats qui nous intéressent.

$valeurs = $resultats[1]; // Maintenant tu peux parcourir tes $valeurs;
    } 
il affiche quelque chose comme ça :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => 'Clubs omnisports' [1] => 'Aéromodélisme' [2] => 'Aéronautique' [3] => 'Aïkido et aïkibudo' [4] => 'Athlétisme' [5] => 'Automobile' [6] => 'Aviron' [7] => 'Basket-ball' [8] => 'Boxe' [9] => 'Canöe-kayak' [10] => 'Cyclisme' [11] => 'Cyclotourisme-VTT' [12] => 'Equitation' [13] => 'Escalade' [14] => 'Escrime' [15] => 'Fitness-aérobic-culture physique' [16] => 'Football' [17] => 'Golf' [18] => 'Gymnastique' [19] => 'Gymnastique volontaire' [20] => 'Hand-ball' [21] => 'Judo' [22] => 'Karaté' [23] => 'Kendo' [24] => 'Krav Maga' [25] => 'Motocyclisme' [26] => 'Natation' [27] => 'Parachutisme' [28] => 'Parapente' [29] => 'Pêche' [30] => 'Pelote Basque' [31] => 'Pétanque' [32] => 'Plongée sous-marine' [33] => 'Randonnée pédestre' [34] => 'Rugby' [35] => 'Ski' [36] => 'Spéléologie' [37] => 'Sport adapté' [38] => 'Squash' [39] => 'Taekwondo' [40] => 'Tennis' [41] => 'Tennis de table' [42] => 'Tir' [43] => 'Tir à l\' [44] => ',' [45] => ',' [46] => ',' [47] => ',' [48] => ',' [49] => ',' [50] => ',' ) [1] => Array ( [0] => Clubs omnisports [1] => Aéromodélisme [2] => Aéronautique [3] => Aïkido et aïkibudo [4] => Athlétisme [5] => Automobile [6] => Aviron [7] => Basket-ball [8] => Boxe [9] => Canöe-kayak [10] => Cyclisme [11] => Cyclotourisme-VTT [12] => Equitation [13] => Escalade [14] => Escrime [15] => Fitness-aérobic-culture physique [16] => Football [17] => Golf [18] => Gymnastique [19] => Gymnastique volontaire [20] => Hand-ball [21] => Judo [22] => Karaté [23] => Kendo [24] => Krav Maga [25] => Motocyclisme [26] => Natation [27] => Parachutisme [28] => Parapente [29] => Pêche [30] => Pelote Basque [31] => Pétanque [32] => Plongée sous-marine [33] => Randonnée pédestre [34] => Rugby [35] => Ski [36] => Spéléologie [37] => Sport adapté [38] => Squash [39] => Taekwondo [40] => Tennis [41] => Tennis de table [42] => Tir [43] => Tir à l\ [44] => , [45] => , [46] => , [47] => , [48] => , [49] => , [50] => , ) )
j'ai essayer de faire de mon mieux en lisant les infos sur la fonction DESCRIBE et apres plusieurs messages d'erreurs j'en suis là. si vous pouvez m'aider merci sinon je peux aussi faire un sommaire moins pratique comme je faisais avant en attendant de m'y mettre serieusement.
Merci pour ton aide.

par Tho » 06 sept. 2005, 11:38

La commande MySQL DESCRIBE te permet de récupérer le type de ton champ sous forme de string.
$req = "DESCRIBE matable";
A toi d'exécuter la requête et de boucler sur les résultats.

Doc de DESCRIBE : http://dev.mysql.com/doc/mysql/fr/describe.html

Il faut ensuite extraire les valeurs de la chaîne :
$s = "enum('toto','titi','tata')"; // en supposant que c'est ce que te retourne $ligne['type']
preg_match_all("/'(.*?)'/",$s,$resultats); // Il y a peut être une meilleure expression à trouver

print_r($resultats);   // tous les résultats
print_r($resultats[1]);  // les résultats qui nous intéressent.

$valeurs = $resultats[1]; // Maintenant tu peux parcourir tes $valeurs

Récuperer les valeurs d'un champ "ENUM"

par resistenz76 » 06 sept. 2005, 10:56

:oops:

bonjour,
J'ai créé une basse de données pour repertotier tous les clubs de sports et les associations de ma région. apres avoir créer ma base je souhaite récuperer les valeurs de ma fonction "ENUM" qui est constitué de 'type de sport' pour générer un sommaire qui affichera les différents types de sports.
je suis conscient que la question est stupide mais j'utilise le php depuis peu en recuperant des bouts et des conseils à droite et à gauche et donc parfois je bloque sur des conneries (comme tous les gens qui n'ont pas les bases...)
<? 
// on se connecte &agrave; MySQL 
$db = mysql_connect('root', 'user', 'password'); 

// on s&eacute;l&eacute;ctionne la base 
mysql_select_db('crij1',$db); 

// on cr&eacute;er la requete SQL et on l'envoie 
$sql = "SELECT * FROM sports"; 

// on envoie la requete 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque enregistrements 
while($data = mysql_fetch_array($req)) 
{
	// on affiche les informations de l'enregistrements en cours 
    echo 
''.$data['disciplines'].'</b><br>';
    } 
// on ferme la connexion &agrave; mysql 
mysql_close(); 
?>
avec ce code j'ai bien sur les disciplines de chaque enregistrements qui s'affichent, il manque un petit bout...
d'avance merci