Problème pour cacher/montrer un bloc de page.

Fermé
Keykoss - 5 janv. 2009 à 20:23
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 6 janv. 2009 à 19:06
Bonjour,

Je m'occupe actuellement du site de basket de mon club. J'ai des bases en HTML mais la fleime m'a emporté et j'utilise un petit logiciel de codage. Dans ma page, j'y ai inséré des balises Inculd pour l'entête, le menu de gauche et une bannière en bas de page. Voici a peux près comment est bâtit mon site.

Mon problème est le suivant. Dans mon includ d'entête, j'ai une partie qui affiche les news sur toutes les pages. Pour l'instant, je suis restreint en place, car l'affichage sur toutes les pages m'interdit d'utiliser trop de place pour surcharger le site. J'ai donc mis un petit code qui permet d'afficher ou de cache les news. Le problème, c'est qu'a chaque changement de page, les news réapparaissent, et si l'on veux les cacher, il faut de nouveau cliquer le bouton "cacher les news". Mon souhait, serais que lorsque l'on clique sur "Cacher les news", elles le soient pour toute la visite, et que le choix ne change pas a chaque changement de pages.

Voici l'adresse de mon site :
http://alssabasket.free.fr

Pour que vous compreniez mieux ce que je recherche, voici un site qui propose quelque chose du style rechercher :
http://www.barbok.fr

Sur mon site, lorsque l'on cache les news, au changement de page, les news réapparaissent. alors que sur "barbok", elles reste cacher si on a décidé ainsi jusqu'à avoir quitter le site.

Je chercherais donc a avoir quelque chose du même genre. Je ne vois pas trop comment faire, étant un webmaster en mousse ^^'.

Merci d'avance pour vos réponses, j'espère quelles me seront utilent.
Keykoss

7 réponses

AdminTOURS Messages postés 403 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 14 janvier 2011 91
6 janv. 2009 à 15:24
Mouarf j'ai oublié le script dans le header

<script type="text/javascript">
function switchMenu(obj)
{
var el = document.getElementById(obj);
if(el.style.display != "block")
{ el.style.display = "block"; }
else
{ el.style.display = "none"; }
}
</script>
2
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
6 janv. 2009 à 15:27
Effectivement ça marche mieux. Pas mal et bien pratique. Merci bien pour cette astuce.
0
Keykoss > arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016
6 janv. 2009 à 15:30
Oui, je viens de tester le code, il marche =)

Mais lors de l'apparition de la page, il est caché. Serais-se possible d'avoir le même code mais avec l'apparition du code dès l'ouverture de la page et non l'inverse ?

En revanche après actualisation de la page, le code reviens à son état d'origine et ne reste pas comme on l'avais "laisser" ... est-ce une mauvais utilisation de ma part ?
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477 > Keykoss
6 janv. 2009 à 15:34
Je pense qu'il suffit de réadapter ces lignes:
if(el.style.display != "block")
{ el.style.display = "block"; }
else
{ el.style.display = "none"; }

en inversant les conditions.
if(el.style.display == "block")
{ el.style.display = "none"; }
else
{ if(el.style.display == "block")
{ el.style.display = "block"; } }


Je pense que ça pourrai marcher. A essayer.
0
AdminTOURS Messages postés 403 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 14 janvier 2011 91
6 janv. 2009 à 13:43
Tu pourrais mettre ton texte dans un div mettons qu'il s'appelle "news"

<a onclick="switchMenu('news');" >Afficher/masquer la news</a>
<div id='news' style="display:none;" >

ta news

</div>
1
j'ai essayé mais cela ne marche pas, le texte afficher/masquer les news ne comporte pas de lien ...


Si quelqu'un peux m'éclairer =)
Keykoss
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
6 janv. 2009 à 15:16
Par curiosité j'ai testé en faisant un simple copié/coller de ton code mais mon navigateur semble ignorer le lien. Du coup il ne m'affiche que le texte du lien.
0
AdminTOURS Messages postés 403 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 14 janvier 2011 91
6 janv. 2009 à 15:11
Pour rester sur ma solution (qui marche chez moi), il faut mettre l'url comme tel :

<option value="http://URL">item1</option>
1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
6 janv. 2009 à 15:08
Je pense avoir une solution.
Tu fait un lien avec un bouton (apparance modifiable en css).
Exemple:
<input type="submit" name="cache" value="Cacher le bloc" />
Juste avant tu met en PHP:
<?php
if(!isset($_POST['cache']))
{if(!isset($_SESSION['cache']))
{echo '#code de ton bloc de news#';}
}
?>
Avec ça, ça devrai fonctionner.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AdminTOURS Messages postés 403 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 14 janvier 2011 91
6 janv. 2009 à 15:30
COOL !

De rien ! N'hésite pas à mettre le post en résolu !
0
AdminTOURS Messages postés 403 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 14 janvier 2011 91
6 janv. 2009 à 15:46
ou tout simplement en mettant

style="display:block" >

dans ton div
0
Je ne sais pas se qui ne marche pas, si c'est moi qui n'arrive pas a mettre en place vos codes ou le problème qui est mal compris.

Mon code pour cacher/montrer les news en lui même je l'ai. Le voici :

  <div class="content">
                  <div style="margin: 5px 10px 10px;">
                  <div style="" class="quotetitle"><strong>
                  </strong><input value="Masquer les news"
 style="margin: 0px; padding: 0px; width: 140px; text-align: center; font-size: 10px;"
 onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Masquer les news'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Afficher les news'; }"
 type="button">
                  <noscript><span
style="color:#FF0000;background-color:#FFFFFF;font-weight:bold;text-decoration:underline;font-style:italic;">Cette
balise requiert Javascript d'activ&eacute;.</span></noscript>
                  </div>
                  <div class="quotecontent">
                  <div style="text-align: center;"><img
 alt=""
 src="http://img155.imageshack.us/img155/6619/sanstitre3jc9.png"><br>
.:: 27/12/08 ::.<br>
Ajout des photos du t&eacute;l&eacute;thon, barrages cadettes
et challenge Veolia.<br>
                  <img alt=""
 src="http://img155.imageshack.us/img155/6619/sanstitre3jc9.png"></div>
                  </div>
                  </div>
                  </div>


Mon problème est que si, sur la page d'accueil vous cliquez sur "cacher les news", elles se cachent normalement. Mais le truc c'est que lorsque vous changer de page, les news réapparaissent. C'est là mon problème, comment faire pour qu'au changement de page, la news reste comme c'était juste avant.
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 477
6 janv. 2009 à 19:06
Ma solution (mon premier message) répondais justement à ça. J'avais mis en session le statut "masqué" du bloc.

Je la remet ici de manière un peu plus complète :
<?php
session_start ();
if($_POST['cache'] == 'Masquer') {$_SESSION['cache'] = 'OFF';}
if($_SESSION['cache'] != 'OFF')
{echo'<div><p>... news...</p><p><form method="post" action="cache.php"><input type="submit" name="cache" value="Masquer" /></form></p></div>';}
if($_SESSION['cache'] == 'OFF') {echo '<form method="post" action="cache.php">
<input type="submit" name="cache" value="Afficher" /></form>';}
?>

J'ai testé le code et il marche.
Dans mon exemple, la page s'appelle cache.php. Remplace l'url par celui de ta page et ça marchera.
0