Page 1 sur 2

comment ajouter une option >= dans un if

Posté : 09 févr. 2011, 18:45
par LoGtT
Bonjour,

comme la rubrique l'indique je suis un noob! mais l'avantage c'est qu'il me semble que mon problème est facile à résoudre ;)

Je propose des checks box avec les options suivantes :

combien tu as de bonbon(s) ?
1
2
3
4
5+

vue que je suis un noob super fort j'ai déjà mon if qui prend l'addition de résultat ( au cas ou philippe aurait 2 et 3 bonbons :s on sait jamais!)
ce qui me donne :

if (strlen($_REQUEST['bonbon'])>0)
{ $query .= "and bonbon in (".mysql_real_escape_string(join(",",$bonbon)).") "; }

CEPENDANT !!! ( oui on y vient :D ) question bête comment je peux faire pour dire que l'option 5+ doit correspondre à >=5 bonbons ???
car la actuellement si je coche 5+ ( et même si j'ai une réponse 6) rien ne s'affiche car y connait pas le zigoto "5+" ... :/

j'aurais bien rajouter un if pour dire :
if $_REQUEST['bonbon']=5+
{ $query >= "5 bonbon" }

(oui c'est moche :D tes yeux piques unh!)


Merci d'avance pour le coup de PouCe :)

Re: comment ajouter une option >= dans un if

Posté : 09 févr. 2011, 18:57
par xTG
Tu as pourtant vu juste dans ta réflexion. =D>
if (strlen($_REQUEST['bonbon'])>0 && $_REQUEST['bonbon'] != "5+")
  $query .= "and bonbon in (".mysql_real_escape_string(join(",",$bonbon)).") ";
else // cas du 5+
  $query .= "and bonbon >= 5";

Re: comment ajouter une option >= dans un if

Posté : 09 févr. 2011, 19:24
par AB
Au passage évite d'utiliser $_REQUEST. Utilises plutôt $_GET ou $_POST suivant ce que tu as déclaré dans la balise "action" de ton formulaire.

Re: comment ajouter une option >= dans un if

Posté : 09 févr. 2011, 23:01
par Logtt
ahah super merci pour votre être je fonce essayer ca :D

Re: comment ajouter une option >= dans un if

Posté : 09 févr. 2011, 23:21
par logtt
je suis en post. mais pourquoi c'est mieux de mettre post au lieu de request ? AB ?

sinon GTX on tient quelque chose mais y manque le petit grain de sel magique ... j'ai bien mis ton code :
if (strlen($_REQUEST['bonbon'])>0)
{ $query .= "and bonbon in (".mysql_real_escape_string(join(",",$bonbon)).") "; }
else // cas du 5+
{ $query .= "and bonbon >= 5"; }
(première utilisation de balise dans un forum hope that will work :s)

mais dilem! si je coche +5 il n'y a rien ! (sisi)
et quand je ne coche rien j'ai bien mon numero 6 ...
du coup ce code remplace mon option "-1" (= pas de réponse) et qui me sortait tous les résultats possibles ...

donc il faudrait pouvoir ajouter : la condition " si tu as recu +5" la tu mets le résultat.


de mon côté j'ai tenté de faire un "code triche" :
if (strlen($_REQUEST['bonbon'])>0)
{ $query .= "and bonbon in (".mysql_real_escape_string(join(",",$bonbon)).") "; }
elseif (strlen($_REQUEST['bonbon'])>1)
{ $query .= "and bonbon >= 5" ; }
l'objectif étant de lui dire si tu vois que tu as plus de deux caractère (du coup que ca soit +5 ou 16 ou 82 ca reviendrait au même :/) tu m'affiches tout les résultats +5
mais sans succès :(

Re: comment ajouter une option >= dans un if

Posté : 09 févr. 2011, 23:24
par Logtt
mince j'ai pas vue que tu avais mis un morceau de code au début :s
et j'peux pas supprimer mon gros paté :s

j'retourne test :s

Re: comment ajouter une option >= dans un if

Posté : 09 févr. 2011, 23:32
par logtt
bon boh non :/

quand meme pas avec :
if (strlen($_REQUEST['bonbon'])>0 && $_REQUEST['bonbon'] != "5+")
  $query .= "and bonbon in (".mysql_real_escape_string(join(",",$bonbon)).") ";
else // cas du 5+
  $query .= "and bonbon >= 5";

:/

Re: comment ajouter une option >= dans un if

Posté : 10 févr. 2011, 00:16
par xTG
Remplaces tes $_REQUEST par $_POST déjà, la variable $_REQUEST est dépréciée il me semble, car elle permet d'accéder à toutes les super-globales à la fois et ça fout le tintouin.

Ensuite fais donc un echo de la variable $_POST['bonbon'] en ayant sélectionné l'option 5+ et tu pourras corriger le code en conséquence.

Re: comment ajouter une option >= dans un if

Posté : 10 févr. 2011, 18:43
par AB
Pour poursuivre un peu l'explication de xTG si tu clique sur ce lien tu constate que $_REQUEST retourne les variables $_GET, $_POST et $_COOKIE.
Donc dans cette configuration, même si tu as déclaré la méthode $_POST dans ton formulaire (ce qui est recommandé) on pourra faire fonctionner ton code en rentrant comme adresse dans le navigateur : "http://www.tonsite.com/tapage.php?bonbon=4" puisque cela va générer une variable $_GET['bonbon']=4 qui sera interprétée par $_REQUEST. Bref c'est une faille dans ton code d'une part, et d'autre part cela t'interdit d'utiliser dans ton code une variable $_GET['bonbon'] ou $_COOKIE['bonbon'] (pour les même raisons car il y aura confusion de la part de $_REQUEST).

Donc il est plus que recommandé de récupérer le même type de variable que l'on a envoyée :wink:
Par exemple :

$bonbon = isset($_GET['bonbon']) ? $_GET['bonbon'] : 'valeur par défaut';

et ensuite tu travaille avec $bonbon

Re: comment ajouter une option >= dans un if

Posté : 10 févr. 2011, 19:41
par LogTt
ok merci :) j'vais corriger déjà cette faille :)
sinon j'ai fait un var dump ( j'présume que ca rend la meme chose que le echo) et le résultat est :

["piece"]=> array(1) { [0]=> string(2) "5+" }

du coup ca m'avance pas beaucoup plus :/ ta proposition me plaisait bien tu as une idée du pourquoi elle ne marche pas ?

Re: comment ajouter une option >= dans un if

Posté : 10 févr. 2011, 21:24
par AB
C'est pas prudent d'utiliser strlen car tu auras des problèmes si tu utilise l'utf8, et je vois pas pourquoi tu t'embête avec ça.
Pourquoi ne pas faire plus simple en renvoyant le nombre 5 dans le choix 5+ parce que là tu arrives à compliquer quelque chose de simple à l'origine. Ainsi tu pourrais faire :
<?php
// pour voir le contenu du post
echo '<pre>';
print_r($_POST);
echo '</pre>';

$bonbon = isset($_POST['bonbon'])? intval($_POST['bonbon']) : null;

if (isset($bonbon))
	{
		//...
		
		if ($bonbon >= 5) 
			{
			//ton code;
			}
			else  
			{
			//ton code;
			}
	}

?>

Et puis tu as apparemment un problème de choix des input car par principe les checkbox sont fait pour des choix multiples (on peut cocher plusieurs checkbox) or dans ton exemple tel que tu l'énonce il faudrait faire un choix unique donc ce sont les boutons radio qui sont prévus pour ça (ou un select simple).

Re: comment ajouter une option >= dans un if

Posté : 10 févr. 2011, 21:36
par xTG
ok merci :) j'vais corriger déjà cette faille :)
sinon j'ai fait un var dump ( j'présume que ca rend la meme chose que le echo) et le résultat est :

["piece"]=> array(1) { [0]=> string(2) "5+" }

du coup ca m'avance pas beaucoup plus :/ ta proposition me plaisait bien tu as une idée du pourquoi elle ne marche pas ?
L'accès actuel à la valeur est donc incorrect.
Pour avoir le 5+ il faut faire : $_POST['bonbon']['piece'][0]
Assez bizarre comme variable... Il serait bon de revoir le formulaire et d'y inclure les conseils de AB. ;)

Re: comment ajouter une option >= dans un if

Posté : 11 févr. 2011, 09:23
par p0k3
Tu as essayé avec un switch ?
$bonbon = $_POST['bonbon'];

switch($bonbon){
case 1 :
case 2 :
case 3 :
case 4 :
//code à effectuer quand on selectionne 1, 2, 3 ou 4;
break;

default :
//code à effectuer quand on selectionne 5+
break;

}

Non ?

Re: comment ajouter une option >= dans un if

Posté : 11 févr. 2011, 21:21
par AB
Tu as essayé avec un switch ?
$bonbon = $_POST['bonbon'];

switch($bonbon){
case 1 :
case 2 :
case 3 :
case 4 :
//code à effectuer quand on selectionne 1, 2, 3 ou 4;
break;

default :
//code à effectuer quand on selectionne 5+
break;

}

Non ?
C'est correct, mais ce n'est pas la meilleure utilisation de switch car dans ce cas le parseur va comparer la valeur de $bonbon avec les quatre 4 cases (revient à faire quatre "if").
Si on peut remplacer par une seule condition c'est mieux.
Par exemple si Logtt tient à renvoyer 5+ comme valeur dans son formulaire, on pourrait faire simplement :
<?php
// pour voir le contenu du post
echo '<pre>';
print_r($_POST);
echo '</pre>';

$bonbon = isset($_POST['bonbon'])? $_POST['bonbon'] : null;

if (isset($bonbon))
	{
		//...
		
		if (is_numeric($bonbon)) 
			{
			echo 'yes';
			}
			else  
			{
			echo 'no';
			}
	}
?>
Ici la condition pour tester la valeur de $bonbon se résume au seul test de is_numeric. On pourrait être plus rigoureux en faisant :
if (is_numeric($bonbon) && $bonbon < 5 && $bonbon > 0)
Au total trois conditions mais qui n'augmenteront pas si on augmente le nombre de choix alors que dans ton exemple tu devras compléter ton switch avec autant de lignes. :wink:

Re: comment ajouter une option >= dans un if

Posté : 22 févr. 2011, 12:03
par Logtt
hello!

j'reviens de "vacance" :D, bon j'avoue que d'avoir quitté mon ami php pendant une semaine je suis noyé là :D. Merci pour vos conseils je vais essayer de bien comprendre ce que AB à expliqué pour le mettre en place :).