Создать ответ 
Проблема с формой добавления комментариев
Автор Сообщение
Tatiana_M Не на форуме
Рядовой
*

Сообщений: 3
У нас с: Sep 2013
Сообщение: #11
RE: Проблема с формой добавления комментариев
Огромное вам спасибо, что отвечали на все мои сообщения, помогали решить мою проблему. Я захожу в тупик с программой, в которой создавала сайт, т.к. у нее мало возможностей для создания хорошего сайта. Я перепишу сайт сама и поставлю вашу форму комментариев, если уже возникнут проблемы, то обращусь к вам заново.
Спасибо вам еще раз!!!
01.10.2013 10:54:29
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #12
RE: Проблема с формой добавления комментариев
Т.к. в комментариях к теме Форма добавления комментариев к темам с пользователем Костя развернулся целый диалог, было принято перенести ветку данных комментариев на форум для уменьшения комментариев в теме, оставив только первые четыре.

А все началось с сообщения:
(11.10.2013 21:22:38)Костя писал(а):У меня такая ошибка:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\p\www\pg.php on line 97
Помогите разобраться.

На что был нами дан ответ:
(11.10.2013 23:06:24)Administrator писал(а):Тут Вы либо неправильно подключились к БД, либо ошибка в запросе к ней.

Потом еще вопрос:
(12.10.2013 00:08:14)Костя писал(а):Все по примеру сделал. А Вы можете кинуть мне демо?

И еще один наш ответ:
(12.10.2013 12:35:12)Administrator писал(а):Код в теме рабочий, только что проверил. Попробуйте сделать все на пустой страничке и заново создать таблицы в базе, а уже потом интегрируйте на сайт.

Все последующие комментарии были перенесены на форум с сохранением синтаксиса и дат.
13.10.2013 12:06:37
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #13
RE: Проблема с формой добавления комментариев
Далее следуют комментарии в порядке их поступления:

(12.10.2013 13:39:59)Костя писал(а):Вместо русских букв, браузер отображает символы. У меня так:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
И в Note выбирал кодировки - кодировать без BOM.
Я вставил <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
И стали отображаться русские буквы. Я не допустил ошибок?


(12.10.2013 14:21:38)Administrator писал(а):Нет, все нормально. Кодировки символов - на Ваше усмотрение. В примере в базе используется UTF-8, т.к. на нашем сайте везде используется UTF-8.
13.10.2013 12:09:07
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #14
RE: Проблема с формой добавления комментариев
(12.10.2013 14:40:17)Костя писал(а):У меня возникла следующая проблема
Форма отображается на странице, я ее заполняю, нажимаю "отправить" и у меня появляется чистый лист с ошибкой: Warning: Cannot modify header information - headers already sent by (output started at Z:\home\baz\www\new.php:5) in Z:\home\baz\www\new.php on line 24
Вот эта строка header("Location: $_SESSION[mess_url]#last");
Запись в БД появляется.


(12.10.2013 15:02:36)Administrator писал(а):Это из-за того, что у Вас до первого кода что-то выводится на экран (какой-нибудь тег или даже пробел). Посмотрите, чтобы до первого PHP кода данной темы на страничке ничего не было.
13.10.2013 12:10:43
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #15
RE: Проблема с формой добавления комментариев
(12.10.2013 15:19:13)Костя писал(а):Форма для комментариев отображается отлично, как у Вас.
Комментарии выводятся. Но снова проблема. Если заполнять поле русскими буквами, то отобразится пустой блок. На английском все нормально, и имя и текст сообщения отображаются.


(12.10.2013 16:18:19)Administrator писал(а):Сделайте везде одинаковые кодировки (в БД, в head, и в .htaccess). Так же после подключения к БД, укажите кодировку ( например, $result = mysql_query("set names utf8", $link); ).
13.10.2013 12:12:18
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #16
RE: Проблема с формой добавления комментариев
(12.10.2013 17:17:05)Костя писал(а):Это не помогло, причем, на всей странице иероглифы появились.


(12.10.2013 21:46:30)Administrator писал(а):Значит, где-то кодировка отличается...
13.10.2013 12:14:51
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #17
RE: Проблема с формой добавления комментариев
(13.10.2013 01:25:14)Костя писал(а):Я так понял, везде должна быть utf8?
И в Note++ Кодировки - utf8 (без Bom) или просто utf8?


(13.10.2013 01:41:32)Костя писал(а):Вот везде ставлю utf8 и все заработало. Страница на русском.
Но когда пишу комментарий и отправляю его, то стали выходить ошибки:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\baz\www\new.php:1) in Z:\home\baz\www\new.php on line 1

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\baz\www\new.php:1) in Z:\home\baz\www\new.php on line 20

Хотя, если вернуться назад, на предыдущую страницу, то можно увидеть добавленные комментарии, причем на русском.


(13.10.2013 02:35:22)Костя писал(а):Я разобрался с кодировками. Скажите, а как сделать, чтоб новые комментарии выводились вверху, а не внизу?
13.10.2013 12:18:28
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #18
RE: Проблема с формой добавления комментариев
Радует, что все-таки у Вас все получилось и Вы разобрались.

Для вывода комментариев в обратном порядке (последние сверху), достаточно сделать сортировку в обратном порядке в MySQL запросе (добавить desc):
$result = mysql_query("SELECT * FROM comment
WHERE theme='".$_SESSION[mess_url]."' and moderation=1 ORDER BY id desc", $link);
13.10.2013 12:22:47
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #19
RE: Проблема с формой добавления комментариев
(13.10.2013 13:06:10)Костя писал(а):С выводом тоже получилось. Подскажите, а как убрать оценку комментария и ввод имени?


Тут тогда надо кое-что уточнить. Вы хотите убрать оценки из кода совсем или только скрыть их? Тогда что должно остаться? Поле для ввода комментариев и проверочный код?

И зачем Вам тогда изначально потребовалось внедрять столько лишнего, чтобы потом удалять. Scratch
13.10.2013 15:57:52
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #20
RE: Проблема с формой добавления комментариев
(13.10.2013 16:16:33)Костя писал(а):У меня в БД только две таблицы, которые указаны в таблице. Больше ничего добавлять я не планирую.
Я хочу, чтобы посетители сайта писали и отправляли сообщение без указания в форме имени и ввода результата примера. Не скажется ли это на безопасности? На сайте спрашивай.ру так реализовано(только текстовое поле и кнопка отправить).
Также хочу, чтоб сообщение выводилось на странице без оценок (совсем их убрать и соответственно без имени).

Первое предложение не совсем понял, что за таблицы в таблице, но предполагаю речь о таблицах comment и ocenka_comment. Так вот таблица ocenka_comment теперь Вам не нужна, можете удалять ее. А из таблицы comment удалите поле login.

Далее привожу три блока кода, которые Вам понадобятся.

Этот, как и раньше идет первым в самом начале странички:
PHP код:
<?php
session_start
();

$link mysql_connect("localhost""***""***") or die("Could not connect: " mysql_error());
mysql_select_db("***"$link);

$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');

if (isset(
$_POST[contr_cod])) {
 
$_SESSION[comment_user_text]=$_POST[user_text];
 if (
get_magic_quotes_gpc()=="0"$_SESSION[comment_user_text]=mysql_real_escape_string($_SESSION[comment_user_text]);
 
$_SESSION[comment_user_text]=htmlspecialchars($_POST[user_text]);

 if (
md5($_POST[contr_cod])==$_POST[prov_summa]) {
  
$result mysql_query("insert into comment (date,theme,message) values ('".date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."','".$_SESSION[comment_user_text]."')");
  
$_SESSION[send]='Комментарий принят и ожидает модерации.';
  
$_SESSION[comment_user_text]='';
  
header("Location: $_SESSION[mess_url]#last");
  exit;
 }
 else {
  
$_SESSION[send] = "Неверный проверочный код!";
  
header("Location: $_SESSION[mess_url]#last");
  exit;
 }
}
?>

В том месте, где выводятся комментарии, вот этот код:
PHP код:
<?php
$result 
mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 ORDER BY id desc"$link);
$number mysql_num_rows($result);

if (
$number>0) {
echo 
'<hr><div align="center">
<u><b>Последние комментарии посетителей:</b></u><br>'
;

for (
$n=1$n<=$number$n++) {
 
$comments=mysql_fetch_array($result);
 echo 
'<br><table border="0" width="100%" style="border: 1px solid #4874a3;"><tr>';
 echo 
'<td align="left"><div id="m'.$comments[id].'"></div><b>'.$comments[login].'</b></td>';
 echo 
'<td width="140"><span style="font-size:12px;">('.$comments[date].')</span></td></tr></table>';
 echo 
'<table border="0" width="100%" style="border: 1px solid #eeeeee;" bgcolor="#eeeeee">';
 echo 
'<tr><td colspan="5" align="justify">'.wordwrap(nl2br($comments[message]), 70"\n"1).'</td></tr></table>';
}
echo 
'</div><br>';
}
else echo 
'<hr>';
?>

Ну и сама форма для отправки комментариев:
PHP код:
<?php
echo '<div id="last" align="center">';
echo 
'<form method="POST" action="'.$_SESSION[mess_url].'#last">';
echo 
'<table border="0" style="border: 1px solid #4874a3;border-radius:8px;" bgcolor="#7799ee" cellspacing="4">';
echo 
'<tr><td colspan="2" align="center"><b>Добавить комментарий к теме:</b><br>';

$prov_cod=rand(1000,9980); $prov_cod_2=rand(1,19);

echo 
'<textarea cols="65" rows="5" name="user_text" required>'.$_SESSION[comment_user_text].'</textarea><br>';
echo 
'<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
echo 
'<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';
echo 
'<input type="text" name="contr_cod" maxlength="4" size="4" required>';
echo 
'<input type="submit" value="Отправить"></td></tr></table></form>';

$_SESSION[comment_user_text]='';

if (isset(
$_SESSION[send])and($_SESSION[send]!="")) {
echo 
'<font color="red"><b>'.$_SESSION[send].'</b></font>';
$_SESSION[send]="";
}
echo 
'</div>';
?>
13.10.2013 20:15:43
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru