test if

Eléphant du PHP | 107 Messages

25 juin 2008, 17:03

bonjour

dans une page jai deux listes déroulantes par exemple

L'execution d'une requete se fait en fonction des valeurs récupérés de ces 2 listes
i
f($btn!=)
{
if($val1=1)
{
$req1
}else{
$req2
}
}
mon probleme c'est que quand je modifie la valeur de ma seconde liste et je clique sur le bouton

$req1 est toujours executé evidement parce que $val1=1
Quest ce que je devrai ecrire pour qu'il ne prend plus en compte if($val1=1) quand je clique sur le bouton $btn

merci

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphant du PHP | 396 Messages

25 juin 2008, 17:07

Je crois que tu as gagné la palme du post le moins compréhensible pour aujourd'hui.
Peux-tu être plus clair?

Essaye aussi d'indenter ton code pour le rendre plus présentable.

Mammouth du PHP | 1352 Messages

25 juin 2008, 17:08

Pour comparer une valeur on utilise l'opérateur == .
if($val==1)
L'opérateur = est une affection, donc ca sera toujours vrai et ca donnera 1 comme valeur à ta variable.


EDIT :
Je crois que tu as gagné la palme du post le moins compréhensible pour aujourd'hui.
J'en suis pas sûr, la concurrence est rude :D :D
Dernière édition par guilt92 le 25 juin 2008, 17:11, édité 1 fois.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 514 Messages

25 juin 2008, 17:09

De toute manière, la syntaxe de ton IF est complètement fausse.

Outre le == manquant, tu oublies le else if, et tu ne compares à rien en faisant : f($btn!=).

!= signifie "différent de", il doit être suivi de quelque chose.
Ne jamais repousser à demain ce qu'on peut faire après demain ...

Eléphant du PHP | 107 Messages

27 juin 2008, 09:35

Bonjour

Je reformule mon poste si je me suis mal exprimé

Voilà

jai une page avec deux liste déroulante et un bouton
<form action="traite.php">
<select name="valeur" >
<option value="1ou0">Oui/non </option>
</select>
<select name="valeur1" >
<option value="1ou0">Oui/non </option>
</select>
<input type="button" name="btn">
</form>
dans traite.php jai un probleme.
voici le code
$nbPERSON=10 //valeur récupérée dans la base
$nbLIMIT=10 //valeur récupérée dans la base

if ($btn!=""  && $valeur==1 && $nbPERSON==$nbLIMIT )//Condition1
{		
  $err="impossible";
}
else
{
$req=.... 
}
Mon probleme c'est que
quand je modifie la liste deroulante $valeur1 et je clique sur le bouton ça tombe toujours dans $err="impossible" evidement parceque la condition 1 est toujours verifié et c'est là mon probleme.

Je veux donc modifier la liste deroulante $valeur1 alors que la condition1 doit être toujours vraie

merci pour votre aide :)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 1352 Messages

27 juin 2008, 09:49

Comment récupères tu $valeur1 dans ton traitement ?

Parce que la $valeur1 ne peut valoir que "1ou0" normalement...


Soit dit en passant je comprend pas ce que tu veux faire, ne faudrait il pas 2 options dans tes select ? un oui et un non ? parce que la un choix avec une seule valeur possible c'est pas vraiment un choix...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 107 Messages

27 juin 2008, 09:57

voici comment je récupere $valeur1 dans mon select

<select name="valeur1" class="espARIALx08">
<?	$cochez="";
	if ($valeur1=="") {$valeur1=1;}
	for ($i=0;$i<2;$i++)
	{	if ($i==$valeur1) {$cochez="selected";} else {$cochez="";}	
?>
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

ViPHP
ViPHP | 5884 Messages

27 juin 2008, 09:58

Déjà pour commencer utilise les superglobales $_POST et $_GET pour récupérer les entrées du script. Ta manière de faire n'est pas du tout correcte.
Ensuite dans tous les cas, poiur savoir si une variable est définie ou non, on ne fait pas $variable!="" parce que si tu affichais les erreurs, tu verrais une magnifique NOTICE à cet endroit, et parce que même si elle est définie, elle peut être nulle. Et c'est le cas ici, tu ne lui donnes pas de valeur dans le formulaire, donc soit elle n'est pas définie, soit elle a pour valeur "", donc ton test est toujours vérifié. Donc utilises isset() plutôt pour faire ce genre de tests...

Eléphant du PHP | 107 Messages

27 juin 2008, 10:19

jai fait comme ça mais ça ne marche toujours pas
$nbPERSON=10 //valeur récupérée dans la base
$nbLIMIT=10 //valeur récupérée dans la base

if (isset($_POST['btn'])  && isset($_POST['valeur']) && $nbPERSON==$nbLIMIT )//Condition1
{        
  $err="impossible";
}
elseif(isset($_POST['btn'])  && isset($_POST['valeur']) && $nbPERSON==$nbLIMIT && isset($_POST['valeur1']) )//Condition1
{
$req=.... 
}
Je transmet les valeur par POST et type de bouton submit

Merci

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 1352 Messages

27 juin 2008, 10:31

Cela n'est pas tout a fait correct.

Pour l'instant tu es dans la configuration suivante :

Code : Tout sélectionner

SI ( A, B, C) ALORS erreur SINON SI (A, B, C, D) alors autre_chose

Tu vois bien qu'il y a redondance dans la condition : SI A,B,C on va rentrer uniquement dans la premiere condition a cause du SINON donc on a aucune chance de rentrer dans la condition 2.

L'idée serait de faire :

Code : Tout sélectionner

SI(A,B,C) SI(D) ALORS action1 SINON ALORS action2 FIN SI(A,B,C)
Englober ta seconde condition dans la premiere, ainsi si A,B,C alors tu rentres dans la premiere condition et tu fais varier la seconde au sein de cette boucle...

j'espère être clair...

Aussi, le isset() te permet de tester si une variable existe, mais elle ne compare pas sa valeur... il te faudra peut etre faire d'autres condition apres pour tester la valeur, ou au moins remplacer tes isset() par des !empty() (voir la fonction empty()) :)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 107 Messages

27 juin 2008, 13:53

je suis completement bloqué si vous avez des suggestions un grand merci
Je n'arrive pas à différencier mes deux conditions
voici le code

if ($btn!="")
{
	
	
		
	    if(isset($_POST['valeur']) && $nbPERSON==$nbLIMIT)
		 {
	    
		  $err=$message;
		  
		 }else
	
		  {
				$req=..;
}
}
svp merci pour votre suggéstion

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphant du PHP | 107 Messages

02 juil. 2008, 10:16

bonjour

jai trouvé la solution

je vous montre l'algorithme que jai uitilisé
SI(A,B,C)
    SI(D)
        ALORS action1
    SINON
        ALORS action2
SINON
action2
merci

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphant du PHP | 396 Messages

02 juil. 2008, 10:33

J'en profite pour rappeler que la conception (algo etc...) doit se faire bien avant tout codage et quon estime qu'elle doit représenter plus de la moitié du temps passé sur un projet.
Si tu avais pris un peu de temps pour concevoir cet algorithme tranquillement comme tu le présentes dans ton dernier message (sur papier par exemple) avant de te lancer dans le codage (toujours tentant de partir bille en tête :) ), tu aurais déjà bien avancé sur autre chose ;)