| |
|
|
| | При написании скрипта столкнулся с такой проблемой:
Из таблицы arxiv Базы данных MySQL
---------------------------
name mes
---------------------------
itica Привет!
aciti Как дела?
itica Пока!!!
---------------------------
|
нужно извлечь все данные и поместить их в массив. И затем на другой странице в JS разобрать этот массив , чтобы содержимое массива в браузере выглядило примерно так:
itica: Привет!
aciti: Как дела?
itica: Пока!!!
|
| |
| |
|
|
| |
|
|
| |
для: itica
(01.06.2006 в 14:54)
| | | А много данных? Их через сессию можно будет передать? | |
| |
|
|
| |
|
|
| |
для: cheops
(01.06.2006 в 15:45)
| | | Данных будет много (диалог оператора и посетителя), передача массива в JS будет происходить по средствам AJAX.
У меня вызвало затруднение как правильно запихнуть данные в массив, и потом их оттуда извлечь (не получается выводить данные в порядке: сообщение напротив имени своего автора). | |
| |
|
|
| |
|
|
| |
для: itica
(01.06.2006 в 15:55)
| | | А в таблице имеются ещё какие-то поля, кроме name и mes - по ним сложно задать порядок - база данных их может хранить в произвольном порядке (особенно если записи удаляются и обновляются). | |
| |
|
|
| |
|
|
| |
для: cheops
(01.06.2006 в 15:59)
| | | Да, это time и email. | |
| |
|
|
| |
|
|
| |
для: itica
(01.06.2006 в 15:55)
| | |
<? include'config.inc.php';
if(!($res = mysql_query($sql = "SELECT * FROM adr")))
exit("Error in $sql : <br>". mysql_query());
{ ?> <script language=javascript>
function out(n,m) { document.writeln('<tr><td>'+n+'</td><td>'+m+'</td></tr>'); }
var arr = [ <? }
for($sep = "\r\n"; $row = mysql_fetch_assoc($res); $sep = "\r\n,")
echo "$sep{'n': '".addslashes($row['name'])
."', 'm': '".addslashes($row['mes'])."' }";
?> ]; document.writeln('<table>'); //out('Name', 'Message');
for(i = 0; arr.length> i; i++) out(arr[i].n+':', arr[i].m);
document.writeln('</table>'); </script>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(01.06.2006 в 16:01)
| | | Если я помещю на одной странице данные из таблицы в массив:
$zapros = mysql_query("select * from arxiv;");
if($zapros)
{
while($row = mysql_fetch_object($zapros))
{
$name.=$row->name."|";
$mess.=$row->mes."|";
}
$_RESULT = array(
"name" => $name,
"mes" => $mess,
);
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
|
Затем передам его по средствам AJAX, на что мне следует заменить строку:
(req.responseJS.name||'')+': '+ (req.responseJS.mes||'') + '<br>';
|
в файле-приёмнике, чтобы в окне браузера вывелась информация, так как я показал в начале темы. | |
| |
|
|
| |
|
|
| |
для: itica
(01.06.2006 в 17:22)
| | | Поднимаю тему! Неужели никто не знает? | |
| |
|
|
| |
|
|
| |
для: itica
(01.06.2006 в 17:22)
| | | >Затем передам его по средствам AJAX, на что мне следует
Вы покажите, как Вы это делаете, а дальше что-нибудь придумаем. | |
| |
|
|
| |
|
|
| |
для: Trianon
(02.06.2006 в 09:45)
| | | Файл test.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style>
body {overflow:auto;margin:10px;font-family:Verdana;font-size:11px;}
</style>
<script language="JavaScript" src="dk_JsHttpRequest/Js.js"></script>
<script>
function dk_JsHttpRequest(force)
{var query = '' + document.getElementById('param1').value;
var req = new Subsys_JsHttpRequest_Js();
req.onreadystatechange = function()
{if (req.readyState == 4)
{if (req.responseJS)
{document.getElementById('res').innerHTML +=
(req.responseJS.name||'')+': '+ (req.responseJS.mes||'') + '<br>';
}
}
}
req.caching = true;
req.open('POST', 'dk_JsHttpRequest.php', true);
req.send({ q: query, test:303 });
}
</script>
<script src="" id="dataloader"></script>
</head>
<body>
<br>
<b>Запрос :</b> <input type="text" id="param1">
<br><br>
<input type="button" value="Subsys_JsHttpRequest" onclick="dk_JsHttpRequest(true)" />
<br><br><br>
<div id="res" style="background:#6699cc;border:1px solid darkblue;color:white;font-family:Verdana;font-size:11px;padding:10px;width:400px;height:300px;overflow:auto;">
</div></script>
</body>
</html>
|
dk_JsHttpRequest.php:
<?
include "config.php";
require_once "dk_JsHttpRequest/config.php";
require_once "dk_JsHttpRequest/Php.php";
$JsHttpRequest =& new Subsys_JsHttpRequest_Php("windows-1251");
$dano=$_REQUEST['q'];
$zapros = mysql_query("select * from obshie_arxiv;");
if($zapros)
{
while($row = mysql_fetch_object($zapros))
{
$name.=$row->name."|";
$mess.=$row->mes."|";
}
$_RESULT = array(
"name" => $name,
"mes" => $mess,
);
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
?>
|
Сейчас это работает, но выводится в таком порядке:
itica|aciti|itica|: Привет!|Как дела?|Пока!!!|
|
| |
| |
|
|
| |
|
|
| |
для: itica
(02.06.2006 в 13:00)
| | | Так это не AJAX, а его функциональный аналог от Дмитрия КОтерова (dklab.ru) ? | |
| |
|
|
| |
|
|
| |
для: Trianon
(02.06.2006 в 13:24)
| | | Да, но ведь функционал такой же? Или я ошибаюсь? Может AJAX лучше? | |
| |
|
|
| |
|
|
| |
для: itica
(02.06.2006 в 13:38)
| | | Подскажите хоть как нибудь! | |
| |
|
|
| |
|
|
| |
для: itica
(04.06.2006 в 20:19)
| | | Это вообще возможно? Если нет, то вероятно есть какой-либо другой способ? | |
| |
|
|
| |
|
|
| |
для: itica
(04.06.2006 в 22:19)
| | | Можно для особо одарённых - в чём проблема?
Что сделать надо? | |
| |
|
|
| |
|
|
| |
для: valenok
(05.06.2006 в 00:17)
| | | Нужно разбить массив: при получении, так как показано в моём первом сообщении!
Если снова непонятно объяснил пишите...
$zapros = mysql_query("select * from arxiv;");
if($zapros)
{
while($row = mysql_fetch_object($zapros))
{
$name.=$row->name."|";
$mess.=$row->mes."|";
}
$_RESULT = array(
"name" => $name,
"mes" => $mess,
);
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
|
при получении, так как показано в моём первом сообщении!
Если снова непонятно объяснил пишите... | |
| |
|
|
| |
|
|
| |
для: itica
(05.06.2006 в 12:49)
| | | Вот ещё одно объяснение:
Есть одна страница которая помещает данные в массив, примерно вот так:
$zapros = mysql_query("select * from arxiv;");
if($zapros)
{
while($row = mysql_fetch_object($zapros))
{
$name.=$row->name."|";
$mess.=$row->mes."|";
}
$_RESULT = array(
"name" => $name,
"mes" => $mess,
);
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
|
Этот массив передаётся на другую страницу, вот её содержание:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style>
body {overflow:auto;margin:10px;font-family:Verdana;font-size:11px;}
</style>
<script language="JavaScript" src="dk_JsHttpRequest/Js.js"></script>
<script>
// загрузка данных с сервера без прямого обновления страницы
// с использованием библиотек Subsys_JsHttpRequest ( разработчик - "dk lab" | http://dklab.ru/ )
function dk_JsHttpRequest(force)
{var query = '' + document.getElementById('param1').value;
var req = new Subsys_JsHttpRequest_Js();
req.onreadystatechange = function()
{if (req.readyState == 4)
{if (req.responseJS)
{document.getElementById('res').innerHTML +=
(req.responseJS.name||'')+': '+ (req.responseJS.mes||'') + '<br>';
}
}
}
req.caching = true;
req.open('POST', 'dk_JsHttpRequest.php', true);
req.send({ q: query, test:303 });
}
</script>
<script src="" id="dataloader"></script>
</head>
<body>
<br>
<b>Запрос :</b> <input type="text" id="param1">
<br><br>
<input type="button" value="Subsys_JsHttpRequest" onclick="dk_JsHttpRequest(true)" />
<br><br><br>
<div id="res" style="background:#6699cc;border:1px solid darkblue;color:white;font-family:Verdana;font-size:11px;padding:10px;width:400px;height:300px;overflow:auto;">
</div></script>
</body>
</html>
|
Похорошему я с ней не разобрался, но насколько я понял строка:
(req.responseJS.name||'')+': '+ (req.responseJS.mes||'') + '<br>';
|
Отвечает за отображение массива в браузере.
Меня интересует: что нужно прописать в строке:
(req.responseJS.name||'')+': '+ (req.responseJS.mes||'') + '<br>';
|
чтобы данные в браузере выглядили примерно так:
itica: Привет!
aciti: Как дела?
itica: Пока!!!
|
Для справки: содержание таблицы arxiv:
---------------------------
name mes
---------------------------
itica Привет!
aciti Как дела?
itica Пока!!!
---------------------------
|
Помойму объяснил подробнее некуда. | |
| |
|
|
| |
|
|
| |
для: itica
(05.06.2006 в 14:18)
| | | А js обязателен?
Кто у тебя массив разбивает? | |
| |
|
|
| |
|
|
| |
для: valenok
(05.06.2006 в 15:20)
| | | Все операции по разбиению происходят во 2 странице, где-то здесь:
<script language="JavaScript" src="dk_JsHttpRequest/Js.js"></script>
<script>
function dk_JsHttpRequest(force)
{var query = '' + document.getElementById('param1').value;
var req = new Subsys_JsHttpRequest_Js();
req.onreadystatechange = function()
{if (req.readyState == 4)
{if (req.responseJS)
{document.getElementById('res').innerHTML +=
(req.responseJS.name||'')+': '+ (req.responseJS.mes||'') + '<br>';
}
}
}
req.caching = true;
req.open('POST', 'dk_JsHttpRequest.php', true);
req.send({ q: query, test:303 });
}
</script>
|
Если можно обойтись без JS, то как? Я не знаю :( | |
| |
|
|
| |
|
|
| |
для: itica
(05.06.2006 в 15:43)
| | | Кто нибудь!!!
Cheops! Trianon! Valenok! | |
| |
|
|
| |
|
|
| |
для: itica
(05.06.2006 в 20:36)
| | | Объясните почему Вы не отвечаете! Что не так? Я не так объясняю? Или ещё что? | |
| |
|
|
| |
|
|
| |
для: itica
(06.06.2006 в 12:37)
| | | Я, например, и DOM-модель, и асинхронные технологии знаю недостаточно хорошо, чтобы давать какие-то конкретные советы. | |
| |
|
|
| |
|
|
| |
для: itica
(05.06.2006 в 14:18)
| | | А что на это скажет Cheops? | |
| |
|
|
| |
|
|
| |
для: itica
(06.06.2006 в 13:38)
| | | Я утерял нить рассуждения на половине темы :))) | |
| |
|
|
| |
|
|
| |
для: cheops
(06.06.2006 в 19:29)
| | | Это не повод. Я раньше утерял :) | |
| |
|
|
| |
|
|
| |
для: cheops
(06.06.2006 в 19:29)
| | | Можно начать новое обсуждение :))). В сообщении автор: itica (05.06.2006 в 14:18) я объяснил всё подробно. | |
| |
|
|
| |
|
|
| |
для: itica
(06.06.2006 в 20:29)
| | | Если я правильно вас понял, вам нужно просто передать значения из PHP в Javascript? Так? Если да то можно попробовать что бы данные выводились в таблицу, честно говоря не знаток JS но попробовать можно:
document.write('<table cellspacing=0 cellpadding=0 border=0 width="100%" align="center">') ;
function dk_JsHttpRequest(force)
{var query = '' + document.getElementById('param1').value;
var req = new Subsys_JsHttpRequest_Js();
req.onreadystatechange = function()
{if (req.readyState == 4)
{if (req.responseJS)
{document.getElementById('res').innerHTML +=
'<tr><td>'(req.responseJS.name||'')+': '+ (req.responseJS.mes||'') + '</td></tr>';
}
}
}
req.caching = true;
req.open('POST', 'dk_JsHttpRequest.php', true);
req.send({ q: query, test:303 });
}
document.write('</table>');
|
не уверен с синтаксисом, это нужно поэкспериментировать :-) Путем научного тыка. | |
| |
|
|
| |
|
|
| |
для: Mefisto84
(06.06.2006 в 20:54)
| | | Увы... Но теперь вообще ничего не выводится. | |
| |
|
|
| |
|
|
| |
для: itica
(06.06.2006 в 21:50)
| | | Думаю что я <tr><td> не туда засунул.Вам лучше с этим вопросом обратиться в другой раздел форума, HTML CSS JS | |
| |
|
|
| |
|
|
| |
для: Mefisto84
(07.06.2006 в 13:20)
| | | Я сюда как раз оттуда и пришел. Вот ссылка на ту тему: http://softtime.ru/forum/read.php?id_forum=4&id_theme=17712&page=1
Возможно мою проблему можно решить средствами РНР? | |
| |
|
|
| |
|
|
| |
для: itica
(07.06.2006 в 15:40)
| | | А можно ли как-то подругому запихнуть данные в массив $_RESULT?
Напрмер: запихивать данные в массив поочередно, тоесть извлесь одну запись из таблицы из столбика name, затем извлечь данные из столбика mes той же строки откуда были извлечены данные из столбика name и т. д.
Реально ли это? Если да, то как? | |
| |
|
|
| |
|
|
| |
для: itica
(07.06.2006 в 21:33)
| | | Можно ли вообще хоть что-то сделать?
Если нет, или это очень сложно так и скажите!!! | |
| |
|
|
| |
|
|
| |
для: itica
(07.06.2006 в 22:48)
| | | Cheops, я уже облазил все книги, но ничего не нашел. Вся надежда на Вас!!! | |
| |
|
|
| |
|
|
| |
для: itica
(08.06.2006 в 16:06)
| | | Дааа... Всё оказывается очень просто! Если помещать данные вот так:
while($row = mysql_fetch_object($zapros))
{
$name.=$row->name.": ";
$name.=$row->mes."<br>";
}
$_RESULT = array(
"name" => $name,
);
|
Не знаю правильно ли такое решение, однако работает!!! | |
| |
|
|