Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2014, 12:34
Новичок на форуме
Отправить личное сообщение для malltaf Посмотреть профиль Найти все сообщения от malltaf
 
Регистрация: 15.01.2014
Сообщений: 8

Постраничный вывод новостей
Добрый день, уважаемые знатоки.
Есть код функции вывода новостей, необходимо этот вывод сделать постранично.

// выведем новости
//$typ=0 кратко 1- полно
function GetNews($typ=0)
{global $mysql;
$tmpcont='';
//////////////////////////////////////
$coltov=15;  //количество выводимых новостей на странице
echo ('coltov='.$coltov);
if(isset($_GET['p'])){
	$p=$_GET['p'];
	echo ('<br>'."isset: ".$p.'<br>');}
else {
	$p=1;
	echo ('<br>'."nope: ".$p.'<br>');}
 
$limitstart=($p-1)*$coltov;
 
$query='select count(nw.nomer) as cn from neonnews as nw order by datas' ;
$res = $mysql->sql_query($query) ;
$list = $mysql->sql_fetchrow($res) ;
$colvsego=$list['cn'];
echo $colvsego;
$det='<a href="?usrnews='.$coltov.'&cid=news&p=%s">%s</a>'; //ссылка на страницу
$pages=ViewPage($colvsego,$det,$p,$coltov,5); //5 (default = 10) - количество одновременно выводимых страниц
/////////////////////
$query='select *  from neonnews order by datas DESC';
$res = $mysql->sql_query($query) ;
 
if($coltov>0)
	{
	$tmpcont='fuck <div style="float:left; '._wdth.'">'.$pages.$listsortnw._templdetacs1;
 
		for($i=1; $i<=$coltov; $i++)
		{
		$listviv = $mysql->sql_fetchrow($res) ;
			if($typ)
			$tmpcont.= sprintf(_templnewsf,$listviv['datas'],$listviv['anons'],$listviv['news']);
			else
			$tmpcont.= sprintf(_templnews,$listviv['datas'],$listviv['anons'],$listviv['news']);
		}		
	$tmpcont.='</div>'._templdetacs2;
	}
$mysql->sql_freeresult($res);
return $tmpcont;
}


Новости выводятся, номера страниц тоже (1, 2, 3, 4 и пр.), переход на них посредстом GET осуществляется (номер страницы отображается в адресной строке). Однако новости не меняются, т.е. на первой странице были новости, например, о новой породе собак 2014, на второй (третьей или любой другой), тоже новости о новой породе собак 2014, хотя должны быть о старой модели автомобиля 2013.
Подозреваю, что дело в SQL-запросе. Вероятнее всего, не хватает "limit'.$limitstart.','.$coltov" в query, но как-то не выходит у меня лимитировать запрос (если лимитировать первый запрос, то не выводятся странички (1, 2, 3, 4 ...), если второй - не выводятся сами новости).
Или, может, нужно сделать новый запрос к БД?
Заранее благодарен и надеюсь на вашу помощь.
P.S. Функция ViewPage формирует как раз эти 1, 2, 3, 4 странички, их количество, их внешний вид и т.п.
P.S.S. В БД neonnews есть столбцы nomer (тот же id по сути), anons (короткая версия новости), datas (дата), news (полная версия новости).
P.S.S.S. Всякие echo там для себя, для проверки.
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2014, 13:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от malltaf
Подозреваю, что дело в SQL-запросе.
У каждой СУБДшки свой вариант "постраничного вывода" таблицы...
У нас, например, можно использовать "служебную переменную"

SELECT *, %vid FROM (<твой_запрос>) WHERE %vid BETWEEN <Page-1>*<N> AND <Page>*<N>

Где:
Page - номер страницы
N - количество строк на странице

Для тебя может подойдет что-то из этого...

Последний раз редактировалось ksa, 06.02.2014 в 13:34.
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2014, 13:49
Новичок на форуме
Отправить личное сообщение для malltaf Посмотреть профиль Найти все сообщения от malltaf
 
Регистрация: 15.01.2014
Сообщений: 8

Мда. Спасибо. Нет, серъезно, первый же результат поиска в яндексе помог и проблема решилась. Т.е. добавил я лишь limit '.$coltov.' offset '.$limitstart в второй запрос. А гугл мне подобного не выдавал, плохой гугл, плохой... Ну или я не там искал)
Еще раз спасибо =)
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2014, 13:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от malltaf
первый же результат поиска в яндексе помог и проблема решилась
Ну видал как...
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2014, 14:24
Новичок на форуме
Отправить личное сообщение для malltaf Посмотреть профиль Найти все сообщения от malltaf
 
Регистрация: 15.01.2014
Сообщений: 8

Странно, что LIMIT offset, rows - не решило проблему, а LIMIT rows OFFSET offset - решило...
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2014, 06:08
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Первое значение LIMIT - старт, второе - сколько.

LIMIT 10, 20 --- со строки 10 еще 20 строк, то есть 10-30.

Сообщение от malltaf
а LIMIT rows OFFSET offset
Чистоганом MySQL'ный синтаксис, в АНЗИ нет offset.

Ну и главное, чтобы реализовать страничность требуется узнать каково общее число записей в заданных условиях (where, group by, etc).

UPD. Увидел как оно реализовано. Когда ньюсы внезапно обрастут связанными таблицами такой метод обломится.

Последний раз редактировалось kostyanet, 07.02.2014 в 06:17.
Ответить с цитированием
  #7 (permalink)  
Старый 07.02.2014, 06:09
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от malltaf
первый же результат поиска в яндексе помог и проблема решилась
Неизвестно что вы и как искали. Наверно еще и по-русски.

mysql paging - https://www.google.com/search?safe=o....0.C_mkesy9lDE
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересный вывод новостей. Нужен небольшой совет ireznik jQuery 3 09.09.2013 16:35
Динамический вывод инф-ции из бд для новостей сайта in9emix AJAX и COMET 2 30.07.2012 12:19
Вывод переменных MasterHrust Javascript под браузер 4 03.08.2011 15:41
Постраничный вывод bebeka Общие вопросы Javascript 3 15.08.2010 12:40
Постраничный вывод таблицы R2D2 Элементы интерфейса 5 20.10.2008 22:53