Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: выборка из базы ajax

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
kvins
Отправлено: 11 Марта, 2011 - 22:46:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




покажите пожалуста как асинхронно выводить с ajax все сообщения , лажу по сайтам и все время или не то или не правильно работает

к примеру я вытаскиваю из базы с циклом

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         require_once ("db.php");      база данных
  3.  
  4. $res = mysql_query ("SELECT name,text FROM messages");
  5. while ($write = mysql_fetch_assoc ($res)) {
  6.         echo "<strong>".$write['name']."</strong> : ".$write['text']."<br>"; }
  7.  
  8. ?>


и как это выводить например в блок каждый раз когда появляется сообщение в базе <div id="message"><p></p> </div>

(Отредактировано автором: 11 Марта, 2011 - 22:48:59)



-----
тута
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Марта, 2011 - 22:54:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну во первых эээ если нужно аппендить (добавлять в конец) только новое сообщение,
нужно еще и записывать данные о кол-ве сообщений (или последний порядковый номер по увеличению). И делать проверку - если сообщений стало на 1 больше - отдавать его клиенту(клиентам)...

А код щас напишу и скину..
Jquery пойдет???
 
 Top
kvins
Отправлено: 11 Марта, 2011 - 22:55:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




о дааа как раз jquery это самое оно =)
спс


-----
тута
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Марта, 2011 - 23:07:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. var updateResult = setInterval(
  2.         function() {
  3.                 $.ajax({
  4.                         type: "post",
  5.                         url: "script.php",
  6.                         data: "get",
  7.                         context: $("#result"),
  8.                         dataType: "json",
  9.                         cache: true,
  10.                         success: function(r) {
  11.                                 $(this).html("<b>" + r.name + "</b>: <i>" + r.mess + "</i>");
  12.                                 }
  13.                         });
  14.                 },
  15.         3000);



script.php
PHP:
скопировать код в буфер обмена
  1. <php
  2. if (isset($_POST['get'])) {
  3.     $request['name'] = 'Вася';
  4.     $request['mess'] = md5(mt_rand().time());
  5.     echo json_encode($request);
  6.     }
  7. ?>

В простейшем варианте так....
Остальное зависит от ситуации и конкретных задач...
(Добавление)
З.Ы. Код жаваскрипта выдает сейчас только одно сообщение стирая предыдущее.
Если надо чтобы как в чате:
Смени строку $(this).html("<b>" + r.name + "</b>: <i>" + r.mess + "</i>");
на $(this).append("<b>" + r.name + "</b>: <i>" + r.mess + "</i>");
 
 Top
kvins
Отправлено: 11 Марта, 2011 - 23:32:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




не понимаю почему не работает (
это дополнение для моего кода? или оно должно было вывести имя вася и дату
я пробовал только твой код и вместе с моим не работает (

библиотека jquery подключена
мб это уже параноя ,но не че если это все на 1 странице находится ?=)

(Отредактировано автором: 11 Марта, 2011 - 23:34:04)



-----
тута
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Марта, 2011 - 23:33:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




ты только мой попробуй
 
 Top
kvins
Отправлено: 11 Марта, 2011 - 23:41:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




ну вот полная страница . специально проверил alert ('df'); думал мб библиотеку не подключил но она появляется

вставте мою страницу полностью , мб я чета не так сделал
забыл напомнить что я изменил на свою страницу она у меня называется my.php а то у вас тогда точно не пойдет =)

Цитата:
<?php
if (isset($_POST['get'])) {
$request['name'] = 'Вася';
$request['mess'] = md5(mt_rand().time());
echo json_encode($request);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251" />
<title>Автоматическая подгрузка контента</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>

</head>
<body>
<script>
alert('gh');
var updateResult = setInterval(
function() {

$.ajax({

type: "post",
url: "my.php",
data: "get",
context: $("#result"),
dataType: "json",
cache: true,
success: function(r) {
$(this).html("<b>" + r.name + "</b>: <i>" + r.mess + "</i>");

}

});

},

3000);
</script>


<div id="result"></div>

</body>
</html>

(Отредактировано автором: 11 Марта, 2011 - 23:48:20)



-----
тута
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Марта, 2011 - 23:55:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Был косяк маленький - пустой ПОСТ не хотел передавать...
В аттаче рабочий...
(Добавление)
И листинг вдогонку:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. if (isset($_POST['get'])) {
  3.         $request['n'] = 'Вася';
  4.         $request['mess'] = md5(mt_rand().time());
  5.         echo json_encode($request);
  6.         exit();
  7.         }
  8. header('Content-Type: text/html; charset=utf-8');
  9. ?>
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  11.  
  12. <html xmlns="http://www.w3.org/1999/xhtml">
  13.  
  14. <head>
  15.  
  16. <title> Вася пишет в чат мемуары </title>
  17. <script type="text/javascript" src="js/jquery.js"></script>
  18. <script type="text/javascript">
  19. var updateResult = setInterval(
  20.         function() {
  21.                    $.ajax({
  22.                         type: "post",
  23.                         url: "vasya.php",
  24.                         data: "get=message",
  25.                         context: $("#result"),
  26.                         dataType: "json",
  27.                         cache: false,
  28.                         success: function(r) {
  29.                                 $(this).append("<div><b>" + r.n + "</b>: <i>" + r.mess + "</i></div>");
  30.                                 }
  31.                         });
  32.                 },
  33.          3000);
  34. </script>
  35.  
  36. </head>
  37.  
  38. <body>
  39.         <div id="result" style="overflow: auto; width: 600px; height: 200px; border: solid 1px #ff0000;"></div>
  40. </body>
  41. </html>

Скачать файл: vasya.php.zip
Скачан раз: 149
 
 Top
kvins
Отправлено: 12 Марта, 2011 - 00:24:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




я так и знал что что то не так с этим denver ом
я тестирую через denver 2

должно было имя появится? скачал файл загрузились тока стили (
мб в php.ini что то не так ?

ща заплачу надоел ajax тупить ))

скажи а через что ты проверяешь свои файлы на работоспособность ?

(Отредактировано автором: 12 Марта, 2011 - 00:33:29)



-----
тута
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Марта, 2011 - 00:49:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Проверь путь до самой библиотеки jquery - у тебя он может быть другим..
На чем проверяю?

Apache/2.2.12
PHP 5.2.10
 
 Top
kvins
Отправлено: 12 Марта, 2011 - 01:05:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




ну да точно была, изменил проверил работает ли jquery работает а скрипт нет

а если установить php и Apache на комп ,то потом можно через браузер как обычную html открывать?


-----
тута
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Марта, 2011 - 01:49:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




http://95[dot]25[dot]219[dot]163/
(Добавление)
А вот тут на адресе nginx + phpFCGI
Как видишь тоже все работает...
(Добавление)
Работа скрипта зааисит не от того на чем он выполняется и в каком окружении.
Все проблемы только в том - как он написан (скопирован)...
Ищи ошибки у себя...
 
 Top
kvins
Отправлено: 12 Марта, 2011 - 08:53:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




ееее спасибо =)
оказывается дело в денвере как я и подозревал.

я скачал самый новый на их офф сайте и скопировал 2 файла нечего не меняя и у меня все пошло как в вашем примере. потом опять на старом проверил но нече не работает

если делать чат то какая функция делает так чтоб вид был на последнем сообщение
(то есть щас когда появляются новые сообщения то чтоб их увидеть надо прокрутить вниз, как это автоматизировать?)

а еще забыл вроде за нее функция load отвечает, надо показывать мини gif пока не загрузилось а то люди не поймут отправилось или нет

(Отредактировано автором: 12 Марта, 2011 - 09:36:33)



-----
тута
 
 Top
Viper
Отправлено: 12 Марта, 2011 - 09:47:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




kvins оборачиваете каждое сообщение в div.
затем прокручиваете страницу к этому div

CODE (javascript):
скопировать код в буфер обмена
  1. $("html:not(:animated), body:not(:animated)").animate({scrollTop: $("div:last").offset().top-10});

т.е. позиция элемента(верхняя граница) -10 пикселей.

:last это последний элемент в коллекции элементов. т.е. в
CODE (html):
скопировать код в буфер обмена
  1. <div>
  2.         <div id="a_1"></div>
  3.         <div id="a_1"></div>
  4.         <div id="a_1"></div>
  5.         <div id="a_1"></div>
  6.         <div id="a_1"></div>
  7.         <div id="a_1"></div>
  8.         <div id="a_1" class="te"></div>
  9. </div>


CODE (html):
скопировать код в буфер обмена
  1. <div id="a_1" class="te"></div>
будет как раз таки :last

kvins пишет:
а еще забыл вроде за нее функция load отвечает, надо показывать мини gif пока не загрузилось а то люди не поймут отправилось или нет

load тут ни причем. можно любым способом сделать.

История сего действа такова...
рисуете div в него тыкаете image с лоадером, далее обновляете этот div при ajax.success
обновлять можно с replaceWith

(Отредактировано автором: 12 Марта, 2011 - 09:52:25)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
kvins
Отправлено: 12 Марта, 2011 - 10:53:20
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




я вставил ваш код 2 строки
Цитата:

$("html:not(:animated), body:not(:animated)").animate({scrollTop: $("div:last").offset().top-10});


в success в код который дал мне DeepVarvar но почему то теряется фокусировка после
где то 50 сообщений (ускорил вывод сообщений на 1 сообщение в секунду) . почему так ? и так же если тронуть скрол прокрутку

тю как то он выборочно делается то 1 раз делаешь он теряет фокус после там 50 сообщений в 2 раз все нормально и так далее

перезашел опять теперь вообще не работает эта функция не показывает последнюю

код вставил сюда
Цитата:

<script type="text/javascript">
var updateResult = setInterval(

function() {
$.ajax({
type: "post",
url: "vasya.php",
data: "get=message",
context: $("#result"),
dataType: "json",
cache: false,
success: function(r) {

$(this).append("<div><b>" + r.n + "</b>: <i>" + r.mess + "</i></div>");
    $("html:not(:animated), body:not(:animated)").animate({scrollTop: $("div:last").offset().top-10});

}
});
},
1000);
</script>

(Отредактировано автором: 12 Марта, 2011 - 11:35:05)



-----
тута
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB