IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Menu accordéon : mémoriser les sections


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut Menu accordéon : mémoriser les sections
    Bonjour à tous, je ne sais pas si je poste sur le bon forum... Auquel cas je vous prie de m'excuser.

    Mon problème concerne Jquery ui et le menu accordéon.

    J'ai mis en place une petite messagerie - à l'intérieur même du menu accordéon -. J'aimerais mettre en place un update sur la table msg afin de renseigner qu'un message a été lu/vu --> seulement les messages contenus à l'intérieur d'une section ouverte.

    Mais comment savoir qu'une section a été "ouvert" ?

    Voici mon code pour plus de clarté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(function() {
        $( "#accordion" ).accordion();
    });


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <div id="accordion">
     
    <?php
     
    $req = $bdd->prepare('SELECT * FROM msg');
    $req->execute;
     
    while ($donnees = $req->fetch())
    {
       echo"<h3>".$donnees['objet']."</h3>";
       echo"<div>".$donnees['contenu']."</div>";
    }
    ?>
     
    </div>
     
    <?php   
    $req->closeCursor();
    ?>
     
    </div>

    Merci d'avance de votre aide !

  2. #2
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Je poursuis mon investigation ... ce qui s'apparente le plus à mon problème se trouve à : mémoriser-l-etat-des-sections

    Je balance le code en vrac, ci-suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    var index = $.cookie('accordion'); // on récupère le cookie, et on le créé s'il n'existe pas
    var section; // variable qui contiendra l'index de l'élément
     
    if(index != null){
        section = $('#accordion').find('h3:eq(' + index + ')'); // on rentre l'index du titre h3 sélectionné
    }
    else{
        section = 0; // si le cookie n'existait pas, on définit la section à 0 (première section ouverte)
    }
     
    $('#accordion').accordion({
        header : 'h3',
        active : section, // la section active est celle spécifiée par l'élément sélectionné
     
        change : function(event, ui){ // au changement de section, on modifie le cookie
            var index = $(this).find('h3').index(ui.newHeader[0]); // on rentre le nouvel élément sélectionné dans une variable
     
    	$.cookie('accordion', index, {
    	    path : '/'
    	}); // on rentre le nouvel index dans le cookie (le chemin doit être la racine, sauf exceptions, afin d'éviter des bugs de cookie)
        }
    });
    A l'ouverture de mes sections - à proprement parlé - aucun cookies n'est enregistré !

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*
     * Par défaut, les divisions (panels) reçoivent un ID 
     * du type  ui-accordion-accordion-panel-X
     * 
     * Il suffit de récupérer l'index
     */
    $( "#accordion" ).accordion({
        "activate" : function( event, ui ){
            console.log( "new panel index : " , ui.newPanel[0].id.slice( -1 ), "old panel index : ", ui.oldPanel[0].id.slice( - 1 ) );
        }
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Par défaut
    Citation Envoyé par Angelik Voir le message

    A l'ouverture de mes sections - à proprement parlé - aucun cookies n'est enregistré !
    Salut

    Si je ne m'abuse, la gestion des cookies passe par un plug-in jquery que tu dois charger au préalable

    je n'ai pas très bien compris ta problématique concernant ces menus accordéons

  5. #5
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Merci de vos réponses ! La solution de danielhagnoul me retourne correctement la section ouverte dans la console du navigateur

    1ère question : Comment récupérer cette valeur en php ?

    Sinon :

    Citation Envoyé par fredoche
    je n'ai pas très bien compris ta problématique concernant ces menus accordéons
    Après réflexion, je ne sais pas du tout comment m'organiser pour obtenir ce que je souhaite ... c'est à dire identifier qu'un message (à l'intérieur d'une section) a bien été lu/vu à l'ouverture de celle-ci (la section).

    Il faudrait pouvoir passer un UPDATE dans ma table msg et indiquer vu = oui SI section ouverte

    Mais comment savoir quels messages sont contenus dans la section[0], section[1], section[2] et ainsi de suite ?

    Voici un screen de ma page afin d'y voir plus clair : Nom : msg_vu.png
Affichages : 340
Taille : 78,5 Ko

    Merci de votre aide

  6. #6
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Je pense qu'a la base tout les messages doivent être marqué comme non lu, lorsque tu charges tes messages l'ensemble des sections seront fermé.

    La condition pour noter un message comme lu est:

    Si le message est non lu et la section ouverte alors mise à jour de l'enregistrement pour signaler le message comme lu.

    Avec la méthode de daniel, tu dois seulement envoyer une information (via AJAX) au serveur sur lequel tu feras ta requête UPDATE

  7. #7
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Merci pour les réponses. Je n'ai pas bien saisi le lien entre ajax et php (je débute)... A l'intérieur de la section - ouverte - comment retourner/reconnaître/identifier les messages relatifs ?

    Citation Envoyé par Darkaurora
    Avec la méthode de daniel, tu dois seulement envoyer une information (via AJAX) au serveur sur lequel tu feras ta requête UPDATE
    Comment puis-je récupérer cette valeur en php et l'interpréter ?

    Et comment l'associer aux messages de la section ?

Discussions similaires

  1. Menu accordéon: après dépliement d'une tuile, replier les autres
    Par toto81 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/12/2014, 00h48
  2. menu accordéon qui pousse les boutons
    Par joviper dans le forum Flash
    Réponses: 0
    Dernier message: 09/04/2009, 22h10
  3. renvoyer toutes les section d'un fichier .ini
    Par user_steph dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/07/2005, 16h06
  4. fichier ini -> recuperer toute les sections
    Par abignon dans le forum MFC
    Réponses: 2
    Dernier message: 08/04/2004, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo