Как добавить данные в конкретный div в цикле PHP while

У меня есть система комментариев, в которой я добавляю комментарии, которые делает пользователь, но когда я добавляю данные, получается: [object HTMLCollection]: [object HTMLCollection] и я также хочу знать, как добавить этот комментарий к тому конкретному сообщению, в котором прокомментировал пользователь.

Мой код php:

$query =  "SELECT ph.ext, ph.likes,ph.desccription, ph.image_url,ph.email,ph.username,ph.uid ,ph.id,ph.avatar_path
          FROM photos as ph
          inner join followers as fol
          on fol.user_id = ph.uid
          where fol.uid = '$id'
          ORDER BY ph.image_url DESC limit 5";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) {



  while ($users = mysqli_fetch_assoc($fire)) {
    $likes = $users['likes'];
    $description = $users['desccription'];
    $username = $users['username'];
    $uid = $users['uid']; 
    $pixid = $users['id'];
    $avatar_path5 = $users['avatar_path'];


    ?>


<div class = "all" >
<div class = "card" >
  <div class = "float" >
  <div class = "avatar" >
    <img src = "<?php echo $avatar_path5; ?>" width = "100%" class = "avatar">
  </div>

      <div class = "username" style = "font-weight: 600; size: 14px;  text-decoration: none; color: black !important; ">
      <p style = "color: black !important;"><?php echo "<div><a href='users?id = ".$users['uid']."' style='color: black !important; '>
               <h3>".$users['username']."</h3>

      </div></a>"; ?></p>
</div>
</div>
   <?php
   if ($users['ext']=='mp4') {
     ?>
     <video class = "videos"  controlsList = "nofullscreen nodownload" style = "width: 100%; height:100%;" controls autoplay = "true" muted> 
 <source src = "<?php echo $users['image_url']?>" type = "video/mp4">

          </video>  

<?php
}else{
  ?>
  <img src = "<?php echo $users['image_url']?>" alt = "Avatar" style = "width:100%;">
  <?php }
  ?>

             <form method = "POST"  action = "" >
                <div class = "commentdiv">
                  <input type = "hidden" name = "id" id = "id" class = "id" value = "<?php echo $pixid;?>">
                  <input type = "hidden" name = "username" id = "username"  value = "<?php echo $activeusername;?>">
                  <input type = "hidden" name = "uid" id = "uid"  value = "<?php echo $id3;?>">
          <textarea style = ""  name = "comment" id = "comment" class = "comment"  placeholder = "  comment here"></textarea>
         <button type = "button" style = "background-color: Transparent;
    background-repeat:no-repeat;
    border: none;
    cursor:pointer;
    overflow: hidden;
    color: #3897f0; font-weight:600;" class = "submit" id = "button_id">comment</button>

       </div>

          </form>
        </div>
         <div id = "comments" class = "comments"  data-post-id = "<?php echo $pixid;?>">
            <?php



$sql = "SELECT * FROM comment where post_id='$pixid' order by time2 desc limit 3";
$results = mysqli_query($con,$sql);
if (mysqli_num_rows($results)>0) {
  while ($row = mysqli_fetch_assoc($results)) {
    $commentid = $row['id'];
    $comment = $row['comment'];
    $string = covertHashtags($comment);
    echo "<p class='written'>";
    echo "<a href='users2?id = ".$row['user_id']."' style='color:black !important;'><b>".$row['username']."</b></a>";
    echo "  ".$string;
     $sql3 = "SELECT * FROM comment where id ='$commentid' and user_id='$id' order by comment desc limit 5 ";
$results3 = mysqli_query($con,$sql3);
     if (mysqli_num_rows($results3)>0) {

      echo "<div class='dropdown'>
  <img src='ellipsis.png' class='dots'>
  <div class='dropdown-content'>
    <br><p  class='delete' data-delete = ".$commentid.">delete</p>
  </div>
</div>";

    } 
    else{
      echo "";
    }

     echo "</p>";  


  }
}else{
  echo "";
}

            ?>

          </div>
      </div>
      <br><br>



    <?php } ?>

и мой JavaScript

<script type = "text/javascript">
  $(document).on('click','.submit',function(e){
     e.preventDefault();
   //Get values of input fields from DOM structure 
   var dataString = {
        id: $(this).parent().find("#id").val(),
        username: $(this).parent().find("#username").val(),
        uid: $(this).parent().find("#uid").val(),
         comment: $(this).parent().find("#comment").val()
    };

   $.ajax({
   url:'comments.php',  
   data:dataString,
   success:function(){
$('#comments').append('<b>'+username+'</b>: '+comment);    
   }
   });
});
</script>

Что я делаю неправильно ? я обновил свой код и добавил весь PHP-код Заранее спасибо.

Вы используете ajax и передаете объект json?

Sfili_81 19.10.2018 11:33

не могли бы вы написать для него код @ Sfili_81

user10265190 19.10.2018 11:34

В показанном вами коде нет переменных с именами username или comment, определенных где-либо, так как вы думаете, имеет ли смысл использовать их для добавления где-нибудь?

misorude 19.10.2018 11:35
$(document).on('click','.submit',function(e){ что здесь .submit?
Zain Farooq 19.10.2018 11:41

Похоже, вы не отправляете форму

Zain Farooq 19.10.2018 11:41

Он нацелен на класс отправки при событии щелчка, а затем выполняет ajax, чтобы отправить комментарий на сервер.

McBern 19.10.2018 11:44

какие данные вы отправляете с comments.php? показать код этого файла тоже

Anant Kumar Singh 19.10.2018 11:45

Он отправляет объект dataString @AlivetoDie

McBern 19.10.2018 11:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
454
2

Ответы 2

Я не совсем понимаю, чего именно вы ожидаете, но исходя из того, что я вижу в вашем коде, я полагаю, что следующее может помочь.

(также вам следует избегать функции jQuery .on, вместо этого используйте .click)

$('.submit', document).click(,function(e){
     e.preventDefault();
   //Get values of input fields from DOM structure 
   id = $(this).parent().find("#id").val(),
   username = $(this).parent().find("#username").val(),
   uid = $(this).parent().find("#uid").val(),
   comment = $(this).parent().find("#comment").val()
   var dataString = {
        id: id,
        username: username,
        uid: uid,
         comment: comment
   };

   $.ajax({
   url:'comments.php',  
   data:dataString,
   success:function(){
       $('#comments').append('<b>'+username+'</b>: '+comment);    
   }
   });

Переменные для вашего имени пользователя и комментария еще не созданы.

Вам это нравится:

$(document).on('click','.submit',function(e){
         e.preventDefault();
       var post_id = $(this).attr("data-post-id");
       //Get values of input fields from DOM structure 
       var dataString = {
            id: $(this).parent().find("#id").val(),
            username: $(this).parent().find("#username").val(),
            uid: $(this).parent().find("#uid").val(),
             comment: $(this).parent().find(".comment").val()
        };

       $.ajax({
       url:'comments.php',  
       data:dataString,
       success:function(){
    $('#comments_'+post_id).append('<b>'+$(this).parent().find("#username").val()+'</b>: '+$(this).parent().find(".comment").val()
);    
       }
       });
    });

Отредактируйте свой php-скрипт именно в этой строке, я просто добавил в него атрибут:

`<button type = "button" style = "background-color: Transparent;
    background-repeat:no-repeat;
    border: none;
    cursor:pointer;
    overflow: hidden;
    color: #3897f0; font-weight:600;" class = "submit" id = "button_id" data-post-id = "<?php echo $pixid;?">comment</button>`

и эта строка также:

<div id = "comments_<?php echo $pixid;?>" class = "comments">

Так же обновил $('#comments_'+post_id).append('<b>'+$(this).parent().find("#username").val()+'</b>: '+$(this).parent().find(".comment").val()

и я добавил это в js:

var post_id = $(this).attr("data-post-id");

но как мне решить проблему отображения комментария только в этом сообщении, а не в каждом сообщении, мой php-код находится в цикле while, в котором каждое сообщение имеет класс комментариев, как выбрать этот конкретный класс только @McBern

user10265190 19.10.2018 11:48

Вы должны добавить дополнительный атрибут html при создании вашего php-скрипта и использовать jquery для его поиска. Как <div data-post-id = "1" class = "comments"> Публикуйте здесь комментарии </div> JQuery будет искать идентификатор сообщения с данными, подобный этому var this_post = $(this).attr("data-post-id"), а затем вставлять сюда дополнительные комментарии, например, этот $(this_post).append("new comments");

McBern 19.10.2018 11:56

ничего не происходит, когда я добавляю идентификатор записи данных и использую ваш код

user10265190 19.10.2018 12:12

Вам нужно показать нам свой php-скрипт, полную структуру html и js, чтобы лучше понять вашу ситуацию. И то, что вы планируете делать

McBern 19.10.2018 12:17

Другие вопросы по теме