Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2009, 02:28
Аспирант
Отправить личное сообщение для alexandre Посмотреть профиль Найти все сообщения от alexandre
 
Регистрация: 23.03.2009
Сообщений: 44

вывод таблички из mysql в ajax
Пытаюсь немного изучать ajax и вот столкнулся с задачей вывести даные из базы данных в браузуре.
Есть табличка:
id name
1 client_1
2 client_2
3 client_3

Серверная часть небольшой запрос:

$select = 'SELECT name';
$from = ' FROM clients';
$queryResult = @mysql_query($select . $from);
if (!$queryResult)
die('Error database.');
while ($row = mysql_fetch_array($queryResult)) {
$names = $row['name'];
}
echo $names;

часть яваскрипта :
function getNames() {
request = new XMLHttpRequest();
var url = "query.php";
request.open("GET", url, true);

request.onreadystatechange = updatePage;
request.send(null);
}

function updatePage() {
if (request.readyState == 4) {

var newNames = request.responseText;

var NamesE = document.getElementById("name-clients");
replaceText(NamesE, newNames);
}

function replaceText(el, text) {
if (el != null) {
clearText(el);
var newNode = document.createTextNode(text);
el.appendChild(newNode);
}
}

и собствено кусок index.html:
<table>
<tr><th>Имя клиента</th>
<td>$<span id="name-clients"> name</span></td></tr> </table>

Проблема состоит в том что выводит только в одной ячейке последнее значение тоесть client_3. Как вывести все значения нужной ячейки или всей таблицы никак не получается. Толи в запросе чтото не то и надо всю табличку в запросе вывести то ли в updatePage() дописать чтото?
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2009, 07:45
Аспирант
Отправить личное сообщение для gosha_kap Посмотреть профиль Найти все сообщения от gosha_kap
 
Регистрация: 03.07.2009
Сообщений: 41

while ($row = mysql_fetch_array($queryResult)) {
$names = $row['name'];
}
echo $names;

Ошибка здесь , у тебя массив перебирается , но значение каждый раз переписывает в переменной , чтобы получить весь список самое банальное это
$names. = $row['name'];

Т.е просто поставить точку '.'ну и вставить пробелы если нужно )
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2009, 14:04
Профессор
Отправить личное сообщение для AzriMan Посмотреть профиль Найти все сообщения от AzriMan
 
Регистрация: 27.02.2009
Сообщений: 215

или делать каждый раз echo $names
Ответить с цитированием
  #4 (permalink)  
Старый 15.07.2009, 14:41
Аспирант
Отправить личное сообщение для alexandre Посмотреть профиль Найти все сообщения от alexandre
 
Регистрация: 23.03.2009
Сообщений: 44

Поставил точку теперь выводит все три значения но в одной ячейке а можно както зделать чтоб выводило в столбик ну как в обычной табличке.
сечас:
--------------------------------------------
name| Client 1Client 2Client 3|
--------------------------------------------
а хотелось бы:

-------------
| name |
--------------
| Client 1 |
--------------
| Client 2 |
--------------
| Client 3 |
--------------
Ответить с цитированием
  #5 (permalink)  
Старый 16.07.2009, 11:53
Аспирант
Отправить личное сообщение для gosha_kap Посмотреть профиль Найти все сообщения от gosha_kap
 
Регистрация: 03.07.2009
Сообщений: 41

Не знаю , в этом случае первое , что приходит на ум ( уж извините опыта мало ), это возвращать XML документ и парсить его
к примеру

ваш в ваш php код добавтье что то вроде
while($row=$result->fetch_array())
	   {
	    $name=$row['name'];
		$grid.='<row>'.$name.'</row>';
		
	   }
header('Content-Type: text/xml; charset="windows-1251";');// 
echo '<?xml version="1.0" encoding="windows-1251"?>';
	echo '<data>';
	echo $grid;
	echo '</data>';


Далее в js сцерание первое что пришло на ум это
newNames = request.responseXML;
xmlDoc=newNames.documentElement;
result=xmlDoc.getElementsByTagName("row");
span=document.getElementById("name-clients");

for( var i=0;result.length>i;i++)
{
	span.innerHTML+="<tr><td>"+result[i].firstChild.data+"</td></tr>";
}


Тогда в Html уберите лишнее
<table>
<tr><th>Имя клиента</th></tr>
<span id="name-clients"/> </table>


Что то вроде этого , короче суть передал ... )))
Ответить с цитированием
  #6 (permalink)  
Старый 16.07.2009, 12:02
Аспирант
Отправить личное сообщение для gosha_kap Посмотреть профиль Найти все сообщения от gosha_kap
 
Регистрация: 03.07.2009
Сообщений: 41

Всегда есть куча других вариантов ......
Ответить с цитированием
  #7 (permalink)  
Старый 19.07.2009, 04:56
Аспирант
Отправить личное сообщение для alexandre Посмотреть профиль Найти все сообщения от alexandre
 
Регистрация: 23.03.2009
Сообщений: 44

В Мозиле не работает показывет в одной ячейке 3 значения как и раньше в Опере работает возможно это связано с подержкой innerHTML? Я читал что по всяким спецификациям его не рекомендуют использовать?
Ответить с цитированием
  #8 (permalink)  
Старый 19.07.2009, 14:12
Аспирант
Отправить личное сообщение для gosha_kap Посмотреть профиль Найти все сообщения от gosha_kap
 
Регистрация: 03.07.2009
Сообщений: 41

InnerHTML можно использовать в мозиле, но сдесь как мне кажется уже суть не в этом , а в располежение элементов в dive или spane при включении их в таблицу , и том как их включать и т.д , в общем простота залог здоровья попробуйте уже в готовую таблицу вставлять необходимые значения

т.е есть таблица типа

<table id="name">
<tr><th>clients name</th></tr>
<tr><td id="name1"></td></tr>
<tr><td id="name2"></td></tr>
<tr><td id="name3"></td></tr>
</table>


а в сценарии сделать так

span=document.getElementById("name");


for( var i=0;result.length>i;i++)
{
	var j=i+1;
	document.getElementById("name"+j).innerHTML=result[i].firstChild.data;
}


такой вариант у меня работает во всех браузерах
Ответить с цитированием
  #9 (permalink)  
Старый 19.07.2009, 19:40
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от gosha_kap
Не знаю , в этом случае первое , что приходит на ум ( уж извините опыта мало ), это возвращать XML документ и парсить его
к примеру
причин для этого нету, а вот отправлять разметку всей таблицы - это да
p.s. http://webew.ru/articles/598.webew
Ответить с цитированием
  #10 (permalink)  
Старый 19.07.2009, 20:42
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от gosha_kap
в ваш php код добавтье что то вроде
лучше использовать XMLDOM-функции
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с AJAX запросом + mod_rewrite BrokenEye AJAX и COMET 1 12.07.2009 02:08
Пошаговый вывод скрипта для IE всех версий. Zidky Элементы интерфейса 10 17.06.2009 18:27
Объясните как вызывается ajax скрипт AddressBook из формы prog90 AJAX и COMET 3 06.06.2009 16:12
Формуляр с AJAX konstantinopol Общие вопросы Javascript 4 31.03.2009 14:24
PHP, JavaScript, MySQL solomusic Серверные языки и технологии 14 18.12.2008 14:05