[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с Ajax чатом
Revan
У меня не работает добавление сообщений в чат через Ajax главное вывод работает а добавлени в БД нет (Кодибовка БД cp1251)

Аякс запрос
Код
<script>
 function createXMLHttpChat() {
  if(typeof XMLHttpRequest != "undefined") {
   return new XMLHttpRequest();
  } else if(window.ActiveXObject) {
   var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",
        "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp",
        "Microsoft.XMLHttp"
        ];
   for (var i = 0; i < aVersions.length; i++) {
    try {
     var oXmlHttp = new ActiveXObject(aVersions[i]);
     alert(aVersions[i]);
     return oXmlHttp;
    } catch (oError) {
     
    }
   }
   throw new Error("Невозможно создать объект XMLHttp.");
  }
 }
 
 function displayCustomerChat(sText, res) {
  sElem = document.getElementById(res);
  sElem.innerHTML = sText;
 }
 
 function getRequestChat(url,doc) {
  var oXmlHttp = createXMLHttpChat();
  oXmlHttp.open("GET",encodeURI(url),true);
  oXmlHttp.onreadystatechange = function() {
   if(oXmlHttp.readyState == 4) {
    if(oXmlHttp.status == 200) {
     displayCustomerChat(oXmlHttp.responseText, doc);
    } else {
     displayCustomerChat("Ошибка: " + oXmlHttp.statusText);
    }
   }
  };
  oXmlHttp.send(null);
  setTimeout('getRequestChat("comp/plugins/chat/getchat.php?room=<?=$rmst ?>", "txtCustomerInfo")',2000);
 }
window.onload = getRequestChat("comp/plugins/chat/getchat.php?room=<?=$rmst ?>", "txtCustomerInfo");


Вот форма отправки сообщения
HTML
<input name="" id="msg" class="standart_form" size="60" type="text">
<input name="" class="form" value="Отправить" onclick="JavaScript: getRequestChat('comp/plugins/chat/insert.php?room=<?=$rmst ?>&msg='+document.getElementById('msg').value, 'txtCustomerInfo1'); document.getElementById('msg').value = '';" type="button">
<div id="txtCustomerInfo1"></div>


Файл к оторому идёт GET запрос
PHP
<?
$posted htmlspecialchars($_GET['msg']);
echo 
$posted// Это работает

mysql_connect ("localhost","******","******");
mysql_select_db ("revan_f");

if (
strlen($_GET['msg']) > 500) {
echo 
"Сообщение больше 500 символов!";
}
else
{
$sendres[1] = true;
}

if (
strlen($_GET['msg']) < 2) {
echo 
"Сообщение меньше 2 символов!";
}
else
{
$sendres[2] = true;
}

if (
$sendres[1] && $sendres[2])
{
$messages mysql_query("SELECT COUNT(*) FROM chat WHERE room = '".$_GET['room']."'");
$messagesdel mysql_fetch_array($messages);

if (
$messagesdel[0] > 50) {
mysql_query("DELETE FROM chat WHERE room = '".$_GET['room']."'");
}

mysql_query("INSERT INTO chat (date,ipaddres,name,message,room) VALUES ('".@date("d-m-y H:i")."','".$_SERVER['REMOTE_ADDR']."','".$membautr['login']."','".$posted."','".$_GET['room']."')"); // А вот это нет
}



Что и где не так?



Спустя 28 минут, 49 секунд (27.01.2009 - 19:52) kirik написал(а):
Что выдаст замена mysql_query на exit в INSERT запросе?

Попробуйте такой запрос -
PHP
$date = date('d-m-y H:i');
mysql_query("INSERT INTO `chat` (`date`, `ipaddres`, `name`, `message`, `room`) VALUES ('{$date}', '{$_SERVER['REMOTE_ADDR']}', '{$membautr['login']}', '{$posted}', '{$_GET['room']}')");

Спустя 1 час, 58 секунд (27.01.2009 - 20:53) Revan написал(а):
Замена выдала нормальные результаты, а запрос не работает... Я думаю что проблема где-то в аякс запросе, да и ещё, чат на локальном сервере работал номарльно.

Спустя 1 час, 23 минуты, 13 секунд (27.01.2009 - 22:17) kirik написал(а):
Цитата (Revan @ 27.01.2009 - 12:53)
Замена выдала нормальные результаты

Какие именно? Запрос показался? Правильный?

Спустя 18 минут, 54 секунды (27.01.2009 - 22:35) Revan написал(а):
Какой именно запрос? замена на exit сработала в текстовом виде отобразился весь запрос но а в

PHP
$date date('d-m-y H:i');
mysql_query("INSERT INTO `chat` (`date`, `ipaddres`, `name`, `message`, `room`) VALUES ('{$date}', '{$_SERVER['REMOTE_ADDR']}', '{$membautr['login']}', '{$posted}', '{$_GET['room']}')");


данные не добавелись

Спустя 24 минуты, 39 секунд (27.01.2009 - 23:00) kirik написал(а):
Запрос-то в текстовом виде правильный получился? Все переменные на месте, и пр?
Если этот запрос, который получили выполнить отдельно все вставится?

Спустя 20 часов, 30 минут, 36 секунд (28.01.2009 - 19:31) Revan написал(а):
Не вставилось... Врядли проблема в запросе, в выводе данных то всё нормально, значит и в добавлении должно быть всё аналогично...

Спустя 58 минут, 20 секунд (28.01.2009 - 20:29) FatCat написал(а):
А оттрассировать?

1. В коде заменить mysql_query на die
2. Полученный sql-запрос попробовать запустить через пыхпыхадмин, и посмотреть его выполнимость.

Спустя 1 час, 57 минут, 20 секунд (28.01.2009 - 22:26) Revan написал(а):
Выполнился на все 100%

Спустя 1 минута, 27 секунд (28.01.2009 - 22:28) Revan написал(а):
Вот вам структура таблицы

SQL
CREATE TABLE `chat` (
`id` int(20) NOT NULL auto_increment,
`date` varchar(255) NOT NULL default '',
`ipaddres` text NOT NULL,
`name` varchar(255) NOT NULL default '',
`message` text NOT NULL,
`room` varchar(255) NOT NULL default 'home',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=321 ;

Спустя 8 дней, 8 часов, 38 минут (9.02.2009 - 07:06) AlexisMaster написал(а):
Для отправки сообщений, особенно на русском, особенно с использованием "encodeURI()" лучше будет использовать POST. Только перед вызовом функции "send()" нужно "request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");" написать, и всё ок будет


_____________
FC Barcelona - она всегда будет в моем сердце!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.