Home > front end >  Give different ID to each element in for loop in PhP
Give different ID to each element in for loop in PhP

Time:09-05

This is my output, clicking like button should add 1 to the likes column in MySQL .

I use a while loop to iterate buttons

For example, the "button" is displayed multiple times in the picture below. I have a tag in the while loop, so it outputs the button several times. And that name comes from the database.

MY Question. All the buttons in the will have the same ID. Currently, the user can only click the first button. I would like to give each element a different ID if possible. Then I would like to use jQuery to add a click event. So, if I click on the 4th button, the like count for that comment should be increased.

What I need. How I can assign a different ID to each element in the far loop, so it does only make the first Image clickable but instead all elements' clickables?

<?php
$result = mysqli_query($link, $sql);
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        ?>
        <div >
             <div ><div >
                  <h5>
                     <?php
                         $name = $row['name'];
                         $f_letter = strtoupper($name[0]);
                         echo $f_letter; 
                      ?>
                  </h5>
                  </div>
                      <h4><a href=""><?php echo $row['name']; ?></a></h4>
                  </div>
                       <p><?php echo $row['comment']; ?></p><div >
                       <ul>
                           <li id = "modified" >  </li>
                       </ul>
                       <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST" >
                           <button onclick="imageClick(<?php echo $row['id_vnr']; ?>)" name="like" value="<?php echo $row['id'] ?>" ><i ></i> Like</button>
                       </form>

this is Php Code to insert likes count

<?php
     $like = $_POST['like'];
     if($like){
            $sql = "UPDATE comments set likes = likes   1 where id = '".$row['id']."'"; 
            echo $sql;
            $result=mysqli_query($link,$sql);
     }
         
?>

CodePudding user response:

It's really simple. do it like this

$result = mysqli_query($link, $sql);
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        ?>
        <div >
             <div ><div >
                  <h5>
                     <?php
                         $name = $row['name'];
                         $f_letter = strtoupper($name[0]);
                         echo $f_letter; 
                      ?>
                  </h5>
                  </div>
                      <h4><a href=""><?php echo $row['name']; ?></a></h4>
                  </div>
                       <p><?php echo $row['comment']; ?></p><div >
                       <ul>
                           <li id = "modified" >  </li>
                       </ul>
                       <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST" >
                            <input name="like" value="1"> 
                            <input name="row_id" value="<?php echo $row['id'] ?>"> 
                           <button ><i ></i> Like</button>
                       </form>

And get POST values like this

<?php
     $like = $_POST['like'];
     $row_id = $_POST['row_id'];
     if(isset($like) && $like == 1){
            $sql = "UPDATE comments set likes = likes   1 where id = '".$row_id."'"; 
            echo $sql;
            $result=mysqli_query($link,$sql);
     }
         
?>
  • Related