Это мой код, в котором я передаю comment
и идентификатор сообщения (скрытый тег ввода) в другой файл php comments.php
который должен вставлять его в db и показывать результат, но его не происходит.
Это моя форма – часть кода, цитируемого в echo … У меня есть auto increment pid
связанный с каждым сообщением, поэтому для каждого комментария, comment
и pid
хранятся в базе данных:
<form method=\"POST\" onSubmit=\"comment(); return false;\"> <input id=\"comment\" type=\"text\" placeholder=\"Add Comment...\" name=\"comment\"> <input type=\"hidden\" name=\"pid\" value=\"".$row['pid']."\"> <div class=\"z\"><input type=\"submit\" name=\"submit\" ></div> </form>
JavaScript – функция comment()
вызывается для формы комментария каждого сообщения, используя onsubmit
.
function comment() { jQuery.ajax({ url: "comments.php", data: $('form').serialize(), type: "POST", success:function(data){ $("#".$row['pid']).html(data); }, error:function (){ } }); }
Это код comments.php
:
<?php session_start(); include 'db.php'; $j =$_POST['comment']; $k = $_POST['pid']; $l =$_SESSION['uname']; $sql = "INSERT INTO comments (pid,name,comment) values ('$k','$l','$j')"; $r = $conn->prepare($sql); $r->execute(); if($r) { echo '<div class="comment"> <a class="avatar"> <img style="height:30px;"src="zmf.jpg"> </a> <div class="content"> <a class="author">'.$l.'</a> <div class="metadata"> <span class="date">Today at 5:42PM</span> </div> <div class="text">'; echo $j.'</div> <div class="actions"> </div> </div> </div> '; } ?>
Возвращение comments.php
должно быть показано в div
в index.php
имеющем id = #postid
который уже назначен в этом index.php для каждого сообщения:
<div id=\"".$row['pid']."\"> </div>
index.php
имеет такой div
для каждого сообщения, поэтому пост, на котором делается комментарий, будет показан комментарий в том, что div
помещается под каждым сообщением. Любая помощь будет оценена по достоинству.
Я запускаю два цикла while, чтобы показать все комментарии previuos для каждого сообщения, как это. первый цикл показывает сообщение и вложенный цикл while с каждым сообщением, который показывает комментарий к каждому сообщению .. и форму комментария для каждого сообщения в цикле while, а div имеет id = postid, чтобы показать результат ajax.
$q = $conn->prepare("SELECT * FROM posts ORDER BY pid DESC"); $q->execute(); while($row = $q->fetch(PDO::FETCH_ASSOC)) { #my post in div #comment form <form method=\"POST\" onsubmit=\"comment()\"> <input id=\"comment\" type=\"text\" placeholder=\"Add Comment...\" name=\"comment\"> <input type=\"hidden\" name=\"pid\" value=\"".$row['pid']."\"> <div class=\"z\"><input type=\"submit\" name=\"submit\" ></div> </form> #div where recent comment is shown using ajax <div id=\"".$row['pid']."\"> </div> #nested while loop for comments $zmf = "SELECT * FROM comments WHERE pid = '" . $row['pid'] . "' ORDER BY comid DESC"; $zed = $conn->prepare($zmf); $zed->execute(); $run = $zed->fetch(); while($run = $zed->fetch()) { my div code and all..for comments } }
каждый пост имеет id pid .. но его nt working ..plz help
У вас есть несколько элементов <form>
на странице? Если это так, попробуйте изменить $('form').serialize()
на $(this).serialize()
.
Можете ли вы предоставить немного больше информации о том, какой результат вы получаете? Вы видите какую-либо запись в базе данных? Каков результат, который вы видите в div после запроса ajax?
Вы используете PDO? Добавьте условие else к вашей проверке if($r)
и добавьте print_r($r->errorInfo())
. Попробуйте включить панель инструментов разработчика в Chrome / Firebug в Firefox и проверить результат запроса ajax (XHR). Если запрос sql не работает, он может вызвать PDOException
. Убедитесь, что запрос XHR возвращает 200 OK
http status.
Попробуйте следующий код и опубликуйте вывод
<?php session_start(); include 'db.php'; $j = $_POST['comment']; $k = $_POST['pid']; $l = $_SESSION['uname']; $sql = "INSERT INTO comments (pid,name,comment) values ('$k','$l','$j')"; print_r($_POST); try { $r = $conn->prepare($sql); $r->execute(); if ($r) { echo '<div class="comment"> <a class="avatar"> <img style="height:30px;"src="zmf.jpg"> </a> <div class="content"> <a class="author">' . $l . '</a> <div class="metadata"> <span class="date">Today at 5:42PM</span> </div> <div class="text">' . $j . '</div> <div class="actions"> </div> </div> </div> '; } else { print_r($r->errorInfo()); } } catch (\Exception $e) { print_r($e); }