[php/mysql] Lister mes ENUM dans un dropdown menu - Et éventuellement les mettre à jour :)

Voilà je tente d’afficher un formulaire avec une liste déroulante contenant les valeurs définies pour une colonne d’une table de ma base de données, cette colonne est de type ENUM comme vous pouviez vous en douter à la lecture du titre du sujet :slight_smile:

J’ai trouvé ca sur le net :

<?php
function test($table,$attrName)
{
$res = mysql_query("DESCRIBE $table");
$types = array("ENUM","SET");
$chars = array("(", ")", "'", " ");
while (strcmp($row[Field], $attrName) != 0)
$row = mysql_fetch_array($res);
$str = $row[Type];
foreach ($types as $type)
if (stristr($str, $type))
{
	$str = str_replace($type, "", $str);
	foreach($chars as $sep)
	$str = str_replace($sep, "", $str);
	$str = explode(",",$str);
	foreach($str as $val => $elem)
	$values[$val] = $elem;
	break;
}
return $values;
}
echo test("vehicules","MarqueurV");

?>

Mais cela ne semble pas fonctionner, ca ne fait que m’afficher “array”, pourtant ma table est bien véhicules et ma colonne MarqueurV

Est-ce que qqn a une idée ?

Par ailleurs, mais on verra ca après, j’aimerais pouvoir mettre à jour ma liste de ENUM depuis un formulaire, si qqn est inspiré sur ce sujet là…

Merci par avance de votre aide !

Bon alors finalement en cherchant encore plus dans google j’en ai trouvé un qui marche.

Mais j’ai une autre question du coup : voilà dans ma table j’ai fixé mon enum sur des valeurs numériques (1 -> 5) Seulement je veux afficher un texte informatif et pas 1 -> 5 genre :
1 -> en cours
2 -> terminé
3 -> annulé et ainsi de suite :slight_smile:

Quelle est la meilleure méthode ?

1/ Je vires mes chiffres et je mets cash le texte dans la bdd (ca pose pas de soucis ?)
2/ Je gardes mes chiffres et je hardcode le texte dans mes scripts ? Spa très évolutif ca…
3/ je garde mes chiffres et euh… je trouve un moyen pour que ca soit hardcodé mais en propre ? genre je génère un petit fichier txt contenant mon dropdown avec mes textes, et aussi un array des équivalences text/numérique ?

Je sais pas trop si c’est méthodes sont viables, faisables ou propres, c’est juste des idées ^^

Tu peux te faire une table ‘etat’ où tu listeras tes différents états avec leur code, et lors de l’affichage du select, tu le choppes dans cette table.

Vouais j’y ai pensé, mais ca fait beaucoup de requête SQL à la fin tout ca non ? Pi une table pour 3 états… spa mauvais pour les perfs ?

EDIT : bon en même temps ya une requête sql aussi pour générer mon array… donc ca change pas grand chose à ce niveau j’avoue :smiley:

Génération vers un fichier du bazar peut être ? A priori c’est des états qui ne seront PAS modifiés, mais je veux laisser la possibilité. On pourrait envisager l’écriture d’un array dans un fichier et l’utiliser ainsi pour construire mon affaire ?

Tant qu’on change rien dans l’admin le fichier reste ce qu’il est, et si on rajoute des états ca regénère le truc. Et ainsi on utilise une table sql supplémentaire comme tu le préconises mais sans y accéder en permanence :slight_smile:

Ca t’inspire ainsi ?