[Résolu] Problème : Menu déroulant Js, session_destroy().
11 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
[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.
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
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.
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.
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
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
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.
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?
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 ?
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
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
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Référencement d'un forum phpBB
- Ecrire un sitemap pour Google News
- Google contre les spywares et les adwares
- Google Developer Day 2007 : à Paris et dans 9 autres villes
- Référencement d'un site en frames
- La toolbar pour Firefox de Google
- Référencement : le problème des sessions des pages PHP
- Nouvelles fonctionnalités pour Google Sitemaps
- Le référencement de pages PHP
- Afficher le PageRank en entier dans Firefox (barre d'outils Google)
- [résolu]menu déroulant css
- 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.
- URGENT : Problème "Z-index" avec Menu déroulant ve
- Gros probleme de session (RESOLU) MERCI à tous !!!
- Le probleme des tables session n'est toujours pas résolu !!!
- [Résolu]Problème de soulignement dans un menu
- [Résolu]Problème menu en fonction du naviguateur
- [help!] Menu Déroulant
- Menu déroulant
- Adsense et menu déroulant
- menu déroulant php
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum