comment ajouter une option >= dans un if

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : comment ajouter une option >= dans un if

Re: comment ajouter une option >= dans un if

par xTG » 24 févr. 2011, 14:19

Tout simplement que $_REQUEST regroupe toutes les valeurs de $_POST, $_GET, $_SESSION et $_COOKIE.
Donc si tu as $_POST['id'] et $_GET['id'], bah à ton avis tu as lequel dans $_REQUEST['id'] ? Cela pose problème. ;)

Re: comment ajouter une option >= dans un if

par logtt » 24 févr. 2011, 14:05

J'ai bien pris en compte vos remarque quant au post / request mais j'ai encore test lorsque je mets post le formulaire ne fonctionne plus correctement :/ je sais pas pourquoi ... pourtant je suis bien en post et pas get... bilan j'vais rester avec request ... ca à le mérite de marcher.

merci pour votre aide et j'spr que le sujet pourra aider d'autre personne.

Re: comment ajouter une option >= dans un if

par AB » 24 févr. 2011, 03:45

Si ça fonctionne comme tu veux, c'est tant mieux, mais bon je suis pas convaincu qu'en mettant tout dans le code de la requête, ce soit plus simple et surtout plus lisible.
Cela dit, puisque tu utilises la méthode post, encore une fois, utilises $_POST['bonbon'] et pas $_REQUEST['bonbon']

Re: comment ajouter une option >= dans un if

par logtt » 23 févr. 2011, 14:58

après trois tentatives de suicide un amis m'a fait ca :
(ca marche mais j'y comprend rien pour être honnête)

si ca peut aider les futurs lecteur :

if (sizeof($_REQUEST['bonbon'])>0) {
$query .= "and (bonbon in (".mysql_real_escape_string(str_replace("5+","-1",join(",",$_REQUEST['bonbon']))).") ";
if (strpos(join(",",$_REQUEST['bonbon']),"5+") !== False) { $query .= " OR bonbon >=5 ";}
$query .= ")";

Re: comment ajouter une option >= dans un if

par Logtt » 22 févr. 2011, 12:03

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

Re: comment ajouter une option >= dans un if

par AB » 11 févr. 2011, 21:21

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

par p0k3 » 11 févr. 2011, 09:23

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

par xTG » 10 févr. 2011, 21:36

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

par AB » 10 févr. 2011, 21:24

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

par LogTt » 10 févr. 2011, 19:41

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

par AB » 10 févr. 2011, 18:43

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

par xTG » 10 févr. 2011, 00:16

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

par logtt » 09 févr. 2011, 23:32

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

par Logtt » 09 févr. 2011, 23:24

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

par logtt » 09 févr. 2011, 23:21

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