Page 1 sur 1

syntaxe condition pour variables comprises entre 2 valeurs

Posté : 01 févr. 2006, 20:43
par spirou
Salut à tous,

J'ai une condition qui doit vérifiée si trois variables sont comprises entre 0 et 255.

J'ai fais comme ça :
if(($_POST['trouge'] && $_POST['tvert'] && $_POST['tbleu']) >=0 && <= 255)
Mais évidemment si je demande, c'est que ça ne fonctionne pas, j'ai un parse error T_IS_SMALLER_OR_EQUAL.

De qu'elle façon doit-on l'écrire ?

Ensuite j'aurais une seconde question, est-ce qu'une variable numérique égale à 0, sera aussi égale à 00 et à 000, et même question pour 1, 01, 001 ?

Merci.

Posté : 02 févr. 2006, 01:03
par jaolan
Question 1:
if(($_POST['trouge'] >=0 && $_POST['trouge'] <=255) && ($_POST['tvert'] >=0 && $_POST['tvert'] <=255) && ($_POST['tjaune'] >=0 && $_POST['tjaune'] <=255))
Question 2:

Desole, j'ai pas la reponse...
Mais j'ai une idee :idea:

Et si on demandait au PHP, qui dans son infinie sagesse saura peut-etre nous eclairer :?:
$v1 = 0; // un entier
$v2 = '0'; // une chaine
$v3 = '00';// une chaine


if($v1 == $v2)
        echo "Est-ce que 0 == '0'  ==> C'est VRAI<br>";
else
        echo "Est-ce que 0 == '0'  ==> C'est FAUX<br>";
if($v1 === $v2)
        echo "Est-ce que 0 === '0'  ==> C'est VRAI<br>";
else
        echo "Est-ce que 0 === '0'  ==> C'est FAUX<br>";

if($v1 == $v3)
        echo "Est-ce que 0 == '00'  ==> C'est VRAI<br>";
else
        echo "Est-ce que 0 == '00'  ==> C'est FAUX<br>";
if($v2 === $v3)
        echo "Est-ce que '0' === '00'  ==> C'est VRAI<br>";
else
        echo "Est-ce que '0' === '00'  ==> C'est FAUX<br>";
hAaa...PHP, on t'aime :oops:

Posté : 02 févr. 2006, 17:17
par spirou
Merci pour ta réponse :P

Mais dans la formulation de ma condition, ce que je cherchais, c'est justement à éviter la répétition de chaque variable et de chaque limitation.
Mais ça doit pas être possible.

Pour ton test, c'est vrai, j'aurais pu y penser :roll:
Mais ton test compare un numérique à une chaîne.

J'ai donc tester, et oui $v = 0; est bien égale à $v2 = 00;
Pareil pour 1 et 01.

:wink:

Posté : 03 févr. 2006, 00:42
par Truc
Mais dans la formulation de ma condition, ce que je cherchais, c'est justement à éviter la répétition de chaque variable et de chaque limitation.
Mais ça doit pas être possible.
pas directement mais avec une fonction peut être:
function interval($min,$max) 
{
	$args=func_num_args();	// récupération du nombre d'arguments passés à la fonction
	
	$ok= true; // initialisation du retour

	$i=2; // début des arguments a tester... les 2 premiers étant pour le min et max
	
	while( ($i<$args) && ($ok) ) // on boucle tant qu'on a pas parcouru tous les aruments ou qu'un des arguments ne respecte pas les conditions
	{	
		if((func_get_arg($i) < $min) || (func_get_arg($i) > $max)) // test si l'argument est compris entre min et max
		  {
		  $ok = false;		 
		  }		  
		$i++;		
	}		
	return $ok;
}

if(interval(100,200,100,155,190)) // ici min = 100 max= 200 et les valeurs a tester sont 100,155 et 190
    echo "ok";
else 
    echo "erreur";
bon c'est plus long mais bien plus facile à géner après 8)

Posté : 03 févr. 2006, 15:30
par spirou
Super !!

Ta fonction va m'être très utile, car dans ma page, je doit tester pas mal de fois cette condition.

Image

J'ai un nouveau problème, dans mon champ, je teste si le champ n'est pas vide avec !empty, mais lorsque je rentre une valeur de 0, il est considéré comme vide et me renvoi le message d'erreur.
if(!empty($_POST['trouge']) && !empty($_POST['tvert']) && !empty($_POST['tbleu']))
{
		if(is_numeric($_POST['trouge']) && is_numeric($_POST['tvert']) && is_numeric($_POST['tbleu']))
		{
				if(($_POST['trouge'] && $_POST['tvert'] && $_POST['tbleu']) >=0) //&& <= 255)
				{
						$trouge = $_POST['trouge'];
						$tvert = $_POST['tvert'];
						$tbleu = $_POST['tbleu'];
				}
				else
				{
						$erreur .= '6#';
				}
		}
		else
		{
				$erreur .= '7#';
		}
}
else
{
		$erreur .= '8#';
}
Comment contrôler si le champ n'est pas vide en acceptant la valeur 0 ?


Ensuite, j'ai encore une question, sans rapport avec mon problème qui concerne la sécurité.

Lorsque qu'un utilisateur entre une valeur dans un input text, je sais qu'il faut contrôler les données entrées minutieusement, ce que je voudrais savoir, est-ce que l'on doit aussi contrôler la valeur d'un select en définissant leurs valeurs autorisées dans un array ?

Est ce qu'un utilisateur mal intentionné peut modifier la valeur d'un select, d'une option ?
Pareil pour les checkboxs ?

Posté : 04 févr. 2006, 17:38
par spirou
Super avec ta fonction, ça fonctionne impec.

La prochaine fois j'essaierais de réfléchir afin d'en faire une moi-même, mais c'est pas gagné Image


Merci :wink: