2 votes

select info from database to ul by id and open it in new window (sélectionner des informations dans la base de données par identifiant et les ouvrir dans une nouvelle fenêtre)

J'ai ce code pour sélectionner des informations de la base de données et les ouvrir dans une nouvelle fenêtre par identifiant, le problème est que la même ligne s'ouvre dans la nouvelle fenêtre même si je clique sur un autre titre, je veux juste que si l'utilisateur clique sur le titre, une nouvelle fenêtre s'ouvre avec les informations de la même ligne dans la base de données et que si l'utilisateur clique sur un autre titre, une autre fenêtre s'ouvre avec les informations de la même ligne :

<div class="col l6 offest-13">
 <?php 

   $sql = "SELECT * FROM post";
   $result = mysqli_query($conn, $sql);
   if(mysqli_num_rows($result) > 0){
   while($row = mysqli_fetch_assoc($result)){ 

?>
    <ul class="collection" >

        <li class="collection-item" >
            <h3><a id="a" value="submit" name="submit" href="" ><?php echo 
        $row['title'];?></a></h3>
            <span class="grey-text">by <?php echo $row['author'];?> on <?php echo 
        $row['publish_date'];?></span>
            <br>
        <button class="button" id="submit" name="submit" value="submit"><span 
        class="s_text">GET COINS</span></button>
        <div class="time-views">
            <span class="time"><?php echo $row['type'];?>s<i class="material- 
        icons">access_time</i></span>
            <span class="views"><?php echo $row['views'];?><i class="material- 
         icons">visibility</i></span>
            </div> 

     </li>

      </ul>
       <script type="text/javascript">
           $( "#a" ).click(function(){
                window.open("createdb.php?id=<?php echo $row['id'];?>","ASDF") ;
      });

      </script>
       <?php                 

    }
}

?>    

</div>

1voto

Alex Points 375

Étant donné que vous créez plusieurs postes et que vous affectez des id="a" pour tous ces éléments, il ouvrira toujours le premier élément, même si vous cliquez sur le deuxième ou le troisième, etc. Lorsque vous parcourez la base de données, vous pouvez assigner l'identifiant de cette ligne à l'identifiant du lien comme suit

`<h3><a id="<?php echo $row['id'];?>" value="submit" name="submit" href="" ><?php echo $row['title'];?></a></h3>`

Puis ajoutez script

<script>
$( "#<?php echo $row['id']?>" ).click(function(){
    window.open("createdb.php?id=<?php echo $row['id'];?>","ASDF") ;
});
<script>

mais la meilleure façon est de mettre script en dehors de la boucle

 $('.collection .collection-item h1 a').click(function(){
  window.open("createdb.php?id=" + this.id ,"ASDF") ;
 });

0voto

AngryLeo Points 36

Vous n'avez pas besoin de mettre votre script dans la boucle while. Il semble que n nombre d'événements soit créé en fonction de la longueur du tableau.

Solution:-

  1. Placez votre script hors de la boucle

  2. Ajoutez l'attribut data dans la balise d'ancrage et mettez-y l'identifiant (<a data-id=" <?php echo $row['id']?> ").

  3. Obtenir l'identifiant de l'élément cliqué ( $(this).data("id") ) et passer createdb.php?id=$(this).data("id")

  4. Utiliser la classe pour l'événement click au lieu de l'identifiant car l'identifiant est unique pour chaque événement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X