Une seule valeur ?

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 : Une seule valeur ?

Re: Une seule valeur ?

par sadeq » 25 mai 2010, 15:59

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente.

Re: Une seule valeur ?

par albius » 25 mai 2010, 15:53

ok, d'accord... Excusez-moi, un coup de fatigue... #-o

Re: Une seule valeur ?

par sadeq » 25 mai 2010, 15:50

Voici la correction:

Puisque la variable de session $_SESSION['nBonCom'] doit avoir l'une des 2 valeurs soit de $nBonCom ou bien de $searchNBonCom, alors il ne faut pas utiliser la valeur NULL dans le 2 ième affectation pour ne pas écraser la première valeur de $_SESSION['nBonCom'] si $searchNBonCom n'existe pas. Comme ça:
if(!empty ($_POST['choiceNBonComBtn'])) {
    $nBonCom = !empty($_POST['listeNBonCom']) ? filter_var($_POST['listeNBonCom'], FILTER_SANITIZE_NUMBER_INT):NULL;
    $nBonCom = isset ($nBonCom) ? filter_var($nBonCom, FILTER_VALIDATE_INT) : NULL;
    $_SESSION['nBonCom'] = $nBonCom;
//
    $searchNBonCom = !empty ($_POST['searchNBonCom']) ? filter_var($_POST['searchNBonCom'], FILTER_SANITIZE_NUMBER_INT) : NULL;
    $searchNBonCom = isset ($searchNBonCom) ? filter_var($searchNBonCom, FILTER_VALIDATE_INT) : $_SESSION['nBonCom'];  // Modification ici
    $_SESSION['nBonCom'] = $searchNBonCom;
...

Re: Une seule valeur ?

par macgawel » 25 mai 2010, 15:34

C'est ce dont je me doutais, mais en même temps, je ne comprends toujours pas : je vérifie bien au préalable que cette variable existe bien (donc qu'elle soit utilisée) et qu'elle ne soit pas vide:
$nBonCom = !empty ($_POST['listeNBonCom']) ? ...
Dans ce cas, que faudrait-il que je fasse ?
Il dit qu'il ne voit pas le rapport...

Reprends ton code :
1. Tu affectes une valeur (ou NULL) à $nBonCom
2. Tu affectes $nBonCom à $_SESSION['nBonCom']
3. Tu affectes une valeur (ou NULL) à $searchNBonCom
4. Tu affectes $searchNBonCom à $_SESSION['nBonCom']

A la fin, quelle est la valeur de $_SESSION['nBonCom'] à ton avis ? :mrgreen:

Re: Une seule valeur ?

par Lupuz » 25 mai 2010, 15:33

remplace :
$_SESSION['nBonCom'] = $searchNBonCom;
par
$_SESSION['searchNBonCom'] = $searchNBonCom;

tu auras alors dans ta session :
$_SESSION['nBonCom'] contenant $nBonCom et $_SESSION['searchNBonCom'] contenant $searchNBonCom.

Re: Une seule valeur ?

par albius » 25 mai 2010, 15:25

C'est ce dont je me doutais, mais en même temps, je ne comprends toujours pas : je vérifie bien au préalable que cette variable existe bien (donc qu'elle soit utilisée) et qu'elle ne soit pas vide:
$nBonCom = !empty ($_POST['listeNBonCom']) ? ...
Dans ce cas, que faudrait-il que je fasse ?

Re: Une seule valeur ?

par Lupuz » 25 mai 2010, 14:54

Tu écrase ta variable $_SESSION['nBonCom'] avec 2 valeurs : une fois $nBonCom puis $searchNBonCom.

Une seule valeur ?

par albius » 25 mai 2010, 14:46

Bonjour,

J'ai un formulaire comportant une liste et un champ texte. Lorsque l'utilisateur valide, le script vérifie quelle est la variable qui est utilisée, la vérifie, et la met en session. Mais cette session est commune aux deux variables (elle servira par la suite pour une requête)
if(!empty ($_POST['choiceNBonComBtn'])) {
    $nBonCom = !empty($_POST['listeNBonCom']) ? filter_var($_POST['listeNBonCom'], FILTER_SANITIZE_NUMBER_INT):NULL;
    $nBonCom = isset ($nBonCom) ? filter_var($nBonCom, FILTER_VALIDATE_INT) : NULL;
    $_SESSION['nBonCom'] = $nBonCom;
//
    $searchNBonCom = !empty ($_POST['searchNBonCom']) ? filter_var($_POST['searchNBonCom'], FILTER_SANITIZE_NUMBER_INT) : NULL;
    $searchNBonCom = isset ($searchNBonCom) ? filter_var($searchNBonCom, FILTER_VALIDATE_INT) : NULL;
    $_SESSION['nBonCom'] = $searchNBonCom;
...
Et pour une raison que j'ignore encore, il n'y a que la variable $searchNBonCom qui est mise en session. ($nBonCom est pourtant bien créée et contient bien une valeur). Pourquoi donc ?
merci,