Комментарии на сайте

12
T7
На сайте с 26.02.2012
Offline
53
761

На всех страницах выводятся одни и те же комментарии ! :madd:

Пишешь на одной странице, а на другой то же самое (((

Вот проверьте: http://biz.ya-xo.ru/1index.html

Посмотрите пожалуйста в коде, где то ошибка ... :idea:

---------- Добавлено 06.01.2013 в 15:13 ----------

Вот код index.php:

<?php include "include/cfg.php"; // Соединяемся с базой данный MySQL

$res = mysql_query ("SELECT * FROM ".$tbl." ORDER BY id DESC",$db); // Вытаскиваем комментарии из БД

$row = mysql_fetch_array ($res); // Формируем массив из полученных данных

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"/>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>

<title>Комменты</title>

<link href="style.css" rel="stylesheet" type="text/css"/>

</head>

<body>

<?php

if (mysql_num_rows($res) > 0) {

do {printf ("<div class='comment'><div class='top'>Добавил: <strong>%s</strong> (%s) в %s</div><div class='text'>%s</div></div>",$row["name"],$row["email"],$row["date"],$row["text"]);}

while($row = mysql_fetch_array ($res));

}

?>

<h1 class="title">Добавление комментария:</h1>

<form name="comment_f" class="comment-form" method="post" action="submit.php">

<p>Имя:<br/><input name="name" type="text"/></p>

<p>Email:<br/><input name="email" type="text"/></p>

<p>Текст:<br/><textarea name="text" rows="5" cols="30"></textarea></p>

<p><input class="button" name="button" type="submit" value="Добавить"/></p>

</form>

</body>

</html>

ValdisRu
На сайте с 02.10.2006
Offline
139
#1
tean777:

<?php include "include/cfg.php"; // Соединяемся с базой данный MySQL
$res = mysql_query ("SELECT * FROM ".$tbl." ORDER BY id DESC",$db); // Вытаскиваем комментарии из БД
$row = mysql_fetch_array ($res); // Формируем массив из полученных данных
?>

ну в вашем запросе как раз вытаскиваются все коментарии

я так понимаю двиг самопис

нужно условие добавить чтобы отфильтровать комментарии к определенной статье (у таблицы коментариев должно быть специальное поле - ид статьи к которой относится данный коментарий)

типа так

SELECT * FROM ".$tbl." WHERE article_id=".$article_id." ORDER BY id DESC

Обалденный заработок на социальных сетях (https://goo.gl/Qtsq6M)
kdv12
На сайте с 05.12.2011
Offline
52
#2

Используй LIMIT в sql запросе.

---------- Добавлено 06.01.2013 в 14:26 ----------

К примеру

SELECT * FROM ".$tbl." ORDER BY id DESC LIMIT 0, 10

Разработка сайтов любой сложности на 1С-Битрикс. Бесплатные консультации.
T7
На сайте с 26.02.2012
Offline
53
#3

Вот тут вроде есть ID

---------- Добавлено 06.01.2013 в 15:38 ----------

А это скрин структуры, может здесь неправильно?

TV
На сайте с 05.01.2013
Offline
2
#4

это id комментария, а есть ли article_id ?

если нет, то надо добавить.

T7
На сайте с 26.02.2012
Offline
53
#5

Нет article_id нет нигде, я проверил ... А куда его добавить ? Вы бы могли показать на куске кода?!

---------- Добавлено 06.01.2013 в 16:13 ----------

Содержание файла submit.php :

<link href="style.css" rel="stylesheet" type="text/css">

<?php

include "include/cfg.php";

$name = trim ($_POST["name"]);

$name = htmlspecialchars ($name);

$email = trim ($_POST["email"]);

$email = htmlspecialchars ($email);

$text = trim ($_POST["text"]);

$text = htmlspecialchars ($text);

$date = date("d M Y G:i:s");

if (!isset($name) or empty ($name)) {echo "<meta http-equiv='refresh' content='3;URL=$_SERVER[HTTP_REFERER]'>";exit ("<div align='center'><div class='alert'>Âû íå ââåëè èìÿ!</div></div>");}

if (!isset($email) or empty ($email)) {echo "<meta http-equiv='refresh' content='3;URL=$_SERVER[HTTP_REFERER]'>";exit ("<div align='center'><div class='alert'>Âû íå ââåëè email!</div></div>");}

if (!isset($text) or empty ($text)) {echo "<meta http-equiv='refresh' content='3;URL=$_SERVER[HTTP_REFERER]'>";exit ("<div align='center'><div class='alert'>Âû íå ââåëè òåêñò êîììåíòàðèÿ!</div></div>");}

$insert = mysql_query ("INSERT INTO ".$tbl." (name,date,email,text) VALUES ('$name','$date','$email','$text')",$db);

if($insert == "true") {echo "<meta http-equiv='refresh' content='3;URL=$_SERVER[HTTP_REFERER]'>";echo "<div align='center'><div class='alert'>Êîììåíòàðèé óñïåøíî äîáàâëåí!</div></div>";}

else {echo "<meta http-equiv='refresh' content='3;URL=$_SERVER[HTTP_REFERER]'>";echo "<div align='center'><div class='alert'>Êîììåíòàðèé íå äîáàâëåí!</div></div>";}

?>

TV
На сайте с 05.01.2013
Offline
2
#6

1) добавить поле в таблице.для этого выполнить запрос

alter table comment add column `article_id ` int NOT NULL default 0;

2) при создании комментария добавить article_id

заменить

$insert = mysql_query ("INSERT INTO ".$tbl." (name,date,email,text) VALUES ('$name','$date','$email','$text')",$db);

на

$insert = mysql_query ("INSERT INTO ".$tbl." (name,date,email,text, article_id) VALUES ('$name','$date','$email','$text','NUM')",$db);

вместо NUM подставить номер статьи

3) поменять запрос

$res = mysql_query ("SELECT * FROM ".$tbl." ORDER BY id DESC",$db); // Вытаскиваем комментарии из БД на

$res = mysql_query ("SELECT * FROM ".$tbl." where article_id = NUM ORDER BY id DESC",$db);

NUM - id статьи

по хорошему надо еще создать таблицу со списком всех статей.

T7
На сайте с 26.02.2012
Offline
53
#7

Поменял я все эти поля (NUM не подставлял) че то "борода" какая то повылезала :)

вот на этой странице http://biz.ya-xo.ru/111index.html

---------- Добавлено 06.01.2013 в 16:51 ----------

Короче я понял что все это лажа, может посоветуете где скачать простой скрипт комментариев и заодно книгу по MySQL и PHP (для чайников)

TV
На сайте с 05.01.2013
Offline
2
#8

вместо NUM записывать надо id статьи. попробуйте заменить на 1

---------- Добавлено 06.01.2013 в 14:53 ----------

я бы рекомендовал wordpress или joomla

T7
На сайте с 26.02.2012
Offline
53
#9

Спасибо дружище, че то стало прояснятся )) Мне надо отехать, я попозже отпишусь ... Выручаешь меня ...

T7
На сайте с 26.02.2012
Offline
53
#10

2) при создании комментария добавить article_id

заменить

$insert = mysql_query ("INSERT INTO ".$tbl." (name,date,email,text) VALUES ('$name','$date','$email','$text')",$db);

на

$insert = mysql_query ("INSERT INTO ".$tbl." (name,date,email,text, article_id) VALUES ('$name','$date','$email','$text','NUM')",$db);

вместо NUM подставить номер статьи

Вот этот кусок кода записан в файле submit.php . И если я меняю NUM на число (скажем 1) да, то выводятся комментарии только для одной страницы, это хорошо! Но вот если мне надо сделать комментарии и на другой странице, то уже некатит такой вариант( только если создать еще один файл submit.php) и написать вместо NUM (скажем 2)... Дак вот можно вместо NUM написать что то типа "от 0 до бесконечности" ??

---------- Добавлено 06.01.2013 в 20:34 ----------

Все сделал вроде ))) Вторую часть настройки взял здесь - http://www.inetwm.com/articles/comment_dop.htm

---------- Добавлено 06.01.2013 в 20:36 ----------

Только вот в этих комментариях картинка капчи одна и та же ... Может кто знает как разнообразить ??

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий