Pages: 1
|

Membre
|
Bonjour ,
Dans mon menu j'ai un spoiler qui permet de masquer les sous-menu , j'aimerais utiliser les cookies pour que les sous menus restant masqués (en style display:none;) apres actualisation .
Merci
PS: La page ne question : http://www.koopa-legends.tk/ , menus de droite et de gauche.
|

Membre
|
Personne?
|

Membre
|
<? setcookie ('$_POST['menu_x]',$_POST['menu_x_display'];,time()+31536000,'',TONSITE'); ?>
Tu mets ça dans un fichier PHP séparé.
Ensuite, c'est quand on clique sur un bouton, il faut que le fichier soit appelé avec menu_x = id du menu que l'on change, et menu_x_display = none ou block (ou je sais pas comment il doit s'afficher donc à toi de voir).
Ces données sont transmises en post.
En js, je sais pas, donc soit tu essaye de voir pour le faire en PHP, soit tu attends que quelqu'un t'explique en js.
|

Membre
|
Je vais essayer de mettre ca en GET plutot...
Mais pas dans un fichier séparé !
EDIT: Voici le début pour masquer la partie "Twitter" dans le menu de droite :
<?php if $_GET['menur.twitter'] =='ok' {
setcookie ('$_POST['menur.twitter]',$_POST['menur.twitter.ok'];,time()+31536000,'',Koopa-Legends');
}
?>
Et apres sur le bouton je met simplement ça ? href="?menur.twitter=ok"
Merci
|

Membre
|
Alors ? Ca marcherais ? Je pense pas car il faut enlever les $_POST mais je sais pas par quoi les remplacer...
|
![ipodtouchpro]()
Membre
|
Avec des sessions
|

Membre
|
Non , avec des cookies car je suppose que c'est plus complqué avec des sessions...
|

Membre
|
Quand on change la valeur du display d'un menu, il faut appeler une page qui ne s'affichera pas et qui enregistrera si le menu untel doit être affiché. Donc dans tes cookies il y aura l'id du menu dans le nom, et la valeur que doit prendre display.
Et dans le template du menu, pour chacun des menus, tu récupérera la valeur de chacun des menus, et la donnera à un code js qui dira au navigateur si il doit afficher ou non.
Si tu ne veux pas un fichier séparer, je doute que ce soit possible avec PHP. Donc dans ce cas, regarde pour les cookies en js.
|

Membre
|
Bon , d'accord pour le fichier séparé , mais je tien a préciser quelque chose : je suis débutant , tu n'aurais pas un code concret ?
Petite précision : le style est soit display:none soit rien du tout , voici le code : //----------------------------------------------
// Affichage d'un Objet déclaré dans le document...
//----------------------------------------------
function Affiche_OBJ(){
var Arg = arguments; // Récup liste des arguments passée à la fonction
var Obj;
for( var i=0; i< Arg.length; i++){ // On parcours la liste
Obj = document.getElementById( Arg[i]); // Récup Objet correspondant
if( Obj){
Obj.style.visibility = "visible";
//-- Ou autre méthode
Obj.style.display = "";
}
}
}
//----------------------------------------------
// Masquage d'un Objet déclaré dans le document...
//----------------------------------------------
function Masque_OBJ(){
var Arg = arguments; // Récup liste des arguments passée à la fonction
var Obj;
for( var i=0; i< Arg.length; i++){ // On parcours la liste
Obj = document.getElementById( Arg[i]); // Récup Objet correspondant
if( Obj){
Obj.style.visibility = "hidden";
//-- Ou autre méthode
Obj.style.display = "none";
}
}
}
|

Membre
|
Le style peut-être display none soit autre chose. J'ignore la valeur par défaut dans ton cas, legtux est en erreur 500 (et le serveur semble être completement indisponible actuellement) donc je peux pas espionner. ^^
Pour le côté javascript, essaye :
//----------------------------------------------
// Affichage d'un Objet déclaré dans le document...
//----------------------------------------------
var aujourdhui = new Date();
var expdate = new Date();
expdate.setTime( aujourdhui.getTime() + ( 365*24*60*60*1000 ) ) // Le cookie vivra un an
function Affiche_OBJ(){
var Arg = arguments; // Récup liste des arguments passée à la fonction
var Obj;
for( var i=0; i< Arg.length; i++){ // On parcours la liste
Obj = document.getElementById( Arg[i]); // Récup Objet correspondant
if( Obj){
Obj.style.visibility = "visible";
document.cookie = Arg[i] + "= visible ; expires=" + expdate.toGMTString() ;
//-- Ou autre méthode
Obj.style.display = "";
}
}
}
//----------------------------------------------
// Masquage d'un Objet déclaré dans le document...
//----------------------------------------------
function Masque_OBJ(){
var Arg = arguments; // Récup liste des arguments passée à la fonction
var Obj;
for( var i=0; i< Arg.length; i++){ // On parcours la liste
Obj = document.getElementById( Arg[i]); // Récup Objet correspondant
if( Obj){
Obj.style.visibility = "hidden";
document.cookie = Arg[i] + "= hidden ; expires=" + expdate.toGMTString() ;
//-- Ou autre méthode
Obj.style.display = "none";
}
}
}
Ça créera les cookies mais ne te permettra pas de les lire.
Donc après chaque menu, tu mettra ce code :
<script type="text/javascript"> /* Dans un script js pour ne pas générer d'erreur W3C */
ID_MENU.style.visibility="
<? echo $_COOKIE['NOM_DU_COOKIE']; // Le nom transmit au cookie par Arg[i] ?>
"; // En remplaçant ID_MENU par l'id du menu que l'on charge
</script>
En supposant qu'il soit possible de lire un cookie créé en js avec PHP.
J'ai testé aucun code. Je ne pense pas que ça marche pour être honnête mais... Si ça peut t'avancer ou permettre à quelqu'un de t'aider plus facilement...
|

Membre
|
Oui legtux , beuge souvent j'ai changé (koopa-legends.tk redirige vers le nouveau)
tu peut donc regarder le code source (pas tres propre )
|

Membre
|
Donc display:block par défaut. Mais je ne pense pas qu'il soit nécessaire de changer le display, la visibility devrait suffire non ?
|

Membre
|
Oui, bien sur mais clique sur les boutons - , tu vois ? Le menus se "rétractent" je ne sais pas si visibility:hidden ne laissera pas l'espace entre le titre et le menu...
|

Membre
|
Ah, si, exact. Donc il faudra verifier le contenu du cookie pour déduire le display depuis la visibilité.
Et plutôt qu'un JS pour changer les style, mettre directement les CSS dans le style="" puisque tu as style="visibility:visible;" dans tes menus.
|

Membre
|
Ok, donc quel serait le code ?
|

Membre
|
Sais pas, legtux mouru, et ton autre lien aussi ^^
|

Membre
|
Ah lala ! Dot TK de m**** , je change , vas sur : koopalegends.olympe-network.com
mais tous est blanc je retransfere mes fichiers...
|

Membre
|
<div class="menu_droit_text" style="visibility:<?echo $_COOKIE['NOM_DU_COOKIE'].';';if ($_COOKIE['NOM_DU_COOKIE']=='visible"){echo'display:block;';}else{echo 'display:none;';}?>">
Suis pas sûr. Et à adapter pour tous les menus.
je précise, je ne suis sûr pour aucun de mes codes x)
|

Membre
|
Ok , merci , je teste ce soir ou demain et j'édite ce message pour te dire si ca marche ...
|

Membre
|
Voici mon code : <div style="visibility:<?php echo $_COOKIE['menu_twitter'].';';
if ($_COOKIE['menu_twitter']=='visible'){echo'display:block;';}else{echo 'display:none;'}?> class="menu_droit_text"><a OnClick="Affiche_OBJ('twitter');"><img style="float:left;margin-bottom:5px;margin-top:5px;margin-left:2px;" src="http://koopalegends.olympe-network.com/ico_mac_plus.png" alt="menu de droite"></a><a OnClick="Masque_OBJ('twitter');"><img style="float:left;margin-bottom:5px;margin-top:5px;margin-left:2px;" src="http://koopalegends.olympe-network.com/ico_mac_moins.png" alt="moins"></a><div class="menu_droit_titre">Twitter</div>
</div><br> Mais comment fixer le cookie menu_twitter par exemple?
|

Membre
|
Avec function Affiche_OBJ() ou Masque_OBJ(). Quand la fonction est appellée, elle génère le cookie.
|

Membre
|
J'ai mis ca : <div style="<?php echo $_COOKIE['menu_twitter'].';';
if ($_COOKIE['menu_twitter']=='visible') echo 'display:block;';
else echo 'display:none;';
?>" class="menu_droit_text"><a OnClick="Affiche_OBJ('twitter');"><img style="float:left;margin-bottom:5px;margin-top:5px;margin-left:2px;" src="http://koopalegends.olympe-network.com/ico_mac_plus.png" alt="menu de droite"></a><a OnClick="<?php setcookie("menu_twitter", "display:none;", time()+3600*24*360);?>;Masque_OBJ('twitter');"><img style="float:left;margin-bottom:5px;margin-top:5px;margin-left:2px;" src="http://koopalegends.olympe-network.com/ico_mac_moins.png" alt="moins"></a><div class="menu_droit_titre">Twitter</div>
</div>
Mais ca n'affiche pas le bouton qui cache!
|

Membre
|
Ça va pas de toute façon. La fonction est exécutée au chargement de la page, même avant. PHP créera le cookie, que tu clique ou non. Pour cela que je parlais d'un fichier différent pour traiter les cookies. Donc si tu veux faire des cookies en PHP, faut faire un autre fichier comme je le proposais plus haut.
|

Membre
|
Pas de problèmes, mais il me faut un code ....
|

Membre
|
Alors ?
|

Membre
|
Je ferrais peut etre mieux de m'adresser a un autre forum...
|
Pages: 1
|