[Résolu] Problème : Menu déroulant Js, session_destroy().
11 messages
• Page 1 sur 1
-

mikaelka - Nouveau WRInaute

- Messages: 30
- Inscription: 24 Déc 2007
[Résolu] Problème : Menu déroulant Js, session_destroy().
Bonjour,
je solicite votre aide pour des problème que j'ai sur un projet de php, j'ai deux problèmes persistants.
1 - Le premier est que j'ai un menu sorte de menu déroulant :
J'ai deux soucis sur celui-ci :
- Le premier est que il faut cliquer deux fois lors de "la première fois" pour que le menu se déroule mais après un clic suffit pour ouvrir ou fermer.
- Le deuxième soucis je voudrais faire en sorte de prendre en charge l'état dans lequel étais le menu à la page précédente si l'utilisateur clique sur un lien.
2 - J'ai un autre problème qui n'a rien avoir (ou presque) concernant le session_close() :
Ce code déconnecte un utilisateur en tuant toutes les variables de session de l'utilisateur (normal.. enfin je pense ^^) mais il faut que je clique deux fois pour que mes variables de session n'existe plus... Voici le test que j'effectue pour afficher ou non la connexion :
NOTE : J'utilise un serveur ORACLE.
En vous remerciant d'avance, j'espère avoir été assez conçis dans mes explications
je solicite votre aide pour des problème que j'ai sur un projet de php, j'ai deux problèmes persistants.
1 - Le premier est que j'ai un menu sorte de menu déroulant :
- Code: Tout sélectionner
function appear (elem_id)
{
var elem = document.getElementById (elem_id);
if (elem.style.display == "none"){
elem.style.display = "block";
}
else{
elem.style.display = "none";
}
}
J'ai deux soucis sur celui-ci :
- Le premier est que il faut cliquer deux fois lors de "la première fois" pour que le menu se déroule mais après un clic suffit pour ouvrir ou fermer.
- Le deuxième soucis je voudrais faire en sorte de prendre en charge l'état dans lequel étais le menu à la page précédente si l'utilisateur clique sur un lien.
2 - J'ai un autre problème qui n'a rien avoir (ou presque) concernant le session_close() :
- Code: Tout sélectionner
function deconnexion()
{
session_destroy();
home();
}//deconnexion
Ce code déconnecte un utilisateur en tuant toutes les variables de session de l'utilisateur (normal.. enfin je pense ^^) mais il faut que je clique deux fois pour que mes variables de session n'existe plus... Voici le test que j'effectue pour afficher ou non la connexion :
- Code: Tout sélectionner
if (! isset ($_SESSION['AUTHENTIFICATION'])){
//traitement
}else{
//traitement
}
NOTE : J'utilise un serveur ORACLE.
En vous remerciant d'avance, j'espère avoir été assez conçis dans mes explications
Dernière édition par mikaelka le Sam Fév 23, 2008 22:25, édité 1 fois.
-

zeb - WRInaute accro

- Messages: 4566
- Inscription: 5 Déc 2004
Re: Problème : Menu déroulant Js, session_destroy().
mikaelka a écrit:- Le premier est que il faut cliquer deux fois lors de "la première fois" pour que le menu se déroule mais après un clic suffit pour ouvrir ou fermer.
- Le deuxième soucis je voudrais faire en sorte de prendre en charge l'état dans lequel étais le menu à la page précédente si l'utilisateur clique sur un lien.
est tu certain qu'a l'affichage initial de la page (avant de cliquer 2 fois) elem_id a un style display comme il faux ? *
pour passer l'état du menu d'une page a l'autre, une variable de session serait pratique. (voir un champ hidden dans la page aussi)
une url serait pas mal aussi pour pouvoir 'voir le problème'
* edit -> si l'élément est pas a none au départ, le premier clic va le passer a none (donc le menu n'appariait pas) le second clic va l'ouvrir
-

cmpc2002 - Nouveau WRInaute

- Messages: 44
- Inscription: 19 Mai 2006
Re: Problème : Menu déroulant Js, session_destroy().
Bonjour,
Pour que cela fonctionne, tu doit déclarer ton élément comme ça :
Ainsi, il est en display none et quand tu cliquera, il s'affichera
invercément, si il doit être visible, tu le déclare comme ça :
Normalement, cela devrait fonctionner.
Içi, avant le session_destroy(); , il faut faire aussi, un $_SESSION = array();
Ainsi, tu est certain que la session sera complètement détruite.
Cordialement.
mikaelka a écrit:1 - Le premier est que j'ai un menu sorte de menu déroulant :
- Code: Tout sélectionner
function appear (elem_id)
{
var elem = document.getElementById (elem_id);
if (elem.style.display == "none"){
elem.style.display = "block";
}
else{
elem.style.display = "none";
}
}
Pour que cela fonctionne, tu doit déclarer ton élément comme ça :
- Code: Tout sélectionner
<div id="element" style="display=none;">blablabla</div>
Ainsi, il est en display none et quand tu cliquera, il s'affichera
invercément, si il doit être visible, tu le déclare comme ça :
- Code: Tout sélectionner
<div id="element" style="display=block;">blablabla</div>
Normalement, cela devrait fonctionner.
mikaelka a écrit:2 - J'ai un autre problème qui n'a rien avoir (ou presque) concernant le session_close() :
- Code: Tout sélectionner
function deconnexion()
{
session_destroy();
home();
}//deconnexion
Ce code déconnecte un utilisateur en tuant toutes les variables de session de l'utilisateur (normal.. enfin je pense ^^)
Içi, avant le session_destroy(); , il faut faire aussi, un $_SESSION = array();
Ainsi, tu est certain que la session sera complètement détruite.
Cordialement.
Dernière édition par cmpc2002 le Lun Déc 31, 2007 10:27, édité 2 fois.
-

zeb - WRInaute accro

- Messages: 4566
- Inscription: 5 Déc 2004
Re: Problème : Menu déroulant Js, session_destroy().
mikaelka a écrit:
- Code: Tout sélectionner
function deconnexion()
{
session_destroy();
home();
}//deconnexion
faudrais voir ce que fait la fonction home() car si elle affiche une page X ou Y sans renvoyer le header de la page, la session ne sera pas détruite (car tu sera toujours dans ta page de destruction de session.
-

mikaelka - Nouveau WRInaute

- Messages: 30
- Inscription: 24 Déc 2007
Merci a vous deux vous vous complétez très bien
zeb >> J'appel bien le rafraichissement entier de la page le problème ne venait pas de la.
cmpc2002 >> C'est bien de là que venait mon problème de session :
Pour ce qui est du Js le problème venait du fait que je déclarer pas le style dans la page mais dans le css et donc il ne le prenait pas en compte.
Errata :
doit être pris comme
(Si d'autre personne sont intéressé par ce sujet
)
zeb >>
Pour le JS, j'avais bien initialisé le display et merci pour la solution a l'état au changement de page je n'avais pas pensé au champ hidden pour cette utilisation
Je vous tiens au courant pour ceux que sa intéressent.
Merci à tous
zeb >> J'appel bien le rafraichissement entier de la page le problème ne venait pas de la.
cmpc2002 >> C'est bien de là que venait mon problème de session :
Içi, avant le session_destroy(); , il faut faire aussi, un $_SESSION = array();
Ainsi, tu est certain que la session sera complètement détruite.
Pour ce qui est du Js le problème venait du fait que je déclarer pas le style dans la page mais dans le css et donc il ne le prenait pas en compte.
Errata :
- Code: Tout sélectionner
<div id="element" style="display=none;">blablabla</div>
doit être pris comme
- Code: Tout sélectionner
<div id="element" style="display : none;">blablabla</div>
(Si d'autre personne sont intéressé par ce sujet
zeb >>
pour passer l'état du menu d'une page a l'autre, une variable de session serait pratique. (voir un champ hidden dans la page aussi)
Pour le JS, j'avais bien initialisé le display et merci pour la solution a l'état au changement de page je n'avais pas pensé au champ hidden pour cette utilisation
Je vous tiens au courant pour ceux que sa intéressent.
Merci à tous
-

mikaelka - Nouveau WRInaute

- Messages: 30
- Inscription: 24 Déc 2007
Je relance ce topic puisque je rencontre a nouveau un problème.
Le javascript n'étant pas trop mon truc j'ai décider de bidouiller une fonction qui récupère l'état du display de mon sous-menu à afficher et qui le renvoie :
à l'utilisation sa donne sa pour tester si l'élément étais a block à la page précédente alors on affiche display : block; sinon none :
Voilà enfin c'est plus une vision idéaliste de mon bout de code que la réalitée puisque sa ne marche pas ^^.
Merci encore
Le javascript n'étant pas trop mon truc j'ai décider de bidouiller une fonction qui récupère l'état du display de mon sous-menu à afficher et qui le renvoie :
- Code: Tout sélectionner
function getStatus(elem_id)
{
var elem = document.getElementById (elem_id);
return elem.style.display;
}
à l'utilisation sa donne sa pour tester si l'élément étais a block à la page précédente alors on affiche display : block; sinon none :
- Code: Tout sélectionner
echo <<< END
<div id="menu">
<img height="100" width="100" src="../Upload/logomini.png" onclick="../Php/phototeque.php?EX=home"/>
<ul>
<li><a href="../Php/phototeque.php?EX=home">home</a></li>
<li><a href="#" onclick="appear('categories')">Themes</a></li>
<script language="javascript">
if (getStatus('categories') == "none"){
document.write('<div id = "categories" style="display : none;">');
}else{
document.write('<div id = "categories" style="display : block;">');
}
</script>
<li><a class = "categorie" href="../Php/phototeque.php?EX=vignettes">themes</a></li>
<li><a class = "sous-categorie" href="../Php/phototeque.php?EX=Avion">sous-theme</a></li>
<li><a class = "sous-categorie" href="../Php/phototeque.php?EX=Avion">sous-theme</a></li>
<li><a class = "categorie" href="../Php/phototeque.php?EX=Avion">themes</a></li>
</div>
END;
Voilà enfin c'est plus une vision idéaliste de mon bout de code que la réalitée puisque sa ne marche pas ^^.
Merci encore
-

cmpc2002 - Nouveau WRInaute

- Messages: 44
- Inscription: 19 Mai 2006
re,
Je ne pense pas qu'il soit possible de récupérrer l'état de la variable pour une page visitée précédement de cette façon;
Parcontre, en javascript, on peut créer et lire des cookies.
A mon avis, dans ta fonction qui permet d'afficher ou cacher le code, tu devrait créer un cookies dans le quel tu socque l'état de ton bloc.
Parcontre, je ne peut pas t'aider pour les cookies javascript, je n'ai jamais utilisé cela.
[edit :j'ai trouvé cette page qui m'as l'air de bien expliquer le fonctionnement des cookies javascript -http://www.actulab.com/les-cookies-en-javascript.php
Je ne pense pas qu'il soit possible de récupérrer l'état de la variable pour une page visitée précédement de cette façon;
Parcontre, en javascript, on peut créer et lire des cookies.
A mon avis, dans ta fonction qui permet d'afficher ou cacher le code, tu devrait créer un cookies dans le quel tu socque l'état de ton bloc.
Parcontre, je ne peut pas t'aider pour les cookies javascript, je n'ai jamais utilisé cela.
[edit :j'ai trouvé cette page qui m'as l'air de bien expliquer le fonctionnement des cookies javascript -http://www.actulab.com/les-cookies-en-javascript.php
Dernière édition par cmpc2002 le Lun Déc 31, 2007 18:49, édité 1 fois.
-

mikaelka - Nouveau WRInaute

- Messages: 30
- Inscription: 24 Déc 2007
ok merci cmpc je vais me documenté sur le sujet
Est-ce que le code que j'injecte dans le html est correcte si jamais a la place de getStatus j'initialise une variable? est-ce qu'il me mettra dans le flux la div avec le display qui me convient?
Est-ce que le code que j'injecte dans le html est correcte si jamais a la place de getStatus j'initialise une variable? est-ce qu'il me mettra dans le flux la div avec le display qui me convient?
-

Elvis - WRInaute discret

- Messages: 114
- Inscription: 20 Mai 2005
avec document.write tu vas effectivement écrire quelque chose dans ta page, mais à mon avis tu devrais plutôt te pencher sur les notions de "noeuds"...
Sinon
Pour savoir si un div ou un noeud existe, un simple
suffit je pense.
Pour savoir si ton div est ouvert, tu peux tester la propriété offsetHeight qui retourne la hauteur en pixels de ton block. C'est peut-être pas LA solution mais ça marche.
Sinon, tu peux tester la valeur de style.display :
A en voir ton code, il semble que le menu soit généré par une page php ?
Si c'est le cas, pourquoi ne pas faire une fonction qui génère tout ton menu dynamiquement ?
Sinon
Pour savoir si un div ou un noeud existe, un simple
- Code: Tout sélectionner
if (document.getElementById('mondiv'))
suffit je pense.
Pour savoir si ton div est ouvert, tu peux tester la propriété offsetHeight qui retourne la hauteur en pixels de ton block. C'est peut-être pas LA solution mais ça marche.
Sinon, tu peux tester la valeur de style.display :
- Code: Tout sélectionner
// Si le calque n'est pas fermé
if (tondiv.style.display != 'none')
A en voir ton code, il semble que le menu soit généré par une page php ?
Si c'est le cas, pourquoi ne pas faire une fonction qui génère tout ton menu dynamiquement ?
-

mikaelka - Nouveau WRInaute

- Messages: 30
- Inscription: 24 Déc 2007
Tout d'abord merci pour ta réponse
Tous le reste du site est en dynamique ou virtuel MVC oblige
mais le menu restera fixe, enfin toute une partie est quand même dynamique puisque générée en fonction de l'utilisateur ^^. Mais mon problème été plus javascript.
Je fait déjà ce test en passant par la fonction GetStatus() :
Je n'ai peut être pas bien saisi le principe de la solution que tu me propose mais se que je veut c'est juste savoir à quel état était le display de ma div à la page précédente...
Merci
Tous le reste du site est en dynamique ou virtuel MVC oblige
- Code: Tout sélectionner
if (tondiv.style.display != 'none')
Je fait déjà ce test en passant par la fonction GetStatus() :
- Code: Tout sélectionner
function getStatus(elem_id)
{
var elem = document.getElementById (elem_id);
return elem.style.display;
}
Je n'ai peut être pas bien saisi le principe de la solution que tu me propose mais se que je veut c'est juste savoir à quel état était le display de ma div à la page précédente...
Merci
-

mikaelka - Nouveau WRInaute

- Messages: 30
- Inscription: 24 Déc 2007
Voilà je vais poster la solution bon sa fait un moment que j'avais fais cette demande et que j'ai trouvé la solution mais je n'ai pas eu le temps de venir la mettre
On appel donc la fonction Js appear qui prend en argument l'id de la div à faire apparaitre ou disparaitre. Elle stoque dans un cookie nommé menu_block un booléen qui permet de savoir si à la page précédente le menu était déroulé ou non.
ecrire_cookie est une fonction disponible sur le net qui permet d'écrire dans un cookie vous pouvez la trouver à cette adresse :
http://www.conseil-creation.com/informatique/internet/cookies.php
Voilà maintenant vous pouvez dérouler le menu et changer de page sans que son état ne change seul un second clic le fera disparaitre.
Cette fonction est assez simpliste mais peut surement intéresser des personnes qui se sont posé les mêmes questions.
Merci à ceux qui m'avais aider
- Code: Tout sélectionner
echo'<li><a href=# onclick="appear('categorie')">Themes</a></li>';
if (isset($_REQUEST['menu_block'])){
if($_REQUEST['menu_block'] == "true")
echo('<div id="categorie" style="display : block">');
else echo('<div id="categorie" style="display : none">');
}
else echo('<div id="categorie" style="display : none">');
On appel donc la fonction Js appear qui prend en argument l'id de la div à faire apparaitre ou disparaitre. Elle stoque dans un cookie nommé menu_block un booléen qui permet de savoir si à la page précédente le menu était déroulé ou non.
- Code: Tout sélectionner
function appear(elem_id)
{
var elem = document.getElementById (elem_id);
if (elem.style.display == "none"){
elem.style.display = "block";
ecrire_cookie("menu_block", "true");
}
else{
elem.style.display = "none";
ecrire_cookie("menu_block", "false");
}
}
ecrire_cookie est une fonction disponible sur le net qui permet d'écrire dans un cookie vous pouvez la trouver à cette adresse :
http://www.conseil-creation.com/informatique/internet/cookies.php
Voilà maintenant vous pouvez dérouler le menu et changer de page sans que son état ne change seul un second clic le fera disparaitre.
Cette fonction est assez simpliste mais peut surement intéresser des personnes qui se sont posé les mêmes questions.
Merci à ceux qui m'avais aider
11 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- [résolu]menu déroulant css
- Probleme de menu déroulant
- Probleme avec menu deroulant
- Menu déroulant probleme referencement
- Positionnement du menu déroulant (PROBLEME)
- problème menu déroulant IE 6 et précédents
- Problème avec un menu déroulant...
- Probleme Fire fox et menu deroulant
- problème avec création d'un menu déroulant.
- Menu déroulant (scroll) ou menu effetjquery qui disparait ?
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
