[RESOLU] Formulaire avec condition - Si champ 1 NON VIDE, alors Champ 2 doit être NON VIDE

Eléphanteau du PHP | 13 Messages

11 nov. 2016, 16:50

Bonjour,
Dans un formulaire qui me permet de renseigner une table Mysql avec le nom des membres d'un bureau avec leur fonction.
Je cherche un moyen pour que lorsque le champs "nom_prenom" est renseigné, le champs fonction doit aussi renseigné.
Mais pas dans le cas contraire.
En gros c'est un "required" conditionnel
J'espère m’être correctement expliqué.
Merci d'avance pour votre aide
Patrick

Code : Tout sélectionner

<form action="upload.php" method="post" enctype="multipart/form-data"> <?PHP $ligne = 0; while ($ligne <= 16) { ?> <input type="text" name="nom_prenom[$ligne]"/> <select name="bureau[$ligne]"> <option value=""></option> <option value="Président">Président</option> <option value="Vice Président">Vice Président</option> <option value="Secrétaire">Secrétaire</option> <option value="Trésorier">Trésorier</option> <option value="Trésorier adjoint">Trésorier adjoint</option> <option value="Membres">Membres</option> </select> <br/> <?PHP $ligne++; } ?> <input type="submit" name="bureau" value="M à J bureau !"> </form>

ViPHP
ViPHP | 1978 Messages

11 nov. 2016, 21:16

Tu as deux choix : vérification côté client via Javascript et surtout vérification côté PHP (obligatoire : c'est un conseil)
Côté javascript, j'utiliserai la librairie jQuery :

Code : Tout sélectionner

$(document).on({ click : function (event) { //on empèche le submit event.preventDefault(); //on empèche la propagation du click event.stopPropagation(); //on récupère l'élément cliqué var element = event.target||event.srcElement; var f = $(element); //Est ce que l'élément cliqué est un bouton submit portant le nom bureau ? if (f.is('input[type="submit"][name="bureau"]')) { //on récupère tous les input de types texte f.parents('form').find('input[type="text"]').each(function(i,v) { //est ce que le champ est renseigné ? if ($(this).val().length != 0) { //on vérifie que le select juste suivant est renseigné if ($(this).next('select').val().length == 0) { alert ('le select suivant l\'input '+i+' n\'est pas renseigné'); return false; } } }); // il n'y a pas eu d'alerte = on soumet le formulaire. f.parents('form').submit(); } },'form');
Côté PHP, à toi de jouer.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 13 Messages

11 nov. 2016, 23:00

Bonsoir Aureusms et merci beaucoup pour ta réponse.
Pour le js je n'y connait vraiment rien, je ne sais même pas utiliser le code que tu m'a donné.
Pour le PHP je suppose que tu me suggère un teste du même style que sur cette pagehttp://www.apprendre-php.com/tutoriels/ ... -post.html ?

Si OUI, Je vais essayer de l'adapter et je reviendrais sur le forum vous dire si j'y suis arrivé.
si NON est-ce que tu peux me donner une piste ?
Merci
Patrick

ViPHP
ViPHP | 1978 Messages

13 nov. 2016, 20:57

C'est cela, tu dois tester toutes les variables POST avant de les enregistrer
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 13 Messages

14 nov. 2016, 19:24

Bonsoir,
Ok je suis arrivé a mes fin en partant de l'exemple que j'ai mis en lien ci-dessus.
Merci Aureusms.
Patrick