Запрос к Mysql

  • Автор темы Paster
  • Дата начала
P

Paster

Всем доброго времи суток...

Хочу сделать так: после загрузки страницы через определенное время javascript делается запрос к базе mySQL, берет из нее данные и заносит изменения на страницу, НЕ ПЕРЕЗАГРУЖАЯ ее.
Желательно ограничиться javascript, PHP, mySQL.

буду очень благодерен за Вашу помощь...
 
?

????

ключевое слово ajax
еще более точное XMLHttpRequest
для начала
 
P

Paster

ключевое слово ajax
еще более точное XMLHttpRequest
для начала
Спасибо большое. Прочитал про XMLHttpRequest на вике.
После этого нашел пример
Сделал по аналогии скрипт, но все равно вывести данные из MySQL не получается=(.

Вот то, что я написал:
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Пример</title>
<script language="JavaScript" type="text/javascript">
function GetNewVars(name,text,date)
{
document.getElementById('name').innerHTML = name;
document.getElementById('text').innerHTML = text; 
document.getElementById('date').innerHTML = date; 
};

function processReqChange() 
{
if (req.readyState == 4) 
{
if (req.status == 200) 
{
response = req.responseXML.documentElement;
method = response.getElementsByTagName('method')[0].firstChild.data;
name = response.getElementsByTagName('name')[0].firstChild.data;
text = response.getElementsByTagName('text')[0].firstChild.data;
date = response.getElementsByTagName('date')[0].firstChild.data;

eval(method + ' (name,text,date)');
};
};
};

function loadXMLDoc(url) 
{
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
};
};
};

function Timer()
{
Second--;
document.getElementById('time').innerHTML = Second;
if (Second == Update)
{Update = Second - 10;
id++;
url = 'http://localhost/js_test.php?id='+id;
loadXMLDoc(url);
};
};	

Second = 60;
Update = Second - 10;
id = 1;

interval = setInterval(Timer,1000);
</script>
</head>

<body>

<div id='time'></div>
<div id='name'></div>
<div id='text'></div>
<div id='date'></div>

<script type="text/javascript">document.getElementById('time').innerHTML = Second;</script>
</body>
</html>

// Файл test.php делает отсчет времени. На каждой 10й секунде должен происходить запрос к базе и данные из нее отображаться в тегах "div"

Код:
<?php 
include("blocks/connect.php");
$id = $_GET["id"];
$id = trim($id);
$r_info = mysql_query("SELECT * FROM news WHERE id = $id LIMIT 1");
$m_info = mysql_fetch_array($r_info);
echo ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
echo("<response>");
echo("<name>".$m_info["name"]."</name>");
echo("<text>".$m_info["text"]."</text>");
echo("<date>".$m_info["date"]."</date>");
echo("</response>");

?>
// Файл js_pest.php обрабатывает значение идентификатора отправленного методом GET и вытаскивает из базы новость по id. (По крайней пере он должен это делать)

При тестировании на IE он выдает ошибку:
IE сказал(а):
Строка:21
Символ: 4
Ошибка: 'response' есть null или не является объектом

Тестировал "js_test.php" напрямую, выдает, по моему то, что нужно.

Помогите мне, пожалуйста. Я уже голову себе сломал%)
PS Оба предоставленные мною скрипта были написаны только, чтобы продемонстрировать эту ошибку. Они протестены, и суть ошибки такая же, как и в основном скрипте, с которым я работаю.
PPS include("blocks/connect.php"); здесь происходит соединение с базой. Оно точно работает корректно.
 
A

alexdrob

на первый взгляд функция function processReqChange() не сможет обратится к обьекту req с функции function loadXMLDoc(url).
добавь после строки
<script language="JavaScript" type="text/javascript">
строку
var req;
 
A

alexdrob

ты получаешь элемент getElementsByTagName('method')
но в твоём пхп файле нет элемента method
и переменная с именем date не очень удачна, есть зарезарвированная функция date может конфликт быть
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!