[RESOLU] SESSION PHP - passage de valeurs entres variables de session

Eléphanteau du PHP | 16 Messages

17 oct. 2016, 13:36

Bonjour,

Alors voila , je doit passer la valeur d'une variable de session dans un autre variable de session, la supprimer, puis refaire ça dans l'autre sens.
Seul problème , l'une des variables ne prend pas la valaur et l'autre ne s'UNSET pas ...

Voila le code:
Cette partie fonctionne correctement :

Code : Tout sélectionner

//On retire l'id utilisateur pour pouvoir afficher la div du formulaire $_SESSION['save_id_utilisateur'] = $_SESSION['select_user_Id']; unset($_SESSION['select_user_Id']); //on retire l'id de l'ordre de mission enregistré en dernier $_SESSION['id_om_modif'] = $_SESSION['idDernierOrdre']; unset($_SESSION['idDernierOrdre']);
Celle ci par contre .... me pose un soucis cosmique ( et pas comique ! pour le moment...):

Code : Tout sélectionner

$_SESSION['idDernierOrdre'] = $_SESSION['id_om_modif']; unset($_SESSION['id_om_modif']); $_SESSION['select_user_Id'] = $_SESSION['save_id_utilisateur']; unset($_SESSION['save_id_utilisateur']);
Celui ci me garde
$_SESSION['id_om_modif']
ne cré pas
$_SESSION['idDernierOrdre']
mais passe bien la valeur dans
$_SESSION['select_user_Id']
mais sans supprimer
$_SESSION['save_id_utilisateur']
Affichage des variables de session:

Code : Tout sélectionner

'save_id_utilisateur' => string '26' (length=2) 'id_om_modif' => string '128' (length=3) 'select_user_Id' => string '26' (length=2)
Si une âme charitable est disponible, je suis preneur.
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 oct. 2016, 14:20

salut,

tu n'as que ça comme code ?

parce juste le code en lui même fonctionne comme tu le souhaites
<?php
$_SESSION['id_om_modif'] = 42;
$_SESSION['save_id_utilisateur'] = 666;
$_SESSION['idDernierOrdre'] = $_SESSION['id_om_modif'];
unset($_SESSION['id_om_modif']);
$_SESSION['select_user_Id'] = $_SESSION['save_id_utilisateur'];
unset($_SESSION['save_id_utilisateur']);

var_dump($_SESSION);
donne

Code : Tout sélectionner

array(2) { ["idDernierOrdre"]=> int(42) ["select_user_Id"]=> int(666) }
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 16 Messages

17 oct. 2016, 14:43

Je vais essayer de détailler le fonctionnement de mon code:
page1 envoie un formulaire, entré en BDD et génération d'un pdf .
Ici
$_SESSION['select_user_Id'] = UnNombre et $_SESSION['idDernierOrdre'] = IdDe LentréeEnBDD
Le fait d'avoir $_SESSION['select_user_Id'] cache le formulaire et affiche le pdf ( avec $_SESSION['idDernierOrdre'] ). ( c'est la que mes bascules entre variables de session entrent en compte)
On a le choix : enregistrer / modifier / supprimer
enregistrer et supprimer c'est ok et ça renvoie vers page 1 en supprimant les variables de session sans aucuns soucis.
Mon soucis est dans la modification :
cliquer sur modifier renvoie vers page2 avec les changements suivant au niveau des variables de session :

Code : Tout sélectionner

//On retire l'id utilisateur pour pouvoir afficher la div du formulaire $_SESSION['save_id_utilisateur'] = $_SESSION['select_user_Id']; unset($_SESSION['select_user_Id']); //on retire l'id de l'ordre de mission enregistré en dernier $_SESSION['id_om_modif'] = $_SESSION['idDernierOrdre']; unset($_SESSION['idDernierOrdre']); header('Location:/notes_de_frais_cdg05/pages/modifier_odm.php');
La aucun soucis , mes variables sont bien crées et supprimées.
Une foi les modifications apportées, on valide l'envoie du formulaire et là je dois réinverser mes variables comme suit pour masquer le formulaire et afficher le pdf:

Code : Tout sélectionner

$_SESSION['idDernierOrdre'] = $_SESSION['id_om_modif']; unset($_SESSION['id_om_modif']); $_SESSION['select_user_Id'] = $_SESSION['save_id_utilisateur']; unset($_SESSION['save_id_utilisateur']);
Mais ça ne fonctionne pas, le formulaire est caché mais le pdf ne s'affiche pas et j'ai ceci dans mon array :

Code : Tout sélectionner

'save_id_utilisateur' => string '26' (length=2) 'id_om_modif' => string '130' (length=3) 'select_user_Id' => string '26' (length=2)

$_SESSION['idDernierOrdre']
n'a pas pris la valeur de $_SESSION['id_om_modif'], qui lui n'est pas unset tout comme $_SESSION['save_id_utilisateur'] qui par contre a bien donné sa valeur à $_SESSION['select_user_Id'] .
Je ne comprends pas pourquoi la première bascule fonctionne et pas la seconde ...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 oct. 2016, 10:05

il faut le code autours, peux être que tu ne pas simplement pas par cette branche de code.
tous ce que je peux te dire c'est que les 4 lignes ne sont pas en causes.
est ce que tu as bien un session_start() ?
est ce qu'il y a un if avant qui conditionne cela ?
est ce que tu n'aurais pas un warning masqué (error_reporting = E_ALL et display_error = on obligatoire en dev ;) ).

les pistes sont minces avec 4 lignes de code. Je pense pour l'un des problèmes si dessus.

@+
Il en faut peu pour être heureux ......