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

Langage PHP Discussion :

Affichage commentaire 5 par 5 genre facebook


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut Affichage commentaire 5 par 5 genre facebook
    Bonjour tout le monde.

    J'aurais une petite question.
    Je suis sur le developpement d'un site sur le quel je veux afficher des commentaires relatif a des posts.
    Jusque la rien de bien compliqué.

    La ou sa se corse c'est que je voudrais, dans un esprit de lisibilité et de presentation, afficher les 5 premiers, afficher un bouton ou lien (afficher les suivants) et si l'user clique desus sa affiche les 5 suivants, retire le bouton pour afficher les suivants et le remets apres les derniers affiché etc.

    Un peux comme sur le fil d'actualité de facebook.

    J'ai commencé a le faire a la mano comme un grand avec des foreach et des if else dans tout les sens mais sa devient vite une usine a gaz.

    Je mettais mes commentaires dans des span aux quelles j'attribuait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    style='display: block;'
    pour affichage et
    pour les cacher.


    Apres cette longue introduction voiciu enfin ma question o_O

    Pourriez vous me dire si il existe des script valables pour faire sa et si oui ou je pourrais les trouver car je n'arrive pas a trouver malgré mes appels a mon amis google ;-)

    Merci d'avance.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  2. #2
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Salut,

    Pour moi, le mieux est de le faire en JS, avec JQuery si tu maitrises.
    C'est pas bien compliqué en plus, et ça permet d'afficher les commentaires sans raffraichir la page

    Au départ, en PHP t'affiches tout dans une div en display:none et tu affiches uniquement ce que tu veux grâce à JQuery et à la manipulation du DOM
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  3. #3
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    jusque la j'avais essaye de passer par javascript simple avec un appel a la fonction permettant de changer la valeur du display mais je dois pas etre completement sur la bonne voie ^^

    Quand au JQuery .... Il me maitrise plus que je le maitrise j'en ai bien peur ^^
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  4. #4
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Je ne connais pas JQuery mais une alternative serrait d'utiliser Ajax.

    Tu créer une div qui accueil les commentaires et un bouton en dessous de la div qui affiche les 5 suivants. Lors de l’appuie sur la touche tu remplace le contenu de la div par ce que tu récupère via Ajax (à savoir les commentaires actuel + les 5 suivants).

    Il faut donc passer en paramètre d'appel à Ajax le nombre de commentaire actuel.
    Tu fait ensuite une requête SQL en sélectionnant les commentaires et en appliquant un LIMIT(nombre_de_commentaires_actuel + 5).

    Puis sur ta page un document.getElementById('maDiv').innerHTML = resultat_Ajax;.

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    +1 pour la solution d'humitake.
    Tant qu'a ne pas afficher tous les commentaires autant ne pas les charger non plus et ne le faire qu'à la demande.
    Tu va gagner en rapidité d'affichage pour peu que tu ais beaucoup de commentaire à afficher.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Citation Envoyé par grunk Voir le message
    +1 pour la solution d'humitake.
    Tant qu'a ne pas afficher tous les commentaires autant ne pas les charger non plus et ne le faire qu'à la demande.
    Tu va gagner en rapidité d'affichage pour peu que tu ais beaucoup de commentaire à afficher.
    Si le client doit cliquer 10fois sur le bouton pour afficher 50 commentaires (ce qui n'est pas non plus énorme)...
    La rapidité est surement remise en question. ça fait 10 appels aux serveurs + 10 connexion de BdD à ouvrir...

    A la place d'une boucle qui va enregistrer dans une div invisible 50 commentaires...

    De plus, avec cette solution, tu réaffiches à chaque fois tous les commentaires, cela pourrait être améliorer en affichant uniquement ceux qui n'y sont pas (limit $fin - 5, $fin) par exemple.
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    Si le client doit cliquer 10fois sur le bouton pour afficher 50 commentaires (ce qui n'est pas non plus énorme)...
    La rapidité est surement remise en question. ça fait 10 appels aux serveurs + 10 connexion de BdD à ouvrir...
    Le chargement de la page c'est ça qui importe. Si au lieu de récupérer et écrire 500 commentaires j'en ai que 50 ça va forcément aller plus vite.
    Pour ce qui est des actions utilisateur ensuite, c'est évidemment au développeur de rendre ça ergonomique (typiquement sur facebook c'est pas 5 par 5 , mais 5 puis tous , ou un truc du style).

    Citation Envoyé par Nowwis Voir le message
    De plus, avec cette solution, tu réaffiches à chaque fois tous les commentaires, cela pourrait être améliorer en affichant uniquement ceux qui n'y sont pas (limit $fin - 5, $fin) par exemple.
    Ca va de soit qu'il faut faire un append des commentaires existants et pas tous les recharger ...

    Je sors un peu du context PHP mais ça pourrait se faire rapidement comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('#morecomment').post('loadComment.php',{post:idpost,start:x,nb:5},function(data){
    	$('#comments').append(data);
    });
    En supposant que loadComment.php te retorune du HTML (idéalement du JSON à parser ensuite), que idpost = le post concerné et que x = le nombre de commentaire déjà chargé
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Citation Envoyé par Nowwis
    De plus, avec cette solution, tu réaffiches à chaque fois tous les commentaires, cela pourrait être améliorer en affichant uniquement ceux qui n'y sont pas (limit $fin - 5, $fin) par exemple.
    Sauf que dans les commentaires tu peux avoir une réponse à un autre commentaire. Dans ce cas si tu n'en affiche que 5 et que dans le deuxième groupe tu as une réponse à un commentaire du premier groupe tu est obligé de revenir en arrière puis de nouveau faire suivant, ...

    Après c'est évidement un choix à faire mais personnellement je garderais les anciens en plus d'afficher les nouveaux.

    Citation Envoyé par Nowwis
    La rapidité est surement remise en question. ça fait 10 appels aux serveurs + 10 connexion de BdD à ouvrir...
    Cela va dépendre du type de la page, si on à plusieurs "articles" avec leurs commentaires sur la même page, par exemple 10 articles et que pour chaque article on ai 50 commentaires.

    Dans ce cas la méthode avec "masquage" des commentaires cela ferra un chargement de 500 commentaires.
    La méthode que j'ai proposé ne chargera que 50 commentaires.

    Après encore une fois cela dépend du "but" mais surtout de la façon de l'utilisateur à naviguer :
    • Si l'utilisateur va à chaque fois regarder tous les commentaires alors il peux effectivement être intéressant de tous les charger directement.
    • Si l'utilisateur ne va regarder que quelques commentaires par-ci par-là dans ce cas il ne vaux mieux pas tous les charger.

  9. #9
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Merci de vor reponses.

    Bien que l'ajax me tente bien je me retrouve pris a la gorge pour une question de delais.

    J'ai donc du faire au plus rapide (quitte a revoire le code dés que je pourrais)

    Du coup je mets chaque commentaire dans une dive que je cache d'office sauf la premiere et je les rends visibles a la demande non pas 5 par 5 mais une a une.

    Plus simple, plus rapide et de tt façon la j'ai pas le choix ^^

    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  10. #10
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 137
    Points : 40
    Points
    40
    Par défaut meme probleme
    Bonjour,
    Je travaille sur un code un peu comme Facebook, je veux lorsque je clique sur le nombre de commentaires, ils s'affichent
    donc un peu de jquery
    voici mon code:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
    echo "vous avez ".$nbP." publication(s)<br>";
    if($nbP>0)
    {
    while ($Valeur=$resultatpub->fetch())
    {
    echo "<h3><img src=../userImage/".$Valeur['img_Pr']." height=100 width=150 title=".$Valeur['desc_Fr']."></h3><h4>Produit:".$Valeur['nom_Fr']." </h4><h5>".$Valeur['date']." </h5><p id=go>--------";
    $nbCmt=Commentaire::nbCmt($Valeur['idpub']);
    if ($nbCmt>0)
    {
    echo "<p id=go>"; echo $nbCmt."Commentaire ";
    echo"</p>";
    $resultatcmt=Commentaire::getCmt($Valeur['idpub'],$user->id);
    echo "<div id=cmt>";
    while ($Val=$resultatcmt->fetch())
    echo "<b>".$Val['identifiant']."</b> a ecrit le <b>".$Val['date']."</b>\"<b>".$Val['contenu']."</b>\"<br>";
    echo "</div>";
    }
    else echo "Aucun commentaire";
    $idp=$Valeur['idpub'];
    echo "<form name=f1 action=ajoutcmt.php?idpub=$idp method=post><input type=text name=cmt value=ajouter-commentaire style=fontsize:
    small; onFocus=javascript:this.value=''><input type=submit value=comment></form>";
    echo "<br><hr>";
    }
    }
    else echo " vous n'avez aucun publication";
    
    ?>
    <script type="text/javascript">
    $('#cmt').hide();
    $('#go').click(function() {
    $('#cmt').slideToggle();
    });
    </script>

    Bon, ici il m'affiche directement les commentaires, j'ai remarquer que <div id='cmt'> va causer un prob car il va y avoir plusieurs div avec le meme id selon le nombre de publications!
    Comment je peux resoudre le prob SVP
    Merci

  11. #11
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 137
    Points : 40
    Points
    40
    Par défaut aider-moi!
    pourrait il quelq'un m'aider svp! c 'est urgent
    Merci

  12. #12
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Ce sujet concernait le problème d'EIN-LESER.

    Je ne peux hélas pas t'aider du coté de JQuery car comme indiqué plus tôt je ne l'ai jamais utilisé.

    Merci d'ouvrir un nouveau sujet pour ton problème, ce sujet étant marqué comme résolu par l'auteur personne ne viens y lire le contenu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage des commentaires sous une publication cmme facebook
    Par programmatrice dans le forum Langage
    Réponses: 8
    Dernier message: 05/04/2012, 16h18
  2. affichage en détail par défaut
    Par Mut dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 18/05/2005, 09h15
  3. [FLASH MX] Affichage d'images par loadMovie
    Par n_tony dans le forum Flash
    Réponses: 7
    Dernier message: 23/09/2004, 15h34
  4. [MFC] Affichage des Scroll par défaut
    Par Kevgeii dans le forum MFC
    Réponses: 2
    Dernier message: 05/02/2004, 19h44
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

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