Accueil > Forum > > > > J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.
J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.
mercredi 2 juillet 2008 à 18:01:03 |
J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

pyrrah
|
Hello à tous :) Voilà, j'ai un problème de dev php. J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli. L'instruction que j'ai mise en place (Voilà ce qui arrive quand on prog à 3h du mat') : if (empty($_POST[champ1]) XOR empty($_POST[champ2]) XOR empty($_POST[champ3]) XOR empty($_POST[champ4]) XOR empty($_POST[champ5])) { echo "Erreur : Veuillez remplir au minimum un des champs."; } Tout d'abord, je sais que l'instruction que j'ai écrite est *dégueulasse*. Le truc, c'est que ça marche... sauf si le nombre de champs remplis est pair ! Je m'explique : Si il y a 2 champs remplis sur les 5 => Erreur. Si y'en a 3 => Pas d'erreur, on continue. D'habitude je demande pas d'aide car j'aime bien persévérer, mais là j'avoue que mêmes mes cours d'électronique ne m'aide pas =/ S'il vous plaît, éclairez ma lanterne ^^ d'avance merci :)
|
|
mercredi 2 juillet 2008 à 18:17:25 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

Evangun
|
Hello,
des "and" à la place des "xor" et ça devrait marcher, avec 3 ou 5 ou 50 :)
Quant à rendre ça moins crade, il faudrait faire une boucle. Ou alors je pense que les mettre toutes dans un même tableau et faire un if(empty()) devrait marcher aussi (à condition qu'un tableau de tableaux vides soit considéré comme vide, à vérifier).
à+
|
|
mercredi 2 juillet 2008 à 19:26:55 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

Arnauti
|
Il faut mieux utiliser OR ou || car il veut savoir si au moins l'un des champs et vide :)
|
|
mercredi 2 juillet 2008 à 19:55:44 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

Evangun
|
Euh non non, dans la condition telle qu'il l'a écrite, c'est bien des "and" et pas des "or" qu'il faut  Après évidemment on pourrait tourner le truc à l'envers.
|
|
mercredi 2 juillet 2008 à 21:09:12 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

Arnauti
|
Ahhh oui en effet j'avais (tres ?) mal lu ce qu'il avait mis. Désolé Evangun :p
|
|
jeudi 3 juillet 2008 à 09:56:25 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

JoJo738
|
Réponse acceptée !
Hello ^^ Après, une autre méthode, tu fais une somme (ça peut peu être, être utile pour ceux ayant beaucoup de champs); Ou tu as encore la solution de mettre dans un array et de faire un count(); Ensuite tu compare avec le nombre de résultat attendus :p echo $test = empty($a) + empty($b) + empty($c) + empty($d) + empty($e);
// revient à :
function sum_empty() { // on prend tous les arguments $args = func_get_args(); $return = 0; foreach( $args as $arg ) { $trim_arg = trim($arg); $return += ( is_array($arg) && empty($arg) ) || ( empty($trim_arg) && !strlen($trim_arg) ); // On ajoute "+1" si $arg est vide (vide ET (0 caractère) //OU// vide ET est un array } return $return; }
echo sum_empty($a, $b, $c, $d, $e);Donc, avec un sum_epmty($a, $b, $c, $d, $e); on obtient un chiffre compris entre 0 et 5 ; 0 -> tout est remplie, 5 -> rien. Donc, ici, ca reviendrait à : // Si le nombre de champs vide est different de 5 ( càd, 5, 4, 3, 2, 1 => nombre de champs remplis) if ( sum_empty($_POST['champ1'], $_POST['champ2'], $_POST['champ3'], $_POST['champ4'],$_POST['champ5']) <> 5 ) { }
Bien sûr, rien ne faut la bonne méthode avec AND (plus performante); Ici, je teste juste en plus les '', "", 0, '0', "0" (j'ai pas mis les null par contre) Si ma reponse te convient, merci de l'accepter ! 
|
|
jeudi 3 juillet 2008 à 19:18:05 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

Farfadh
|
$trim_arg = trim($arg); génère une erreur quand $arg est un tableau.
Mais l'idée est bonne et je me permet de réécrire cette fonction :
function sum_empty() { $sum = 0; foreach( func_get_args() as $arg ) { // chaine ? alors on enlève les caractèreres d'espacements au début et à la fin if(is_string( $arr[$arg] )) $val = trim($arr[$arg]); // sinon la valeur est gardée telle quelle else $val = $arg;
// valeur vide ? on incrémente le total if(empty($val)) $sum += 1; } return $sum; } Seulement l'écriture suivante est incorrecte :
if(sum_empty($_POST['champ1'], $_POST['champ2'], $_POST['champ3'], $_POST['champ4'], $_POST['champ5'])
Car si un champ n'est pas défini, le code va renvoyer une erreur et donc utiliser la fonction sum_empty ne revient nullement à additionner des valeurs renvoyées par empty.
Alors je propose la fonction suivante :
function array_sum_empty() // teste des valeurs dans un tableau selon leur clé // renvoie le nombre d'élément indéfinis, vides, nuls, ou égaux à zéro // syntaxe : array_sum_empty($tableau, $cle1[, $cle2[, ... ]]) { // récupère les arguments fournis à la fonction $args = func_get_args();
// on prend le premier argument qui est le tableau dans lequel on effectue les recherches // note : le premier argument est retiré du tableau $args // note : array_shift renvoie NULL si $args est vide $arr = array_shift($args);
// si le premier argument n'est pas fourni ou n'est pas un tableau, on revoie NULL pour le signaler if(!is_array($arr)) return(NULL);
// initialise le total de valeurs 'vides' et procède aux vérification de chaque argument qui suit $sum = 0; foreach( $args as $arg ) { // entrée indéfinie ? on considère que la valeur est nulle if(!isset($arr[$arg])) $val = NULL; // chaine ? alors on enlève les caractèreres d'espacements au début et à la fin elseif(is_string($arr[$arg])) $val = trim($arr[$arg]); // sinon la valeur est gardée telle quelle else $val = $arg;
// valeur vide ? on incrémente le total if(empty($val)) $sum += 1; } return $sum; }
Dans notre cas, on l'utiliserait de la manière suivante :
if(array_sum_empty($_POST, 'champ1', 'champ2', 'champ3', 'champ4', 'champ5')) ...
Qu'en pensez-vous ?
|
|
vendredi 4 juillet 2008 à 15:23:22 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

pyrrah
|
Ok merci je vais voir tout ça et je vous dirais si ça marche :) Merci pour votre rapide aide (ce que j'aime sur ce site).
|
|
mercredi 9 juillet 2008 à 15:44:10 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

pyrrah
|
Y'aurait-il quelqu'un qui est une meilleure solution ? Le système de boucle peut être une alternative, mais n'y a t-il pas un autre moyen plus, disons léger. Mon problème c'est que mon application est déjà assez lourde au niveau traitement de données... Merci d'avance ^
H4ck3r vaillant, rien d'impossible.
|
|
mercredi 9 juillet 2008 à 15:53:34 |
Re : J'ai 5 champs et j'aimerais faire une vérification pour savoir si au minimum un des 5 est rempli.

JoJo738
|
Réponse acceptée !
Lu' Euh ... je crois qu'une solution plus simple à été donnée ... if( isset($_POST['champ1'], $_POST['champ2'], $_POST['champ3']) ) { if( empty($_POST['champ1']) AND empty($_POST['champ2']) AND empty($_POST['champ3']) ) { echo 'TOUS les champs sont vides'; } else { echo 'Au moins un champ n\'est pas vide'; } } else { echo 'Un des champ n\'existe pas !'; }
Si ma reponse te convient, merci de l'accepter ! 
|
|
Cette discussion est classée dans : champs, post, xor, empty, minimum
Répondre à ce message
Sujets en rapport avec ce message
Formulaire...validation [ par CyberMen30 ]
Bonjour à tous,J'ai un formulaire d'adhésion contenant les données suivante:Tarif, Regionale, recruteur, prenom, nom, numero, rue, casepostale, ville,
probleme dans le code [ par developvbdebut ]
Bonjour tout le mondeJ'ai deux tabletbl_message_recutbl_messagerie Je voudrai avoir la pos
formulaire avec piece jointe probleme [ par ggsecours ]
BonjourJe debute plus ou moins en php mais j'ai déjà un bon formulaire assez costau avec verification des champs pour envoie par mail mais le seul pro
Probleme un script [ par developvbdebut ]
Bonsoir tout le mondeJ'ai un probleme avec mon scripte , c'est les boutons radio de mon formulaire qui posent probleme.En effet, je selection un bouto
case a cocher probleme de recupe de valeur, Merci [ par rachidphp93 ]
bonjour tout le monde ca fait 2h que je galaire la dessus et je trouve toujours pas de solution,en
Update [ par refkaben ]
Bonjour à tous;J'ai une requete Update, le syntaxe me parrait correcte mais ça ne fait rien, càd que les valeurs des champs que je veux modifier reste
2 boucles imbriqués [ par mariobotta ]
bonjour à tous,Voilà j'ai un petit soucis concernant 2 boucles imbriquées pour l'affichage d'un formulaire qui augmente ou diminue des champs(zone de
2 actions :-( [ par Blacknight91titi ]
Salutvoila j'ai un problèmej'ai crée un formulairepuis ajouter un code pour vérifier que les champs soit rempli correctementmasi le problème est que c
petit probleme [ par biloutte33 ]
voilà je viens de créer un espace membre mais j'ai un petit soucis (des messages d'erreur)Parse error: parse error, unexpected T_ELSE in /var/www/free
formulaires a 2 entrées au choix [ par gabs77 ]
bonsoir, j'ai un souci avec mon formulairele fait est que mon formulaire se présente de la façon suivante :formulaire.php========== liste déroulante
Livres en rapport
|
Derniers Blogs
[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE par Audrey
A l'occasion d'un projet client, j'ai utilisé RIA Services avec Silverlight 3 (mais cela fonctionne aussi avec la version 4), et je l'ai utilisé pour une interface façon Maitre / Détail. Voici comment j'ai procédé pour arriver à mes fins. Nous allons pren...
Cliquez pour lire la suite de l'article par Audrey CSDL FUNCTIONCSDL FUNCTION par Matthieu MEZIL
Dans mon post précédent , j'ai utilisé une CSDL Function afin de générer une requête SQL avec un DateDiff utilisant la date courante sur la BD à partir d'une requête LINQ. Dans le cadre de ce post , vous avez probablement remarqué que dans le cadre de plu...
Cliquez pour lire la suite de l'article par Matthieu MEZIL LINQ TO ENTITIESLINQ TO ENTITIES par Matthieu MEZIL
Cette semaine je suis à Montréal en tant que speaker sur Entity Framework pour l'évènement confoo . J'en profite pour remercier les organisateurs de cet évènement de m'avoir fait confiance et Access-IT de m'avoir permis d'y participer. En parallèle, j'ai ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010 par neodante
La nouvelle interface d'Office 2010 à amener quelques modifications par rapport à celle de 2007. Certes mineures, ces modifications ont fait disparaître la case à cocher de l'onglet 'Développeur' en première page du panneau du 'bouton Office' (dans Office...
Cliquez pour lire la suite de l'article par neodante [ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1[ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1 par pierre
Si vous avez téléchargé comme moi Microsoft Forums NNTP Bridge V1 avant le 11 mars 2010 (voir [Astuce] Disponibilité de Microsoft Forum NNTP Bridge Version 1.0), un problème de date localisée pour les non anglais était présent. Un patch est disponibl...
Cliquez pour lire la suite de l'article par pierre
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
Comparez les prix

HTC Magic
Entre 429€ et 429€
|