conditions imbriquée

Eléphant du PHP | 357 Messages

20 mai 2005, 11:37

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.

Eléphant du PHP | 281 Messages

20 mai 2005, 11:47

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
}

Mammouth du PHP | 19672 Messages

20 mai 2005, 11:47

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".
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 357 Messages

20 mai 2005, 11:55

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 &&. :wink:

Mammouth du PHP | 19672 Messages

20 mai 2005, 12:00

Récupère mon formulaire pour voir comment je traite ce genre de cas, ce sera plus pratique que de longues explications ici.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 357 Messages

20 mai 2005, 12:07

erf du taf je ne peux avoir acces a ton ftp :cry:
merci qd meme

Mammouth du PHP | 19672 Messages

20 mai 2005, 12:10

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]
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 357 Messages

20 mai 2005, 14:09

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 :oops:
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.

:roll:

Mammouth du PHP | 19672 Messages

20 mai 2005, 14:21

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 357 Messages

20 mai 2005, 14:34

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 !!!!

Eléphant du PHP | 357 Messages

20 mai 2005, 14:39

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

Mammouth du PHP | 19672 Messages

20 mai 2005, 14:51

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 357 Messages

20 mai 2005, 14:58

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 :cry:

Mammouth du PHP | 19672 Messages

20 mai 2005, 15:04

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 357 Messages

20 mai 2005, 15:27

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