Maison > Questions et réponses > le corps du texte
Bonjour à tous. Je conçois une plate-forme similaire à une plate-forme de médias sociaux avec un système de publication, de like et de commentaire. J'utilise jquery pour les likes et chaque fois que je veux envoyer un message texte et aimer une publication, seul le premier message fonctionne mais le système similaire pour les autres messages ne fonctionne pas. Comment puis-je le résoudre. Il s'agit du fichier index.php qui contient le code post et jquery.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>post</title> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="font/css/all.css"> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> <script> $(document).ready(function(){ $("#likings").click(function(){ var name = $("input").val(); $.post("like.php", { sugess: name }, function(data, status){ $("#like").html(data); }); }); }); </script> </head> <?php include('conn.php'); ?> <body> <?php $sql = "SELECT * FROM post"; $result = mysqli_query($conn, $sql); while($row = mysqli_fetch_assoc($result)){ $id = $row['id']; $name = $row['name']; $image = $row['image']; $action = $row['action']; $date = $row['date']; $time = $row['time']; $sqlcount = "SELECT * FROM likes WHERE postid=$id"; $resultcount = mysqli_query($conn, $sqlcount); $count = mysqli_num_rows($resultcount); echo ' <center> <div class="post"> <div class="up"> <div> <img class="img" src="img/'.$image.'"> </div> <div class="uptext"><span class="name">'.$name.' </span><span class="des"> '.$action.' <br>'.$date.' at '.$time.'</span></div> <div> ... </div> </div> <img src="img/'.$image.'"> <div class="liking"> <div class="like"> <i class="fa fa-thumbs-up" aria-hidden="true" style="text-align: left; color: navy;"></i><span id="like">'.$count.'</span> </div> <div> <p>23 comments</p> </div> </div> <div class="likenow"> <div> <input name="id" value="'.$id.'" hidden> <i class="fa fa-thumbs-up" id="likings" aria-hidden="true" style="text-align: left; color: navy;"></i>like </div> <div> <i class="fa-solid fa-message"></i> comment </div> </div> <p style="text-align: left; margin-left: 20px; font-size: 10pt;">view more comments</p> <div class="comments"> <p>itz celeb <br> very nice</p> <p>titi kosi <br> so cute</p> </div> <div class="entercomment"> <div> <img class="img" src="img/'.$image.'"> </div> <div> <input placeholder="Write a comment..."><i class="fa-solid fa-message" style="margin-left: 20px;"></i> </div> </div> </div> </center>'; } ?> </body> </html>
C'est mon code php préféré.
<?php include("conn.php"); $name = $_POST['sugess']; $sql = "INSERT INTO likes(postid, likes) VALUES('$name', '1')"; $result = mysqli_query($conn, $sql); $sqlcount = "SELECT * FROM likes WHERE postid=$name"; $resultcount = mysqli_query($conn, $sqlcount); $count = mysqli_num_rows($resultcount); echo $count; ?>
Alors, comment dois-je le résoudre ?
Un contenu similaire doit s'appliquer à chaque publication. J'ai utilisé une boucle while mais j'ai toujours le même problème.
P粉9596764102023-09-17 09:27:38
Votre problème vient du sélecteur, c'est un sélecteur d'ID, avec le sélecteur d'ID vous ne pouvez sélectionner qu'un seul élément, essayez de le changer en sélecteur de classe
<i class="fa fa-thumbs-up" id="likings" aria-hidden="true" style="text-align: left; color: navy;"></i>
à
<i class="fa fa-thumbs-up likings" aria-hidden="true" style="text-align: left; color: navy;"></i>
Ça devrait aller
<script> $(document).ready(function(){ $(".likings").click(function(){ var name = $("input").val(); $.post("like.php", { sugess: name }, function(data, status){ $("#like").html(data); }); }); }); </script>