bonjour j'ai realiser un script php où j'affiche un article avec une description. j'ai par la suite limiter le nombre de caractere à 200. je voudrais mettre le système de bouton "lire la suite" pour permettre aux utilisateurs de lire le contenu en entier sans avoir à changer de page. mais a chaque fois que l'on clique sur le bouton la suite apparait juste une seconde et la page est rechargée. voici mon code j'espere etre explicite

<?php
                    try{
                      require"connectionbd.php";
                      $reqs="SELECT * FROM ad_eprojet where ownerid=:org";
                      $ress=$bdd->prepare($reqs);
                      $ress->execute(array('org'=>$id));
                      $tr1s=$ress->fetch(PDO::FETCH_OBJ);

                      }
                        catch(Exception $e)
                      {
                        echo $e->getMessage().' dans '.$e->getFile().' a la ligne '.$e->getLine();
                      }

                      if ($tr1s==false) {
                       echo "<div style='text-align:center;margin:10px 0px; color:#ooo;'>Pas de Projets enregistrés pour le moment</div>";
                      }else{
                            do{
                            echo "<article class='post sermon Autorité Yvan art-post'>
                                <header class='post-title'>
                                  <div class='row'>
                                      <h6>".ucfirst($tr1s->titre)." : <i>".datefrench1($tr1s->date_ajout)."</i></h6> 
                                  </div>
                                </header>
                                <div class='post-content'>
                                  <div class='row'>
                                    <div class='col-md-4'> <a href='#' class='media-box'> <img src=".substr($tr1s->image,3)." alt='' title='' class='img-thumbnail'> </a> </div>
                                    <div class='col-md-8' id='small'>
                                      <p style='word-wrap:break-word;'>".tronquer($tr1s->texte,200)."</p>
                                      <p><a href='' id='suite' class='btn btn-primary'>En savoir plus <i class='fa fa-long-arrow-right'></i></a></p>                                      
                                    </div>
                                    <!--<div class='col-md-8' id='all' style='display:none'>
                                      <p style='word-wrap:break-word;'>"/*.$tr1s->texte.*/"</p>
                                      <p><a href='' id='reduire' class='btn btn-primary'> Reduire <i class='fa fa-long-arrow-right'></i></a></p>                                      
                                    </div>-->
                                  </div>
                                </div>
                              </article>";
                          }while($tr1s=$ress->fetch(PDO::FETCH_OBJ));
                        } //end else
                  ?>

                  --------------- code javascript ------------------------
  <script>
    function masquer(name){
        var r= document.getElementById(name);
        r.style.display="none";
    }
    function afficher(name){
        var t= document.getElementById(name);
        t.style.display="block";
    }
    function affichermasquer(){
        masquer("small");
        afficher("all");
    }
    function masquerafficher(){
        masquer("all");
        afficher("small");
    }
</script>

3 réponses


Salut,

Alors déjà je vois que tu attribues un ID à ton élément <a href='' id='suite' class='btn btn-primary'>En savoir plus <i class='fa fa-long-arrow-right'></i></a>, sauf que celui-ci est dans une boucle ce qui veut nécessairement dire plusieurs éléments auront le même ID. Et ça c'est pas possible, le principe d'un ID est d'être unique ;)

Ensuite, concernant ton soucis, tu es avares en détails. Sur quel élément cliques-tu pour afficher/masquer ton contenu ? Et surtout, pourquoi est-ce qu'il y a un bout de code commenté dans ton PHP ? Parce que si c'est celui que tu comptes afficher tu es mal barré ! ;)

Bref sois plus précis.

Hello,
1- en php tu fais 2 variables : la première avec le texte tronqué et la deuxième avec le texte en entier
2- en html tu fais 2 divs avec 2 id différents (id="tronque" et id="entier"). le contenu de la première sera le texte tronqué et le contenu de la deuxième sera le texte entier.
3- on met display : none à la deuxième div id="entier"
4- on fait une fonction toggle : si le display = none alors on le passe à la block, sinon on le passe à none. (en jquery il y a ca : http://api.jquery.com/toggle/ )
5- quand on click sur un lien "lire la suite" ca toggle les deux divs, du coup la première passera à display none et la deuxième passera en display block

@alexandreg: Non ça ne fonctionnera pas puisqu'il a plusieurs articles sur la même pas, or un ID est, et je le répète, UNIQUE. A la limite il faut qu'il incrémente un INT et qu'il concatène cette variable à son ID (genre id="tronque-{$i}" et id="entier-{$i}" là ça fonctionnera.

Mais avec une classe ça fonctionnera tout aussi bien, et simplement avec du CSS et du jQuery ça peut aussi fonctionner: http://codepen.io/anon/pen/PqWGYb/

Tout simplement.