Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2015, 16:24
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

вывод данных из базы
Добрый день.
Прошу по возможности подсказать, как организовать вывод данных из базы? Я хотел бы сделать это следующим способом:
При открытии страницы выгружает первые десять записей, далее после того как пользователь прокрутил все эти записей и дошел до конца он видел кнопку, например "ЕЩЕ". Жмет и ниже открываются еще десть записей.
Вобщем пока не могу понять с чего начать.
Спасибо.

например php код:
if(isset($_POST['nextpage']){
$cur_page =$_POST['nextpage'] + 1;   // POST запросы, по умолчанию 1 (на начальной странице этот же код, только $cur_page = 1;)
$result_per_page = 10;                                                      // вывод 10 записей
$skip = (($cur_page - 1) * $result_per_page);                       // с какой записи выводим
$total_quary = "SELECT * FROM db_main ORDER BY id DESC";  //начальный ВИД запроса
include_once("connection_db.php"); 
//$result = mysql_query($total_quary);
//$total = mysql_num_rows($result);
//$num_pages = ceil($total/$result_per_page);
$total_quary = $total_quary." LIMIT $skip, $result_per_page"; //конечный ВИД запроса
$result = mysql_query($total_quary);
mysql_close;
//$cur_page = $cur_page + 1;
while($row = mysql_fetch_array($result))
{ 
вывод данных
}
?>
<div id="alertpage<?php echo $cur_page;?>">
<input onclick="subNextPage(<?php echo $cur_page;?>);" class="button" type="submit" name="nextpage" value="ЕЩЕ"/>
<div>
<?php
}
?>


javascript:
var subNextPage = function(e){
//alert(e);
var nextpage = e;				
$.post('http://development/nexttest.php',
{
nextpage:nextpage
},
function(data){
var nextpageBack = data; 
$("#alertpage"+e).fadeOut(300,function(){
$(this).html(nextpageBack).fadeIn(300);
});
}
);
};

HTML:
<div id="alertpage<?php echo $cur_page;?>">
<input onclick="subNextPage(<?php echo $cur_page;?>);" class="button" type="submit" name="nextpage" value="ЕЩЕ"/>
</div>

Последний раз редактировалось ivnjavascript, 08.12.2015 в 20:48.
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2015, 19:40
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

вот теперь надо думать как быть с выводом рандома.
SELECT * FROM db_main ORDER BY RAND()
????
Ответить с цитированием
  #3 (permalink)  
Старый 06.12.2015, 05:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

include_once("connection_db.php"); после запроса?!

$total_quary = "SELECT * FROM db_main ORDER BY id DESC"; //начальный запрос

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

ORDER BY RAND() - слишком тормозная штука.
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2015, 20:54
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

пробую создать сразу рандомный запрос, но нужно сделать так, что бы следующие выводы не повторяли предыдущие.
например вот такой код:
$rnd = range(0, 5);
shuffle($rnd);
	for($i=0; $i<count($rnd); $i++){
		   $query[] = '(SELECT * FROM db_main LIMIT '.$rnd[$i].', 1)';
	}
$query = implode(' UNION ', $query);
echo $query;
Ответить с цитированием
  #5 (permalink)  
Старый 09.12.2015, 16:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Вы думаете терзать базу запросами в цикле, это лучшее?

Сообщение от ivnjavascript
При открытии страницы выгружает первые десять записей, далее после того как пользователь прокрутил все эти записей и дошел до конца он видел кнопку, например "ЕЩЕ". Жмет и ниже открываются еще десть записей
И как это будет выглядеть в контексте случайно выборки?
Ответить с цитированием
  #6 (permalink)  
Старый 09.12.2015, 18:49
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

после
$query = implode(' UNION ', $query);
echo $query;

получаем:
(SELECT * FROM db_main LIMIT 18, 1) UNION (SELECT * FROM db_main LIMIT 3, 1) UNION (SELECT * FROM db_main LIMIT 5, 1) UNION (SELECT * FROM db_main LIMIT 4, 1) UNION (SELECT * FROM db_main LIMIT 16, 1)

если у Вас есть предложения с выводом рандомных записей, был бы благодарен.
Ответить с цитированием
  #7 (permalink)  
Старый 09.12.2015, 19:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

В сети много об этом написано, есть на хабре, ссылок дать не могу, но есть, то есть предлагаются различные способы решения.

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

"SELECT * table WHERE field IN(" . implode(",", keys) . ")"


одним запросом.

Иначе с range что-то будет выбираться не единожды, а что-то может и вообще не показано.

Если нужно что-то собрать, то необязательно "по частям", это можно записать и разом:

$str = implode('separator or none', function() {
    return .....
}, $array)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Асинхронный вывод данных из базы MySQL Vikky Общие вопросы Javascript 14 05.01.2014 09:43
Вывод данных из базы в цикле со ссылкой на всплывающее окно alexvb Events/DOM/Window 14 10.02.2012 16:16
обновление и вывод из базы данных sarkis AJAX и COMET 1 02.12.2011 04:37
Индикатор загрузки данных из базы wfire jQuery 13 20.06.2011 13:00
Экспорт базы данных с сайта на мой реальный комп Golovastik Серверные языки и технологии 2 26.02.2011 21:46