Récupérer un champ de type enum [Résolu/Fermé]

Signaler
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
-
Messages postés
10
Date d'inscription
jeudi 10 janvier 2013
Statut
Membre
Dernière intervention
17 janvier 2013
-
Bonjour,

J'ai un formulaire et en cas de changement de ma liste déroulante il faut répercuter la modification dans deux endroits (MySQL et le code HTML)

Je ne sais vraiment pas comment faire juste que j'ai mon champ est de type enum.
Je vous envoie un script que j'ai récupérer sur le net mais voilà je n'ai aucune idée pour le mettre en place sur mon site.
Pouvez m'aider s'il vous plait.
Un grand merci à vous.

[code=php]
<?php
//==========================================================
//requête MYSQL pour construire les menus déroulants à partir d'un champ de type ENUM

function menu_deroulant($nom_champ,$nom_table)
{
$result_menu_deroulant=mysql_query("DESCRIBE $nom_table");
while ($row=mysql_fetch_assoc($result_menu_deroulant))
{
$field=$row['Field'];//field contient le nom du champ
$type=$row['Type'];//type contient le type du champ
if ((substr($type,0,4)=="enum") AND ($field==$nom_champ))
{
$type=substr($type,5);
$type_2=explode(",",$type);
for ($i=0;$i<count($type_2);$i++)
{
$type_2[$i]=ereg_replace("'","",$type_2[$i]);
$type_2[$i]=ereg_replace(")","",$type_2[$i]);
$nom_var_select=$field."_select";
$$nom_var_select=$$nom_var_select."<option value=\"$type_2[$i]\">$type_2[$i]</option>\r\n";
}
}
}
return $$nom_var_select;
}
//==========================================================
?>
/code

19 réponses

Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
il n'est jamais bon de reprendre un code sur le net quand on ne le comprend pas. En effet, il se peut qu'il ne corresponde pas dutout à tes attentes, et tu ne progresseras pas.

Il faut retaper le code entièrement à mon sens, ce n'est vraiment pas difficile.

Que veux-tu faire EXACTEMENT ? Explique-toi mieux
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour,

J'ai une liste déroulante que je souhaite modifier lorsque cela est nécessaire.
Mais afin d'éviter de modifier dans ma BDD et dans mon form avec un champ de type enum comme ça je modifie uniquement dans ma BDD..
Mais voilà le hic, je ne sais pas faire.

Merci de votre aide.
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
Il est possible de modifier un menu déroulant sans passer par le serveur (sans modifier ta BDD qui, si j'ai bien compris, te donne les éléments de ta liste déroulante)
Il faut passer par le javascript.
Le javascript te permet de modifier le contenu HTML en dynamique.

ex :

<html>
<head>
<script>
function modif()
{
document.getElementById('menuderoulant').innerHTML="<select name=xxx><option value=1> item1 </option><option value=2> item2 </option><option value=3> item3 </option><option value=4> item4 </option></select>";
}
</script>
</head>

<body>

<div id=menuderoulant>
<select name=xxx>
<option value=1> item1 </option>
<option value=2> item2 </option>
</select>
</div>

<br><br>
<input type=button value=modif onclick="modif()">


</body>
</html>
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour,
Un grand merci pour ta réponse ça fonctionne plus besoin de toucher à ma BDD.

Pour modifier ma liste déroulante par contre avec le button "onclick" ça ne marche pas, tu peux encore m'aider s'il te plait.

Merci
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
moi ca marche
donne moi ton code stp
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
le code de toute ma page ?
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
ben oui. Comment veux-tu que je décelle une erreur si je n'ai pas tout le code ?
Du moins la partie ou cela ne fonctionne pas ...
le site est en ligne ? il est possible de le voir ? je verrai ainsi le code
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
<head>
<script>
function modif()
{
document.getElementById('Pupitre').innerHTML="<select name=user_pupitre>
<option value=Saxophone> Saxophone </option>
<option value=Cor> Cor </option>
<option value=Clairon> Clairon </option>
</select>";
}
</script>
</head>

<body>
<td>Pupitre :</td>
<td><select name=user_pupitre>
<option class="first" value="<?php echo @$rows->pupitre ?>"><?php echo @$rows->pupitre ?></option>
<option value=Saxophone> Saxophone </option>
<option value=Cor> Cor </option>
<option value=Clairon> Clairon </option>
</select>
<input type=button value=modif onclick="modif()"></td>
</body>
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Excuse moi j'ai oublié.........
non mon site est pas encore en ligne
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
fais plutôt ceci :

function modif()
{
document.getElementById('Pupitre').innerHTML="<select name=user_pupitre><option value=Saxophone>Saxophone </option><option value=Cor> Cor </option><option value=Clairon> Clairon</option></select>";
}


En javascript, il ne faut pas faire des retour chariot pour les chaînes. Tu verras ca marchera comme ça.
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
En cliquant sur modif il y a rien qui se passe ?
Alors si tu peux encore m'aider?

Merci
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
normal, tu n'as pas repris mon script, dont je te rappelle une partie :

<div id=menuderoulant>
<select name=xxx>
<option value=1> item1 </option>
<option value=2> item2 </option>
</select>
</div>


C'est le DIV qui fait la différence. Si tu lis bien mon script, dans la fonction javascript modif(), je fais appel au champ dont l'id est menuderoulant :
document.getElementById('Pupitre').innerHTML

Si tu ne définis pas <div id=menuderoulant> , ca ne risque pas de marcher ...
reprends bien mon code, et modifie-le petit à petit pour que ca marche...

mon code fonctionne. A partir de lui, tu y parviendras.

Bon Courage
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour,

Un très grand merci ça fonctionne à merveille après une bonne sieste.

Super
Merci beaucoup
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour

C'est encore moi concernant ma liste déroulante.

En fait je voudrais faire la même chose sur mes deux listes déroulante.

Au niveau du script c'est la même chose?

Merci de votre aide
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
- ce qui va modifier ta liste déroulante c'est le script javascript
- ce qui va déclencher la modification de ta liste déroulante, c'est ce que l'on appelle un évènement (onclick, ou autre)

Je ne sais pas si la modification de tes 2 menus déroulants sont déclenchés par le même évènement...
Mais le principe est évidemment le même.

Il me manque donc des éléments pour te répondre précisément.
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Je te fait voir les 3 listes déroulantes pour le javascript...

<script>
function modif()
{
document.getElementById('listepupitre').innerHTML="<select name=user_pupitre><option value=Saxophone>Saxophone</option><option value=Porte drapeau>Porte drapeau</option><option value=Chef de musique>Chef de musique</option><option value=Cor>Cor</option><option value=Trompette de cavalerie>Trompette de cavalerie</option><option value=Clairon>Clairon</option><option value=Basse>Basse</option><option value=Percussion>Percussion</option><option value=Tambour>Tambour</option></select>";
}
{
document.getElementById('listebureau').innerHTML="<select name=user_statut><option value=President (e)>President (e)</option><option value=President (e) Adjoint (e)>President (e) Adjoint (e)</option><option value=Tresorier (e)>Tresorier (e)</option><option value=Tresorier (e) Adjoint (e)>Tresorier (e) Adjoint (e)</option><option value=Secretaire>Secretaire</option><option value=Secretaire Adjoint (e)>Secretaire Adjoint (e)</option></select>";
}
{
document.getElementById('listestatut').innerHTML="<select name=user_bureau><option value=Executant>Executant</option><option value=Debutant>Debutant</option><option value=Eveil musical>Eveil musical</option><option value=Non musicien>Non musicien</option><option value=Sortant>Sortant</option></select>";
}
</script>
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
oula !

ne ferme pas tes acolades ! Tu devrais apprendre la base de la programmation !
A quoi servent les acolades à ton avis ?

function xxx()
{ contenu de la fonction
}

si tu ouvres d'aures acolades, ca ne veut rien dire !


fais comme ceci :



<script>
function modif()
{
document.getElementById('listepupitre').innerHTML="<select name=user_pupitre><option value=Saxophone>Saxophone</option><option value=Porte drapeau>Porte drapeau</option><option value=Chef de musique>Chef de musique</option><option value=Cor>Cor</option><option value=Trompette de cavalerie>Trompette de cavalerie</option><option value=Clairon>Clairon</option><option value=Basse>Basse</option><option value=Percussion>Percussion</option><option value=Tambour>Tambour</option></select>";

document.getElementById('listebureau').innerHTML="<select name=user_statut><option value=President (e)>President (e)</option><option value=President (e) Adjoint (e)>President (e) Adjoint (e)</option><option value=Tresorier (e)>Tresorier (e)</option><option value=Tresorier (e) Adjoint (e)>Tresorier (e) Adjoint (e)</option><option value=Secretaire>Secretaire</option><option value=Secretaire Adjoint (e)>Secretaire Adjoint (e)</option></select>";


document.getElementById('listestatut').innerHTML="<select name=user_bureau><option value=Executant>Executant</option><option value=Debutant>Debutant</option><option value=Eveil musical>Eveil musical</option><option value=Non musicien>Non musicien</option><option value=Sortant>Sortant</option></select>";
}
</script>
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Tu )peux me dire ce que tu penses comme ça?
En fait je voudrais que les 3 buttons onclik gére séparément chacune des 3 listes.

Merci encore

<td>Statut :</td>
<td><div id=listestatut>
<select name="user_statut">
<option class="first" value="<?php echo @$rows->membre ?>"><?php echo @$rows->membre ?></option>
</select>
</div>
<input type=button value=modif onclick="modif()"></td>

<td>Pupitre :</td>
<td><div id=listepupitre>
<select name="user_pupitre">
<option class="first" value="<?php echo @$rows->pupitre ?>"><?php echo @$rows->pupitre ?></option>
</select>
</div>
<input type=button value=modif onclick="modif()"></td>
</tr>
<tr>

<td>Bureau :</td>
<td><div id=listebureau>
<select name="user_bureau">
<option class="first" value="<?php echo @$rows->bureau ?>"><?php echo @$rows->bureau ?></option>
</select>
</div>
<input type=button value=modif onclick="modif()"></td>
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
En fait c'est la seule chose qui ne fonctionne pas comme je souhaite.

Car lorsque je doit modifier uniquement 1 des 3 listes en faisant onclik cela me propose de modifier les 3 listes à la fois, c'est pour ça qu'il faudrait que les 3 buttons fonctionnent séparément.

Merci infiniment de ton aide
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
tout à fait normal ! Tu fais appel à chaque fois à la même fonction qui modifie les 3 listes en même temps ...

Fais 3 fonctionns séparées et appelle chacune d'entre elles en fonction du bouton :

<script>
function modif1()
{
document.getElementById('listepupitre').innerHTML="<select name=user_pupitre><option value=Saxophone>Saxophone</option><option value=Porte drapeau>Porte drapeau</option><option value=Chef de musique>Chef de musique</option><option value=Cor>Cor</option><option value=Trompette de cavalerie>Trompette de cavalerie</option><option value=Clairon>Clairon</option><option value=Basse>Basse</option><option value=Percussion>Percussion</option><option value=Tambour>Tambour</option></select>";
}

function modif2()
{
{
document.getElementById('listebureau').innerHTML="<select name=user_statut><option value=President (e)>President (e)</option><option value=President (e) Adjoint (e)>President (e) Adjoint (e)</option><option value=Tresorier (e)>Tresorier (e)</option><option value=Tresorier (e) Adjoint (e)>Tresorier (e) Adjoint (e)</option><option value=Secretaire>Secretaire</option><option value=Secretaire Adjoint (e)>Secretaire Adjoint (e)</option></select>";
}

function modif3()
{
{
document.getElementById('listestatut').innerHTML="<select name=user_bureau><option value=Executant>Executant</option><option value=Debutant>Debutant</option><option value=Eveil musical>Eveil musical</option><option value=Non musicien>Non musicien</option><option value=Sortant>Sortant</option></select>";
}
</script>



PUIS :


<td>Statut :</td>
<td><div id=listestatut>
<select name="user_statut">
<option class="first" value="<?php echo @$rows->membre ?>"><?php echo @$rows->membre ?></option>
</select>
</div>
<input type=button value=modif onclick="modif1()"></td>

<td>Pupitre :</td>
<td><div id=listepupitre>
<select name="user_pupitre">
<option class="first" value="<?php echo @$rows->pupitre ?>"><?php echo @$rows->pupitre ?></option>
</select>
</div>
<input type=button value=modif onclick="modif2()"></td>
</tr>
<tr>

<td>Bureau :</td>
<td><div id=listebureau>
<select name="user_bureau">
<option class="first" value="<?php echo @$rows->bureau ?>"><?php echo @$rows->bureau ?></option>
</select>
</div>
<input type=button value=modif onclick="modif3()"></td>
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Super génial ça fonctionne merveilleusement bien.

Un très grand merci
Messages postés
10
Date d'inscription
jeudi 10 janvier 2013
Statut
Membre
Dernière intervention
17 janvier 2013

Bonjour

Une question même si vieux poste j'ai crée un menu déroulant sans base de donnée dont voici le code

div id=menuderoulant>
<select name=boreales002>
<option value=Disponible> Disponible </option>
<option value=Optionné> Optionné </option>
<option value=Vendu> Vendu </option>
</select>
<input type=button value=modif onclick="modif()">
</div>

je voudrais que lorsque je sélectionne optionné par exemple cela se modifie sur le site directement .

la deuxième partie :

<script>
function modif()
{
document.getElementById('menuderoulant').innerHTML="<select name=boreales002><option value=Disponible> Disponible </option><option value=Optionné> Optionné </option><option value=Vendu> Vendu </option></select>";
}
</script>


Aujourd'hui quand je clique sur modif cela me remet la première valeur et modif disparait .
Help je ne comprend pas !!!