Создать ответ 
Проблема с формой добавления комментариев
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #1
Проблема с формой добавления комментариев
Так как общение с пользователем Татьяна в комментариях к теме Форма добавления комментариев к темам затянулось и перевалило за 10 сообщений, было принято вынести данную ветку комментариев на форум.

В комментариях к теме оставил сокращенный вариант переписки.

Итак, все началось с комментария:
(25.09.2013 21:02:53)Татьяна писал(а):Здравствуйте! У меня проблемы с двумя последними формами -отправки и вывода комментария.
Так в форме вывода коммент. выводится:
Notice: Use of undefined constant comment_id - assumed 'comment_id' in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 321
Notice: Undefined index: comment_id in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 321
Notice: Use of undefined constant mess_url - assumed 'mess_url' in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 335
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 336
И др. сообщения подобного типа. Помогите устранить проблему. Заранее спасибо.

Наш ответ:
(25.09.2013 21:57:31)Administrator писал(а):У Вас наверно включена функция error_reporting(); Выхода два:
1) Убираем функцию error_reporting(); если таковая имеется, либо выключаем протоколирование ошибок - error_reporting(0); (устанавливаем уровень сообщения об ошибках PHP).
2) Все имена переменных в квадратных скобках берем в двойные кавычки ($_POST['comment_id']).
29.09.2013 21:22:35
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Проблема с формой добавления комментариев
Далее еще один комментарий:
(26.09.2013 10:57:12)Татьяна писал(а):Во всех PHP кодах поставила кавычки, теперь такое сообщение:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 27
Вот сама строчка 27: header("Location: $_SESSION['mess_url']#last");


И наш ответ:
(26.09.2013 19:34:44)Administrator писал(а):У Вас наверно включена функция error_reporting(); Выхода два:
1) Убираем функцию error_reporting(); если таковая имеется, либо выключаем протоколирование ошибок - error_reporting(0); (устанавливаем уровень сообщения об ошибках PHP).
2) Все имена переменных в квадратных скобках берем в двойные кавычки ($_POST['comment_id']).
29.09.2013 21:24:43
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #3
RE: Проблема с формой добавления комментариев
Но порблемы все еще не закончились:
(28.09.2013 09:26:52)Татьяна писал(а):Вот, что перед 27 строкой: ... (удалено, т.к. там 26 строк нашего кода из темы).
А логин, хост и пароль должны быть в кавычках?


И очередной наш ответ:
(28.09.2013 13:06:12)Administrator писал(а):Да. И имя базы тоже должно быть в кавычках.
Удалите из строки header("Location: $_SESSION[mess_url]#last"); одинарные кавычки.
29.09.2013 21:27:15
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: Проблема с формой добавления комментариев
Почти все получилось, но вот опять какая-то ошибка появилась:
(28.09.2013 19:05:00)Татьяна писал(а):Почти получилось... Форма добавления работает и попадает в базу инфа, а вывод комментариев еще не работает, вот, что выдает PHP код:
Notice: Undefined index: comment_id in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 322
Стр.322: if(is_numeric($_POST['comment_id'])and($_POST['ocenka']=='0' or $_POST['ocenka']=='1')){


И опять мы предлагаем вариант устранения ошибки:
(28.09.2013 22:17:33)Administrator писал(а):Добавьте еще одно условие на проверку существования переменной $_POST['comment_id']:
if(isset($_POST['comment_id']) and is_numeric($_POST['comment_id'])and($_POST['ocenka']=='0' or $_POST['ocenka']=='1')){
29.09.2013 21:29:23
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #5
RE: Проблема с формой добавления комментариев
Но и это еще не конец:
(29.09.2013 10:53:11)Татьяна писал(а):Простите, уже замучила Вас своими вопросами, но мне очень нужна эта форма...
Теперь, на странице такое сообщение: Parse error: syntax error, unexpected $end in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 415
Т.е.: </html>


И опять мы предлагаем вариант устранения ошибки:
(29.09.2013 13:08:18)Administrator писал(а):Это скорее всего синтаксическая ошибка. Вероятнее всего Вы где-то пропустили закрывающую фигурную скобку (реже круглую). Так же может возникать из-за короткого тега "<?". Сравните количество открывающих и закрывающих фигурных скобок.
29.09.2013 21:30:44
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #6
RE: Проблема с формой добавления комментариев
Вроде уже все, но не тут то было Smile
(29.09.2013 10:53:11)Татьяна писал(а):Добавила фигурную скобку,но теперь просто пустая страница... Если вам не трудно проверьте пжл мои коды. Заранее огромное спасибо..
<div id="html3" style="position:absolute; overflow:hidden; left:0px; top:769px; width:165px; height:124px; z-index:17">
<?php
session_start();

$link = mysql_connect("хост", "логин", "пароль") 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_mess_login']=$_POST['mess_login'];
$_SESSION['comment_user_text']=$_POST['user_text'];
if (get_magic_quotes_gpc()=="0") {
$_SESSION['comment_mess_login']=mysql_real_escape_string($_SESSION['comment_mess_login']);
$_SESSION['comment_user_text']=mysql_real_escape_string($_SESSION['comment_user_text']);
}
$_SESSION['comment_mess_login']=htmlspecialchars($_POST['mess_login']);
$_SESSION['comment_user_text']=htmlspecialchars($_POST['user_text']);

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

<div id="html4" style="position:absolute; overflow:hidden; left:175px; top:1536px; width:618px; height:125px; z-index:18">
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP']))
$ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else $ip=$_SERVER['REMOTE_ADDR'];
$ip_position=strpos($ip,',');
if ($ip_position>0) $ip_short=substr($ip, 0, $ip_position);
else $ip_short=$ip;
?>/div>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Аттракционный парк "Акваполис"</title>

..потом идет мой код.. и вот опять ваш:

<div id="html5" style="position:absolute; overflow:hidden; left:180px; top:1856px; width:629px; height:420px; z-index:19">
<?php
if (is_numeric($_POST['comment_id'])and($_POST['ocenka']=='0' or $_POST['ocenka']=='1')){
if(isset($_POST['comment_id']) and is_numeric($_POST['comment_id'])and($_POST['ocenka']=='0' or $_POST['ocenka']=='1')){
$result = mysql_query("SELECT count(id),ocenka FROM ocenka_comment
WHERE comment_id='".$_POST['comment_id']."' and ip='".$ip_short."'", $link);
$number = mysql_fetch_array($result);
if ($number[0]==0) {
$result = mysql_query("insert into ocenka_comment (date,comment_id,ip,ocenka)
values ('".date("Y-m-d H:i:s")."','".$_POST['comment_id']."','".$ip_short."','".$_POST['ocenka']."')"); }
elseif ($number[ocenka]!=$_POST['ocenka']) {
$result = mysql_query("UPDATE ocenka_comment
SET date='".date("Y-m-d H:i:s")."',ocenka='".$_POST['ocenka']."'
WHERE comment_id='".$_POST['comment_id']."' and ip='".$ip_short."'"); }
}
}

$result = mysql_query("SELECT * FROM comment
WHERE theme='".$_SESSION['mess_url']."' and moderation=1 ORDER BY id", $link);
$number = mysql_num_rows($result);

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

for ($n=1; $n<=$number; $n++) {
$comments=mysql_fetch_array($result);

$result_minus = mysql_query("SELECT sum(ocenka=1), sum(ocenka=0) FROM ocenka_comment
WHERE comment_id='".$comments['id']."' LIMIT 1", $link);
$ocenka_com=mysql_fetch_array($result_minus);

echo '<br><table border="0" width="100%" style="border: 1px solid #4874a3;"><tr>';
echo '<td align="left">';
echo '<div id="m'.$comments['id'].'"></div><b>'.$comments['login'].'</b></td>';
echo '<td width="140">';
echo '<span style="font-size:12px;">('.$comments['date'].')</span></td>';
echo '<td width="20">';
echo '<form method="POST" action="'.$_SESSION['mess_url'].'#m'.$comments['id'].'">';
echo '<input type="hidden" name="comment_id" value="'.$comments['id'].'">';
echo '<input type="hidden" name="ocenka" value="1">';
echo '<input type="image" src="image/up.png" title="Хороший комментарий">';
echo '</form></td>';
echo '<td width="5"><b>'.($ocenka_com['0']-$ocenka_com['1']).'</b></td>';
echo '<td width="20">';
echo '<form method="POST" action="'.$_SESSION['mess_url'].'#m'.$comments['id'].'">';
echo '<input type="hidden" name="comment_id" value="'.$comments['id'].'">';
echo '<input type="hidden" name="ocenka" value="0">';
echo '<input type="image" src="image/down.png" title="Плохой комментарий">';
echo '</form></td></tr></table>';
echo '<table border="0" width="100%" style="border: 1px solid #eeeeee;" bgcolor="#eeeeee">';
echo '<tr><td colspan="5" align="justify">';
echo wordwrap(nl2br($comments['message']), 70, "\n", 1);
echo '</td></tr></table>';
}
echo '</div><br>';
}
else echo '<hr>';
?></div>

<div id="html5" style="position:absolute; overflow:hidden; left:180px; top:1856px; width:629px; height:420px; z-index:19">
<?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" align="center">';
echo '<tr><td colspan="2" align="center">';
echo '<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 '</td></tr><tr><td width="300">';

echo '<b>Ваше имя: </b><input type="text" name="mess_login" maxlength="20" value="'.$_SESSION['comment_mess_login'].'" required>';

echo '</td><td align="right">';
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_mess_login']='';
$_SESSION['comment_user_text']='';

if (isset($_SESSION['send'])and($_SESSION['send']!="")) {
echo '<font color="red"><b>'.$_SESSION['send'].'</b></font>';
$_SESSION['send']="";
}
echo '</div>';
?></div>


</div></body>
</html>
29.09.2013 21:32:11
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #7
RE: Проблема с формой добавления комментариев
Итак, что в этот раз не так:
1) Зачем Вы помещаете PHP код, который абсолютно ничего не выводит на экран внутрь блоков DIV? Хоть это и не смертельно, но абсолютно не нужно. Я о блоках div id="html3"... и div id="html4" . Удалите их и ничего не изменится, зато сразу выполните второй пункт. Wink
2) Сессию нужно стартовать в самом начале страницы до вывода каких-либо данных или тегов на экран.
Вот первые две строчки, с которых должна начинаться страничка:
PHP код:
<?php
session_start
(); 
3) Попался один не закрытый тег: ?>/div> Исправьте.
4) Зачем Вы добавляете форме ответа position:absolute; и left:180px; top:1856px;. Ведь не у всех мониторы одинаковые. Думаю это лишнее.
29.09.2013 21:41:47
Найти все сообщения Цитировать это сообщение
Tatiana_M Не на форуме
Рядовой
*

Сообщений: 3
У нас с: Sep 2013
Сообщение: #8
RE: Проблема с формой добавления комментариев
Выполнила все 4 пункта. Появилась моя страница, а сверху на самом верху наложение:
Notice: Undefined index: comment_id in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 319
Под ней табл. с выводом комм-ев и табл. с оставлением комм-я.
Стр.319:
if (is_numeric($_POST['comment_id'])and($_POST['ocenka']=='0' or $_POST['ocenka']=='1')){
Вот сама стр.сайта: tursayt.ru/akvapark_akvapolis.html
Сайт создавался в программе Web Page Maker, там автоматически это появляется: "position:absolute; и left:180px; top:1856px;" - по этой причине на планшете наложения текста бывают? Ведь там экран значительно меньше..
30.09.2013 15:55:53
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #9
RE: Проблема с формой добавления комментариев
В сообщении №4 данной темы уже говорилось, как избавиться от приведенной Вами ошибки, видать пропустили.

Не знаю как там в Web Page Maker, я все сам ручками пишу, поэтому считаю что заключать все внутрь блоков DIV с заданным местоположением и размерами лишним. Тем более это затруднит внесение изменений. И как Вы уже сами убедились, блоки налазят друг на друга.

P.S. Вашу ссылку сделал неактивной.
30.09.2013 18:47:19
Найти все сообщения Цитировать это сообщение
Tatiana_M Не на форуме
Рядовой
*

Сообщений: 3
У нас с: Sep 2013
Сообщение: #10
RE: Проблема с формой добавления комментариев
Выполняла все пункты, как вы писали, в т.ч. и по сообщению №4, вот:
if (is_numeric($_POST['comment_id'])and($_POST['ocenka']=='0' or $_POST['ocenka']=='1')){
if(isset($_POST['comment_id']) and is_numeric($_POST['comment_id'])and($_POST['ocenka']=='0' or $_POST['ocenka']=='1')){
Кавычку закрыла в конце этой строки:
WHERE comment_id='".$_POST['comment_id']."' and ip='".$ip_short."'"); }
}
}
01.10.2013 09:01:45
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


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


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru