8792 sujets

Développement web côté serveur, CMS

J'ai ce formulaire lien ici

et je voudrais que si l'on répond "oui" si l'artiste est en solo que le champ "prénom et nom de l'artiste" disparaisse, et vice-versa, en utilisant du php.

Voilà la source du formulaire :

<form method="post" action="ajouter.php">

<p>
<label for="nomartiste">Nom de l'artiste :</label>
<input type="text" name="nomartiste" id="nomartiste" />
</p>

<p>
<label for="paysartiste">Pays de l'artiste :</label>
<input type="text" name="paysartiste" id="paysartiste" />
</p>

<p>
<label for="solo">S'agit-il d'un artiste en solo ?</label>
<select name="solo" id="solo">
	<option>Non</option>
	<option>Oui</option>
</select>
</p>

<fieldset>
<legend>Prénom et Nom des membres</legend>
<p>
<label for="nommembre1">1er membre :</label>
<input type="text" name="nommembre1" id="nommembre1" />
</p>

<p>
<label for="nommembre2">2ème membre :</label>
<input type="text" name="nommembre2" id="nommembre2" />
</p>

<p>
<label for="nommembre3">3ème membre :</label>
<input type="text" name="nommembre3" id="nommembre3" />
</p>

<p>
<label for="nommembre4">4ème membre :</label>
<input type="text" name="nommembre4" id="nommembre4" />
</p>

<p>
<label for="nommembre5">5ème membre :</label>
<input type="text" name="nommembre5" id="nommembre5" />
</p>
</fieldset>

<p>
<input type="submit" value="Envoyer"/><input type="reset"/>
</p>
</form>
En php, pas possible !
Il faut soumettre le formulaire pour ça.
Avec événement onchange sur ta select ça devrait le faire, mais bon, entre nous c'est pas terrible.

J'ai pas tout suivi, mais moi je l'aurais fait autrement.
C'est à dire :
- on remplit un formulaire standard pour tous avec les infos normales.
Si on veut des options, on coche un bête radio qui fera apparaître le reste lors de la soummission.
a écrit :

Avec événement onchange sur ta select ça devrait le faire, mais bon, entre nous c'est pas terrible.

Bah... pour moi ça me convient parfaitement.
LE onchange sur select est pratique et simple du moment ou on ne change pas la position du focus en faisant ses modifications sur le DOM.
Attention juste à ne masquer les champs que si l'utilisateur a javascript actif. Pour les autres, tu as juste à ignorer les informations inutiles éventuellement remplies.
N'oublie pas non plus de préciser textuellement quelque part les conditions pour lesquelles ces champs sont requis ou non.
Celui qui n'a pas javascript verra les champs de toute façon, mais comme il est intelligent, il ne va les remplir que s'il a coché les bonnes options.
QuentinC a écrit :

Avec événement onchange sur ta select ça devrait le faire, mais bon, entre nous c'est pas terrible.

Bah... pour moi ça me convient parfaitement.

Arf... je m'en doutais... mais je me suis dit :
" je vais attendre quand même pour voir ! "
Et c'est tout vu ! Smiley langue

En fait quand je disais "pas terrible", je ne parlais pas de l'événement Onchange en lui-même qui est pratique c'est certain.
Non, en fait le "pas terrible" s'adresse au concept même de son formulaire.
Je l'ai d'ailleurs expliqué en-dessous Smiley cligne
Modifié par Bison (19 Dec 2006 - 09:15)
J'hésite entre les deux solutions proposées mais je penche plus pour celle de bison car j'ai trouvé ceci sur le net :

Sous IE, Avec onChange on doit cliquer sur le radio, puis re-cliquer "à l'extérieur" du champ pour déclencher le onChange.
Il conseille l'utilisation de onClick pour remédier à ce problème

Pour info, mon formulaire contiendra enormement plus de champ, mais je les rajouterai quand j'aurai fini avec mon petit soucis
Modifié par Bellami (19 Dec 2006 - 12:47)
Euh oui.... mais tu parles de radio là alors que toi tu utilises une liste select.
Donc c'est bien Onchange et pas Onclick Smiley cligne
Bison > Pourrais-tu stp argumenter pourquoi tu trouves que son formulaire est mal pensé ?
Je trouve ça assez pratique quand les champs s'activent ou non en fonction des options qu'on choisit, sans avoir à recharger la page.

P.S. A propos des radio et onclick : les lecteurs type jaws déclenchent bien un onclick lorsqu'on appuie sur espace pour activer la case
QuentinC a écrit :
...sans avoir à recharger la page.

Sans avoir à recharger la page passe uniquement par le javascript.

Je n'ai rien contre le javascript, il est libre de faire ce qu'il veut.
Je dis juste que j'aurais mis mes options dans une seconde partie de formulaire et je ne les aurais affichées que si, et seulement si, j'en avais besoin en fonction d'un choix précis de l'internaute.

Il faut vérifier toutes les données provenant d'un formulaire.
Si on conçoit un formualire tout js, c'est faire deux fois le travail puisqu'un bon DEV vérifiera aussi et surtout en PHP.

Je ne me base que sur son code et ses explications succintes, pas sur son schéma que je ne connais pas Smiley cligne
Je crois que je vais finalement laisser mon formulaire comme il est actuellement et rajouter un bouton pour rajouter un champ pour les données d'un nouvel album.

Pour info, mon formualire est surtout pour me permettre de faire des maj plus aisément, mais aussi pour que les internautes puissent partager leur goût.
a écrit :

Sans avoir à recharger la page passe uniquement par le javascript.

Effectivement, mais ce serait du javascript non obstructif, dans le sens où les champs sont de toute façon affichés si javascript n'est pas actif. En accompagnant les champs concernés d'une indication précise du style « Vous n'avez besoin de saisir XXX que si vous avez choisi l'option XXX », je ne vois pas où est le problème.
Je pensais plutôt à masquer les champs lors de l'onload, et de les réafficher ensuite si nécessaire (via display block/none).