Page 1 sur 1

Une seule valeur ?

Posté : 25 mai 2010, 14:46
par albius
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,

Re: Une seule valeur ?

Posté : 25 mai 2010, 14:54
par Lupuz
Tu écrase ta variable $_SESSION['nBonCom'] avec 2 valeurs : une fois $nBonCom puis $searchNBonCom.

Re: Une seule valeur ?

Posté : 25 mai 2010, 15:25
par albius
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 ?

Posté : 25 mai 2010, 15:33
par Lupuz
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 ?

Posté : 25 mai 2010, 15:34
par macgawel
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 ?

Posté : 25 mai 2010, 15:50
par sadeq
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 ?

Posté : 25 mai 2010, 15:53
par albius
ok, d'accord... Excusez-moi, un coup de fatigue... #-o

Re: Une seule valeur ?

Posté : 25 mai 2010, 15:59
par sadeq
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.