Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment afficher/cacher des elements dans une boucle PHP ?

Sujet résolu
    18 mai 2010 à 17:35:27

    Bonjour à tous ^^

    Voilà j'ai créé une page qui va chercher dans ma base de données le titre et l'enoncé de chaque entrée. Seulement j'aimerai n'afficher en premier lieu que le titre sur ma page et qu'en cliquant sur un bouton/lien/n'importe juste a cote du titre on puisse afficher l'enonce correspondant juste en dessous.

    J'ai donc farfouillé le net et je suis tombé sur un p'tit script qui semblait convenir. Donc je le mets en place etc. et la paf (non ca ne fait pas des Chocapics ^^; ) ca ne marche qu'à moitié : en effet seul l'enoncé du premier titre s'affiche.

    Bon alors moi pas trop bête car moi avoir compris le probleme ca vient du fait que ca fonctionne par ID et que l'ID c'est une fois et une seule. Mais mes connaissances en JS avoisinant le zero, je ne sais asbolument pas comment arranger ça...

    Bon suffit les explications, passons au code :
    <?php include ("../header_sup1.htm"); ?>
    <script type="text/javascript">
    <!--// [CDATA[
        function divaffiche(){
          document.getElementById("popup").style.display = "block";
          document.getElementById("cache").style.display = "inline";
          document.getElementById("voir").style.display = "none";
        }
        function divcache(){
          document.getElementById("popup").style.display = "none";
          document.getElementById("cache").style.display = "none";
          document.getElementById("voir").style.display = "inline";
        }
     
    // ]] -->
    </script>
    <title>Rechercher le dossier d&acute;un Guest</title>
    <?php include ("../header_sub.htm"); ?>
    
    <div id="main">
    
    <h3>Liste complète des énoncés</h3>
    <?php
    try
       {
       $bddhsk = new PDO('mysql:host=127.0.0.1;dbname=matable', 'root', '');
       }
    catch (Exception $e)
       {
       die('Erreur : ' . $e->getMessage());
       }
    
            $reponse = $bddhsk->query("SELECT * FROM aide ORDER BY titre");
    echo "<ul>";
            while (@$donnees = $reponse->fetch())
    {
    ?>
    <li><?php echo $donnees ['titre']; ?>
    	<a id="voir" onclick="divaffiche()" style="font-size:9px;display:inline;">Afficher</a>
    	<a id="cache" onclick="divcache()" style="font-size:9px;display:none;">Cacher</a></li>
    	<div id="popup" style="display:none;height:5em; width:300px;margin:auto;border:solid;"><?php echo $donnees ['enonce']; ?>
      </div>
    <?php
    }
    $reponse->closeCursor();
    ?>
    </ul>
    </div>
    </body>
    </html>
    


    D'avance merci pour votre aide. Ha petit detail au cas où je dois faire en sorte que cela fonctionne sous IE 6 (je sais c nul mais je peux pas faire autrement ^^; )
    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2010 à 17:50:52

      l'idée pour avoir des id différents, c'est de leur donner un nom différent, et pour cela tu peux utiliser par exemple l'ID unique des elements de ta requete (en admettant que le champ id dans ta table s'appelle bien "id") ça donnerais (je met juste les bouts de code interressants):

      <li><?php echo $donnees ['titre']; ?>
      	<a id="voir-<?php echo $donnees ['id']; ?>" onclick="divaffiche('<?php echo $donnees ['id']; ?>')" style="font-size:9px;display:inline;">Afficher</a>
      	<a id="cache-<?php echo $donnees ['id']; ?>" onclick="divcache('<?php echo $donnees ['id']; ?>')" style="font-size:9px;display:none;">Cacher</a></li>
      	<div id="popup-<?php echo $donnees ['id']; ?>" style="display:none;height:5em; width:300px;margin:auto;border:solid;"><?php echo $donnees ['enonce']; ?>
        </div>
      


      , au final on passe l'id en parametre de tes fonction javascript, ce qui donne :

      <script type="text/javascript">
      <!--// [CDATA[
          function divaffiche(id){
            document.getElementById("popup-"+id).style.display = "block";
            document.getElementById("cache-"+id).style.display = "inline";
            document.getElementById("voir-"+id).style.display = "none";
          }
          function divcache(){
            document.getElementById("popup-"+id).style.display = "none";
            document.getElementById("cache-"+id).style.display = "none";
            document.getElementById("voir-"+id).style.display = "inline";
          }
       
      // ]] -->
      </script>
      
      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2010 à 19:03:10

        OMG ! Ca marche nikel !! Merci enormement ^^ en fait je pensais bien reprendre l'id de ma table pour faire varier l'id="" mais je savais pas du tout comment l'indiquer dans le script ^^;

        Serieux encore merci ;)
        • Partager sur Facebook
        • Partager sur Twitter

        Comment afficher/cacher des elements dans une boucle PHP ?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown