|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Bonjour.
Je me suis inspiré de ce tuto pour faire mon formulaire de contact : http://a-pellegrini.developpez.com/tutoriels/php/mail/ Comment je peux faire pour que ce soit l'un ou l'autre : $message ou bien $op_z? Je veux permettre qu'on indique un $message et une option $op_z, ou seulement l'un ou l'autre. J'ai essayé || aussi OR. Si je sélectionne $op_z sans $message, ça passe. Mais pas l'inverse. Les deux indiqué, ça passe aussi. Code :
__________________
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 3 011 ![]() |
Code :
Note: Pour réccupérer "une valeur sinon une autre valeur" tu peux utiliser l'opérateur ternaire: Code :
$a = (isset($b)) ? $b : 'valeur par défaut';
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Une petite erreur que j'ai indiquée:
Il faut vraiment que ça soit : $a ou $b : on peut choisir entre les deux. $a et $b : ou alors, choisir les deux. si je fais que $a, pas d'envoi. si je fais que $b, pas d'envoi. Si je fais les deux, y a envoi.
__________________
|
|
|
00
|
|
|
#4 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 3 011 ![]() |
Code :
if (!empty($a) && !empty($b)) { echo "J'envoie du lourd !"; } Citation:
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() |
Allez pour corser le tout, tu peux aussi factoriser la négation :
Code :
if ( ! (empty($a) || empty($b))) { echo "J'envoie du lourd !"; }
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
10
|
|
|
#6 | |||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Ça ne fait pas ce dont je veux.
Il faut en avoir au moins un des deux sélectionné. Les empty de nom, pre, expéditeur et sujet, si j'en oubli un, ça refuse le mail. ça c'est correcte. Mais pour message et l'option, il faut en avoir au moins un. C'est peut-etre les elseif.. je ne sais pas. Code :
Citation:
__________________
|
|||
|
|
00
|
|
|
#7 | ||
|
Membre éclairé
![]() ![]() Développeur Web Inscription : juin 2009 Messages : 363 ![]() |
Bonjour,
Code :
EDIT : Je suppose que $op_z vient d'un radio ou d'un select... Montre nous comment tu récupéres les données, je pense que cela vient plutot d'ici. Sinon un echo des deux variables comme ceci : Code :
echo '$message = '.$message' et $op_z='.$op_z; |
||
|
00
|
|
|
#8 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Non..
normalement, ça devrait marcher. cette partie du code est dans le tuto Si on omet un des ithem ça rejette tout. Je me suis inspiré de ce tuto pour faire mon formulaire de contact : http://a-pellegrini.developpez.com/tutoriels/php/mail/ Version du tuto : Code :
__________________
|
||
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Tien, ceci fonctionne :
Code :
__________________
|
||
|
|
00
|
|
|
#10 | ||
|
Membre éclairé
![]() ![]() Développeur Web Inscription : juin 2009 Messages : 363 ![]() |
Concrétement tu viens de dire :
Si le message ou l'option est vide, et si le message et l'option sont vide... Je pense que cette partie te suffira : Code :
|
||
|
00
|
|
|
#11 | ||||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
J'ai testé, ça ne marche pas.
Par contre, ça oui : Code :
Mais, si ça pas d'allure, je préfère aller selon les vraies règles et de comprendre pourquoi. ça vient à dire ceci je pense mais qui marche pas : Code :
__________________
|
||||
|
|
00
|
|
|
#12 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Ça aussi, ça marche.
Je pense que c'est l'équivalent de l'autre qui marche aussi. Mais, je suis plutôt incertain des raisons. Code :
__________________
|
||
|
|
00
|
|
|
#13 |
|
Expert Confirmé
![]() ![]() |
Tu peux réduire à ceci :
Code :
elseif ( ! (strlen($message) || strlen($op_z)))
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
00
|
|
|
#14 | |
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Oui, fonctionne bien.
Si je peux ajouter l'obligation de mettre un minimum de 20 caractères, ça serait bien. mais, ça pas l'air à marcher le minimum. Citation:
__________________
|
|
|
|
00
|
|
|
#15 | |||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 3 011 ![]() |
Citation:
Code :
elseif ( ! (empty($message) || empty($op_z)) ) Au passage, quand tu veux l'un ou l'autre mais pas les deux ni aucun: c'est XOR qu'il faut utiliser: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|||
|
00
|
|
|
#16 | ||
|
Expert Confirmé
![]() ![]() |
En gardant le tout facilement lisible :
Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#17 | |
|
Expert Confirmé
![]() ![]() |
Citation:
Et puis vu qu'il souhaite compter le nombre de caractères, strlen() est tout à fait approprié
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
|
00
|
|
|
#18 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 3 011 ![]() |
Dans ce cas il faut utiliser isset + l'opérateur de comparaison stricte. Ce qui nous donne:
Code :
elseif ( ! (isset($message) && isset($op_z) && $message !== "" && $op_z !== "") ) isset ou empty sont donc de rigueur et leur usage doit être systématique.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#19 |
|
Expert Confirmé
![]() ![]() |
Je suis bien d'accord avec toi mais là on utilise dejà des variables qui normalement ont été initialisées à partir d'un tabeau global ($_POST, $_GET...) donc j'ose espérer que lors de leur initialisation les tests d'existence ont bien été faits : isset($_POST['message']).
Il est raisonnable de penser que des variables comme $message | $op_z sont bien initialisées et le test isset($message) n'est pas trop utile là dans son cas.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
00
|
|
|
#20 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Merci pour les efforts que vous accordez.
Je poste le code complet de la partie contact. Vous avez juste à mettre votre courriel et définir les trois variable du début et vous allez pouvoir faire les tests. Vous aller voir le contexte : Code :
__________________
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com