Page 1 sur 2
conditions imbriquée
Posté : 20 mai 2005, 11:37
par seayoung
Bonjour tlm ,
Voici une partie de mon code:
if (empty($val['val1']) && empty($val['val2']) &&empty($val['val3']) &&empty($val['val4']) &&empty($val['val5']) )
{
// action effectuée
}
les $val['val'] sont des valeurs issues d'un formulaire
et voica mon problème:
si $val['val1'] n'est pas renseigner alors la condition est réaliser alors que je voudrai que si toutes les valeurs ne sont pas renseigner la condition est réaliser.
En gros je fait référence a un post que j ai mis hier.
Hier il me semblais que ca marchais et la je poursuit mes test et comme de par hazard la ca marche pas.
Je voulais savoir si j ai fait une erreur de sintaxe ou si j ai oublier quelque chose ou si j ai tout faux.
je vous en remercie d'avance.
Posté : 20 mai 2005, 11:47
par slipndi
Solu,
Bon perso ton code je le ferais comme ca plutôt :
if (!isset($val['val1']) AND !isset($val['val2']) AND !isset($val['val3']) AND !isset($val['val4']) AND !isset($val['val5']))
{
// action effectuée
}
Posté : 20 mai 2005, 11:47
par Cyrano
Tu veux dire qu'actuellement, si il y a des valeurs partout sauf dans une seule, les instructions sont quand même exécutées ?
Ha oui, un détail, laisse un espace entre "&&" et "empty".
Posté : 20 mai 2005, 11:55
par seayoung
en fait si ma premiere valeur soit :
$val['val1']
est renseigner ca passe ma condition n'est pas exécutée.
Mais si la première valeur n'est pas exécuter alors ma condition est exécutée.
En fait ca fait juste si la premiere valeur reseigner ok sinon condition.
au lieu de :
Si au
moins une est renseignée alors ok.
et je vois po ce qui cloche dans ma condition .
PS: Cyrano je l ai pas mis ici mais sur mon code y a bien des espace avant et apres &&.

Posté : 20 mai 2005, 12:00
par Cyrano
Récupère mon
formulaire pour voir comment je traite ce genre de cas, ce sera plus pratique que de longues explications ici.
Posté : 20 mai 2005, 12:07
par seayoung
erf du taf je ne peux avoir acces a ton ftp
merci qd meme
Posté : 20 mai 2005, 12:10
par Cyrano
c'est du http, pas du ftp, un simple téléchargement de fichier..... attends un peu, je vais mettre le
formulaire sur un Wall
[Edit]Suivre le lien[/Edit]
Posté : 20 mai 2005, 14:09
par seayoung
je te remerci cyrano pour ton code tres riche en tout.
Toutefois mon fichier fait plus de 500 lignes et je me voit mal tout refaire pour jute une condition qui ne veut pas marcher normalement
Cependant j ai bien regardé ta condition qui ressemble relativement à la mienne ( sauf que toi tu traites des || et moi des && ).
Et je ne comprend pas prk il faut que dans mon imbrication que la premiere condition soit obligatoirement rempli pour que soit valider mon formulaire.

Posté : 20 mai 2005, 14:21
par Cyrano
Bon attends, il y a deux choses: if(isset($var)) et if($var == "") : rien ne t'interdit de vérifier les deux:
<?php
if((!isset($var1) || $var1 == "") && (!isset($var2) || $var2 == ""))
{
// traitement si toutes les conditions sont réunies
}
?>
C'est une autre possibilité plus stricte au cas où tu aurais des variables initialisées mais avec des chaines vides.
Posté : 20 mai 2005, 14:34
par seayoung
c'est pareil mais pire je ne comprend pas.
elle ne marche pas je ne voit pas pourkoi car plus loin je fais un echo de mes variable pour etre sure qu'elles existe il me les met mais ma condition
if (!isset($val['val']) && !isset($val['val2']))
// ou
if ((!isset($var1) || $var1 == "") && (!isset($var2) || $var2 == ""))
// ou encore
if (empty($val['val1']) && empty($val['val2'])) //qui reste celle qui \"marche\" le mieux
ne fonctionne jusqu'au bout
la je seche complet !!!!
Posté : 20 mai 2005, 14:39
par seayoung
je vais te laisser un pe plus de mon code ca va pe etre aider :
//champs2 : tableau ou sont stoker les valeur du formulaire
foreach ($champs2 as $champ)
{
//si le champ du formulaire est rempli ou si il est nul
if(!isset($_REQUEST[$champ]) or $_REQUEST[$champ] == '')
{
// on initialise les valeur
$val[$champ] = '';
// on effectue la condition
if (!isset($var1['val1']) && !isset($varl['val1']) &&
!isset($var1['val2']) && !isset($var1['val2'])
{
//la condition
}
//la suite du prog
Posté : 20 mai 2005, 14:51
par Cyrano
Juste avant la boucle, essaye donc un truc:
<?php
echo("<pre>");
var_dump($_REQUEST);
echo("</pre>\n");
ÇA va faire afficher le contenu exact de cette variable, tu seras fixé sur le contenu exact.
Posté : 20 mai 2005, 14:58
par seayoung
voila entre aute ce que ca m'affiche
["val1"]=>
string(0) ""
["val2"]=>
string(5) "fgcuj"
["val3"]=>
string(0) ""
["val4"]=>
string(0) ""
["val5"]=>
string(0) ""
["submit"]=>
string(0) ""
donc c bon j'ai bien un champ qui est renseigné ..
moi rien comprendre la

Posté : 20 mai 2005, 15:04
par Cyrano
Si dans ton formulaire tu as un champ avec une attribut value="valeur_quelconque", il est normal que tu la retrouve puisqu'elle est envoyée par défaut. : tu peux donc la traiter aussi et vérifier si c'est la valeur par défaut ou autre chose: si c'est par défaut, tu traite d'une manière, sinon, d'une autre manière
Posté : 20 mai 2005, 15:27
par seayoung
pour te résumer l'esprit du code :
j ai trois tableaux:
$champs[] ou je stoke le résutat des valeur de mon formulaire
$chps[] ou je met a koi correspond les champs du formulaire pour mon message d erreur.
et un qui est telque: $val=array()
dans ma boucle j 'attribue les valeur de $champs a une valeur quelconque $champ
foreach ($champs2 as $champ)
toutefois dans ma boucle de vérification au lieu de mettre quelque chose comme :
if ($champ=='val1' && !empty($champs[$champ]))
je suis passé directement a :
if ($val['val1'])
voila en gros le code. ou du moins son esprit :p