Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: комментарии на сайте без перезагрузки
 
 автор: lukanuga   (29.08.2011 в 05:16)   письмо автору
 
 

Добрый день!

Пытался добавить скрипт "комментарии на сайте без перезагрузки"

Исползовал вот этот материал
http://www.ajaxs.ru/lesson/ajax/110-dobavlenie_kommentariev_bez_perezagruzki_stranicy.html

выводит ошикбка undefined
Автор скрипта пишет что ошибка undefined выводится когда прописаны неверные параметры подключения к базе данных.

Пробовал и так и этак соединиться с БД, но ошибка сохранилась.
Прошу промощи.

  Ответить  
 
 автор: DEM   (29.08.2011 в 05:44)   письмо автору
 
   для: lukanuga   (29.08.2011 в 05:16)
 

приведите свой код... Особено ту часть, где идёт присоединение к БД

  Ответить  
 
 автор: lukanuga   (29.08.2011 в 07:29)   письмо автору
 
   для: DEM   (29.08.2011 в 05:44)
 

Форма выводит. Ввожу имя и текст. Идет обработка "Ваш комментарий обрабатывается". Потом появляется надпись "undefined"
Привожу код и соединение с БД.
<!--вывод комментариев -->
<?php
$result 
mysql_query("SELECT * FROM comment WHERE post='$id' ORDER BY id",$db);
if(
mysql_num_rows($result) > 0)
{
$comment mysql_fetch_array($result);
do
{
$text $comment["text"];
$author $comment["author"];
$date $comment["date"];

printf("<div><strong>%s</strong><br>Добавлено: %s<br>%s</div>",$author,$date,$text);
}
while (
$comment mysql_fetch_array($result));
}
?>    

<div id='cerror'></div>
<br><br>
<p><form action="#" method="POST" enctype="multipart/form-data" name="addcom" id="addcom" onSubmit="return false">
Ваше имя:<br>
<input name="author" type="text" size="30" class="pole" id="author"><br><br>
Текст комментария:<br>
<textarea name="text" rows="5" cols="50" class="text"></textarea><br>           
<br>
<input name="id" type="hidden" value="<?php echo $id?>">
<input class="adscom" name="button" type="button" value='Добавить комментарий' onclick="doLoad(document.getElementById('addcom'))">    
</form>
</p>


CREATE TABLE IF NOT EXISTS `comment` (
  `id` int(5) NOT NULL auto_increment,
  `post` int(5) NOT NULL,
  `author` varchar(30) NOT NULL,
  `text` text NOT NULL,
  `date` varchar(30) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

--
-- Дамп данных таблицы `comment`
--

  Ответить  
 
 автор: cheops   (29.08.2011 в 10:50)   письмо автору
 
   для: lukanuga   (29.08.2011 в 07:29)
 

1) Дело происходит локально или на сервере?
2) Где-нибудь пред скриптом, который приведен есть код установки соединения с базой данных при помощи функции mysql_connect()?

  Ответить  
 
 автор: Jovidon   (29.08.2011 в 11:49)   письмо автору
 
   для: cheops   (29.08.2011 в 10:50)
 

Можно оставить форму без обработчика?

  Ответить  
 
 автор: lukanuga   (29.08.2011 в 13:52)   письмо автору
 
   для: cheops   (29.08.2011 в 10:50)
 

файлы на сервере.
Сверху идет соединение с БД. Ошибок нет.
<?php include ("blocks/bd.php");

<?php
$db = mysql_connect ("localhost", "user", "12335");
mysql_select_db ("base", $db);
?>

  Ответить  
 
 автор: zorg84   (29.08.2011 в 16:00)   письмо автору
 
   для: lukanuga   (29.08.2011 в 13:52)
 

Выложи ещё сам файл обработчик comment.php.

  Ответить  
 
 автор: lukanuga   (30.08.2011 в 21:02)   письмо автору
 
   для: zorg84   (29.08.2011 в 16:00)
 

выкладываю код, только тот вопрос снимается.
Что написать в этом коде, чтобы получать уведомления на e-mail что получен новый коммент для его последущей модерации?
<?
include_once("bd.php");
// Запрет на кэширование
header("Expires: Mon, 23 May 1995 02:00:00 GTM");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GTM");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
//****

$log =="";
$error="no"//флаг наличия ошибки

require_once 'JsHttpRequest.php';
$JsHttpRequest =& new JsHttpRequest("utf-8");

//Короткие имена переменных и обрезка пробелов img_title
$text trim($_POST['text']);
$author trim($_POST['author']);
$id trim($_POST['id']);

//Проверка email адреса

if($author == ''){
    
$log .= "Пожалуйста, введите Ваше имя<br>";
    
$error "yes";
}

//Проверка наличия введенного текста комментария
if (empty($text)){
    
$log .= "Необходимо указать текст сообщения!<br>";
    
$error "yes";
}
else{
    
//Должнен быть хоть один символ на русском языке
    
$spam=1;  

    for(
$i=0;$i<strlen($text);$i++){
        if((
ord($text[$i])>=192) && (ord($text[$i])<=255)){$spam=0;break;}
    }

    if (
$spam == 1)    {
        
$log .= "Ваше сообщение не содержит ни одной русской буквы.<br>";
        
$error "yes";    
    } 

}

//Проверка длины текста комментария
if(strlen($text)>1000){
    
$log .= "Слишком длинный текст, в вашем распоряжении 1000 символов!<br>";
    
$error "yes";
}
     
//Проверка на наличие длинных слов
$mas preg_split("/[\s]+/",$text);
foreach(
$mas as $index => $val){
    if (
strlen($val)>40)  {
        
$log .= "Слишком длинные слова (более 40 символов) в тексте записи!<br>";
        
$error "yes";
        break;
    }
}
    
//Экранирование и преобразование опасных символов
if (!get_magic_quotes_gpc()){
    
$text addslashes($text);
    
$author addslashes($author);
    
$cod addslashes($cod);
}

$text htmlspecialchars($text);
$author htmlspecialchars($author);
$cod htmlspecialchars($cod);

//Если нет ошибок добавляем в базу  
if($error=="no"){
    
$date date("d-m-Y в H:i");
    
$result2 mysql_query("INSERT INTO comment (post,author,text,date) VALUES ('$id','$author','$text','$date')",$db);
    
//****
    
$ok="<div><strong>".$author."</strong><br>Добавлено: ".$date."<br>".$text."</div>";

    
//Помещаем результат в массив
    
$GLOBALS['_RESULT'] = array(
    
'error' => 'no',
    
'ok' => $ok
    
);

}
else {
//если ошибки есть
     
$log "<div><strong><font color='red'> Ошибка! </font></strong><br>".$log."</div>";
    
//Отправляем результат в массив
    
$GLOBALS['_RESULT'] = array(
    
'error' => 'yes',      
    
'er_mess' => $log);
}  
?>

  Ответить  
 
 автор: zorg84   (31.08.2011 в 00:56)   письмо автору
 
   для: lukanuga   (30.08.2011 в 21:02)
 

Попробуй так только подправь под свою таблицу

("INSERT INTO comment (post,author,text,date) VALUES ('$id','$author','$text','$date')",$db); 
    //**** 
    $ok="<div><strong>".$author."</strong><br>Добавлено: ".$date."<br>".$text."</div>";


$address = "твой@mail.ru";
$subject = "Новый комментарий на блоге";
$result3 = mysql_query ("SELECT title FROM data WHERE id='$id'",$db);
$myrow3 = mysql_fetch_array ($result3);
$post_title = $myrow3["title"];
$message = "Появился комментарий к заметке - ".$post_title."\nКомментарий добавил(а): ".$author."\nТекст комментария: ".$text."\nСсылка на заметку: http://localhost/phpsite/view_post.php?id=".$id."";
mail($address,$subject,$message,"Content-type:text/plain; Charset=utf-8\r\n");

  Ответить  
 
 автор: lukanuga   (31.08.2011 в 09:47)   письмо автору
 
   для: zorg84   (31.08.2011 в 00:56)
 

поставил. у меня не работает. только надпись "Ваш комментарий обрабатывается..."
У меня отличие от вашего в том, что у вас $id, а у меня id_pu и видно поэтому не срабатывает. Вопрос: Как передать id_pu из основного файла в comment.php?

comment.php
$address = "твой@mail.ru"; 
$subject = "Новый комментарий на сайте"; 
$result11 = mysql_query("SELECT title, id_pu from data WHERE id_pu='" . mysql_real_escape_string($id_pu) . "'", $db);
$myrow11 = mysql_fetch_array ($result11); 
$post_title = $myrow11["title"]; 
$message = "Появился комментарий к заметке - ".$post_title."\nКомментарий добавил(а): ".$author."\nТекст комментария: ".$text."\nСсылка на заметку: <a href='post_pu.php?id_pu=$myrow11[id_pu]'>; 
mail($address,$subject,$message,"Content-type:text/plain; Charset=utf-8\r\n");


основной файл
<!--вывод комментариев -->
<?php
$result 
mysql_query("SELECT * FROM comment WHERE post='" mysql_real_escape_string($id_pu) . "' ORDER BY id"$db);
if(
mysql_num_rows($result) > 0)
{
$comment mysql_fetch_array($result);
do
{
$text $comment["text"];
$author $comment["author"];
$date $comment["date"];

printf("<p><strong>%s</strong><br>Добавлено: %s<br>%s</p>",$author,$date,$text);
}
while (
$comment mysql_fetch_array($result));
}
?>    
<div id='cerror'></div>
<br><br>
<div align="center"><form action="#" method="POST" enctype="multipart/form-data" name="addcom" id="addcom" onSubmit="return false">
Ваше имя:<br>
<input name="author" type="text" size="30" class="pole" id="author"><br><br>
Текст комментария:<br>
<textarea name="text" rows="5" cols="50" class="text"></textarea><br>           
<br>
<input name="id" type="hidden" value="<?php echo $id_pu?>">
<input class="adscom" name="button" type="button" value='Добавить комментарий' onclick="doLoad(document.getElementById('addcom'))">    
</form>
</div>

  Ответить  
 
 автор: zorg84   (31.08.2011 в 19:09)   письмо автору
 
   для: lukanuga   (31.08.2011 в 09:47)
 

попробуй так
Это в начала comment.php


if (isset($_POST['id_pu']))
{
$id_pu = $_POST['id_pu'];
}
Попробуешь отпишешься получилось или нет

  Ответить  
 
 автор: lukanuga   (01.09.2011 в 00:36)   письмо автору
 
   для: zorg84   (31.08.2011 в 19:09)
 

ничего не поменялось. все так же

  Ответить  
 
 автор: zorg84   (01.09.2011 в 10:39)   письмо автору
 
   для: lukanuga   (01.09.2011 в 00:36)
 

А почему у тебя подключение к базе данных в комент. php так include_once("bd.php");

а в другом другой путь include ("blocks/bd.php");

  Ответить  
 
 автор: lukanuga   (01.09.2011 в 14:58)   письмо автору
 
   для: zorg84   (01.09.2011 в 10:39)
 

Исправил. но все равно не работает.

<?php include ("blocks/bd1.php");
// Запрет на кэширование
header("Expires: Mon, 23 May 1995 02:00:00 GTM");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GTM");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
//****

$log =="";
$error="no"//флаг наличия ошибки

require_once 'JsHttpRequest.php';
$JsHttpRequest =& new JsHttpRequest("utf-8");

//Короткие имена переменных и обрезка пробелов img_title
$text trim($_POST['text']);
$author trim($_POST['author']);
$id trim($_POST['id']);

//Проверка email адреса

if($author == ''){
    
$log .= "Пожалуйста, введите Ваше имя<br>";
    
$error "yes";
}

//Проверка наличия введенного текста комментария
if (empty($text)){
    
$log .= "Необходимо указать текст сообщения!<br>";
    
$error "yes";
}
else{
    
//Должнен быть хоть один символ на русском языке
    
$spam=1;  

    for(
$i=0;$i<strlen($text);$i++){
        if((
ord($text[$i])>=192) && (ord($text[$i])<=255)){$spam=0;break;}
    }

    if (
$spam == 1)    {
        
$log .= "Ваше сообщение не содержит ни одной русской буквы.<br>";
        
$error "yes";    
    } 

}

//Проверка длины текста комментария
if(strlen($text)>1000){
    
$log .= "Слишком длинный текст, в вашем распоряжении 1000 символов!<br>";
    
$error "yes";
}
     
//Проверка на наличие длинных слов
$mas preg_split("/[\s]+/",$text);
foreach(
$mas as $index => $val){
    if (
strlen($val)>40)  {
        
$log .= "Слишком длинные слова (более 40 символов) в тексте записи!<br>";
        
$error "yes";
        break;
    }
}
    
//Экранирование и преобразование опасных символов
if (!get_magic_quotes_gpc()){
    
$text addslashes($text);
    
$author addslashes($author);
    
$cod addslashes($cod);
}

$text htmlspecialchars($text);
$author htmlspecialchars($author);
$cod htmlspecialchars($cod);

//Если нет ошибок добавляем в базу  
if($error=="no"){
    
$date date("d-m-Y в H:i");
    
$result2 mysql_query("INSERT INTO comment (post,author,text,date) VALUES ('$id','$author','$text','$date')",$db);
    
//****
    
$ok="<div><strong>".$author."</strong><br>Добавлено: ".$date."<br>".$text."</div>";

$address "your@mail.ru"
$subject "Новый комментарий на сайте"
$result11 mysql_query("SELECT title, id_pu from pu WHERE id_pu='" mysql_real_escape_string($id_pu) . "'"$db);
$myrow11 mysql_fetch_array ($result11); 
$post_title $myrow11["title"]; 
$message "Появился комментарий к заметке - ".$post_title."\nКомментарий добавил(а): ".$author."\nТекст комментария: ".$text."\nСсылка на заметку: <a href='pu.php?id_pu=$myrow11[id_pu]'>; 
mail(
$address,$subject,$message,"Content-type:text/plainCharset=utf-8\r\n");


    //Помещаем результат в массив
    
$GLOBALS['_RESULT'] = array(
    'error' => 'no',
    'ok' => 
$ok
    );

}
else {//если ошибки есть
     
$log = "<div><strong><font color='red'Ошибка! </font></strong><br>".$log."</div>";
    //Отправляем результат в массив
    
$GLOBALS['_RESULT'] = array(
    'error' => 'yes',      
    'er_mess' => 
$log);
}  
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования