[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Постраничный вывод данных MySQL
began
использую вот этот скрипт для постранично вывода и базы

скрипт работает выводит на экран строки с базы, посдсчитывает колличство страниц

но проблема в том, что на каждой странице выводитятся такие же строки как и на первой странице.

подскажите в чем может быть проблема и как ее рашить ?




<?php
function
yandex_link_bar($page, $count, $pages_count, $show_link)
{
// $show_link - это количество отображаемых ссылок;
// нагляднее будет, когда это число будет парное
// Если страница всего одна, то вообще ничего не выводим

if ($pages_count == 1) return false;
$sperator = ' '; // Разделитель ссылок; например, вставить "|" между ссылками
// Для придания ссылкам стиля

$style = 'style="color: #808000; text-decoration: none;"';
$begin = $page - intval($show_link / 2);
unset($show_dots); // На всякий случай :)
// Сам постраничный вывод
// Если количество отображ. ссылок больше кол. страниц

if ($pages_count <= $show_link + 1) $show_dots = 'no';
// Вывод ссылки на первую страницу
if (($begin > 2) && ($pages_count - $show_link > 2)) {
echo '<a '.$style.' href='.$_server['php_self'].'?page=1> |< </a> ';
}
for ($j = 0; $j <= $show_link; $j++) // Основный цикл вывода ссылок
{
$i = $begin + $j; // Номер ссылки
// Если страница рядом с началом, то увеличить цикл для того,
// чтобы количество ссылок было постоянным

if ($i < 1) continue;
// Подобное находится в верхнем цикле
if (!isset($show_dots) && $begin > 1) {
echo ' <a '.$style.' href='.$_server['php_self'].'?page='.($i-1).'><b>...</b></a> ';
$show_dots = "no";
}
// Номер ссылки перевалил за возможное количество страниц
if ($i > $pages_count) break;
if ($i == $page) {
echo ' <a '.$style.' ><b>'.$i.'</b></a> ';
} else {
echo ' <a '.$style.' href='.$_server['php_self'].'?page='.$i.'>'.$i.'</a> ';
}
// Если номер ссылки не равен кол. страниц и это не последняя ссылка
if (($i != $pages_count) && ($j != $show_link)) echo $sperator;
// Вывод "..." в конце
if (($j == $show_link) && ($i < $pages_count)) {
echo ' <a '.$style.' href='.$_server['php_self'].'?page='.($i+1).'><b>...</b></a> ';
}
}

// Вывод ссылки на последнюю страницу
if ($begin + $show_link + 1 < $pages_count) {
echo ' <a '.$style.' href='.$_server['php_self'].'?page='.$pages_count.'> >| </a>';
}
return true;
} // Конец функции

// Подключение к базе данных

mysql_connect('localhost', 'root', '') or die('error! Нет соединения с сервером mysql!');
mysql_select_db('data_base') or die('error! Нет соединения с базой данных!');

// Подготовка к постраничному выводу
$perpage = 10; // Количество отображаемых данных из БД
if (empty($_get['page']) || ($_get['page'] <= 0)) {
$page = 1;
} else {
$page = (int) $_get['page']; // Считывание текущей страницы
}
// Общее количество информации
$count = mysql_numrows(mysql_query('select * from table')) or die('error! Записей не найдено!');
$pages_count = ceil($count / $perpage); // Количество страниц
// Если номер страницы оказался больше количества страниц

if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД
// Вызов функции, для вывода ссылок на экран


yandex_link_bar($page, $count, $pages_count, 10);

// Вывод информации из базы данных
echo '<p><b>Постраничный вывод информации</b></p>';
$result = mysql_query('select * from table limit '.$start_pos.', '.$perpage) or die('error!');
while ($row = mysql_fetch_array($result)) {
echo '<p>'.$row['some_field'].'</p>';
}
?>




Спустя 5 минут, 52 секунды (26.01.2011 - 15:34) Evilsoul написал(а):
Первая проблема в коде, вот нормальный навигатор.
А вторая проблема в том что стартовая позиция не меняется для запроса.
Проверь так:
if ($page > $pages_count) $page = $pages_count;
echo $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД

Спустя 6 минут, 36 секунд (26.01.2011 - 15:41) quickxyan написал(а):
походу переменная $start_pos не меняеться. но в листинге вроде меняеться

Спустя 1 минута, 24 секунды (26.01.2011 - 15:42) quickxyan написал(а):
Evilsoul, там выше переменной присваиваеться значение из гет-переменной

Спустя 6 минут, 1 секунда (26.01.2011 - 15:48) Evilsoul написал(а):
quickxyan
если бы $start_pos меняло значение, то думаю вопроса не было бы.

$_server,$_get - вот эти вещи пишутся заглавными буквами, может в этом проблема, замени на $_SERVER, $_GET

Спустя 1 час, 18 минут, 8 секунд (26.01.2011 - 17:07) quickxyan написал(а):
кстати да) я тут недавно нижний прочерк потерял так еле нашелся))))))))0

Спустя 23 минуты, 34 секунды (26.01.2011 - 17:30) began написал(а):
Цитата (Evilsoul @ 26.01.2011 - 12:34)
Первая проблема в коде, вот нормальный навигатор.
А вторая проблема в том что стартовая позиция не меняется для запроса.
Проверь так:
if ($page > $pages_count) $page = $pages_count;
echo $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД

спасибо за подсказку Тут реально рабочий Пагинатор.

Спустя 1 час, 4 минуты, 50 секунд (26.01.2011 - 18:35) began написал(а):
нашел рабочий скрипт вывода данных из MySQL

На экран выводятся строки

бла бла бла
бла бла бла
бла бла бла

посоветуйте новичку что добавить в код что бы строки выводились как ссылки с нижним подчеркиванием. то есть так
<a href="http://site/бла_бла_бла">бла бла бла</a>

Желательно с примером , что на что заменить

Спасибо

вот код

<?php

/**
* Database server.
* Сервер БД.
*/

define('IRB_DBSERVER', 'localhost');

/**
* Database user.
* Пользователь БД
*/

define('IRB_DBUSER', 'root');

/**
* Database password.
* Пароль БД
*/

define('IRB_DBPASSWORD', '');

/**
* Database name.
* Название базы
*/

define('IRB_DATABASE', 'basa');


/**
* Connection and installation of chaeset of connection
* Подключение и установка кодировок соединения
*/

mysql_connect( IRB_DBSERVER, IRB_DBUSER, IRB_DBPASSWORD );
mysql_select_db( IRB_DATABASE);



// Количество строк на странице
$num = 50;

/**
* Generates the navigation menu
*
@param int $count, $page
*
@return string
*/

function createMenu($count, $page)
{
$menu = '';
// Если страниц меньше 13, оставляем все по дефолту.
if($count < 13)
{
$i = 1;
$cnt = $count;
}
else
{

if($page < 6)
{ // Если текущая страница в диапазоне от 1 до 5, выводим первые 10 ссылок
$i = 1;
$cnt = 10;
}
elseif($page >= $count - 5)
{ // Если текущая страница на границе диапазона, или вышла за неё, показываем 10 последних
$i = $count - 10;
$cnt = $count;
}
else
{ // В ином случае показываем 11 страниц: текущую, 5 слева от неё и 5 справа.
$i = $page - 5;
$cnt = $count;
}

// Обрезаем меню
if($count - $i > 10)
$cnt = $i + 10;

}

// Формируем меню
while($i <= $cnt)
{
if($i == $page)
$menu .= '<b>'. $i .'</b> ';
else
$menu .= '<a href="?page='. $i .'">'. $i .'</a> ';

$i++;
}

return $menu;
}

// Принимаем номер требуемой страницы
$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;

// Считаем количество строк в таблице и делим на заданное. Получится количество страниц
$res = mysql_query("SELECT COUNT(*) AS `cnt` FROM `table`");
$count = (mysql_result($res, 0) / $num);



// Формируем вывод
$res = mysql_query("SELECT * FROM `table` LIMIT ". (($page - 1) * $num) .", ". $num);

$table = "<table width=\"50%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n";

if(mysql_num_rows($res) > 0)
while($row = mysql_fetch_assoc($res))
{
$table .= "<tr>\n<td>\n\t". $row['text']. "\n</td>\n</tr>\n";
}

$table .= "</table>\n";
$table = str_replace(".","","$table");
echo $table;
echo createMenu($count, $page);
?>

Спустя 3 минуты, 34 секунды (26.01.2011 - 18:39) Evilsoul написал(а):
Цитата
нашел рабочий скрипт вывода данных из MySQL

Интересно, где же ты его нашел?:)

$table .= "<tr>\n<td>\n\t<a href=\"http://site/бла_бла_бла\">". $row['text']. "</a>\n</td>\n</tr>\n";

Спустя 5 минут, 49 секунд (26.01.2011 - 18:44) began написал(а):
Цитата (Evilsoul @ 26.01.2011 - 15:39)
Цитата
нашел рабочий скрипт вывода данных из MySQL

Интересно, где же ты его нашел?:)

$table .= "<tr>\n<td>\n\t<a href=\"http://site/бла_бла_бла\">". $row['text']. "</a>\n</td>\n</tr>\n";

С вашей помощью уважаемый Evilsoul

Спустя 20 минут, 47 секунд (26.01.2011 - 19:05) began написал(а):
как сделать что бы данные выводились с конца таблицы на первую страницу.? Данные все время будут добавляться и получается что все свежее будет на последних страницах

Спустя 16 минут, 37 секунд (26.01.2011 - 19:22) twin написал(а):
А это зачем?
$table = str_replace(".","","$table");

Спустя 7 минут, 31 секунда (26.01.2011 - 19:29) began написал(а):
Цитата (twin @ 26.01.2011 - 16:22)
А это зачем?
$table = str_replace(".","","$table");

в строках не нужный точки удаляет

Спустя 1 день, 3 часа, 10 минут, 38 секунд (27.01.2011 - 22:40) began написал(а):
как сделать что бы данные выводились с конца таблицы на первую страницу.? Данные все время будут добавляться и получается что все свежее будет на последних страницах

Спустя 19 минут (27.01.2011 - 22:59) Evilsoul написал(а):
в запросе ORDER BY DESC

Спустя 28 минут, 14 секунд (27.01.2011 - 23:27) began написал(а):
Цитата (Evilsoul @ 27.01.2011 - 19:59)
в запросе ORDER BY DESC

а можно с примером что на что поменять или добавить ?

в php не шарю вообще. хотелось бы сайт обновить а тут все самое свежее на последних страницах

Спустя 47 минут, 46 секунд (28.01.2011 - 00:15) inpost написал(а):
Если не разбираетесь, обратитесь к профессионалу за помощью. Только услуга денег будет стоить...

Спустя 29 минут, 59 секунд (28.01.2011 - 00:45) began написал(а):
Цитата (inpost @ 27.01.2011 - 21:15)
Если не разбираетесь, обратитесь к профессионалу за помощью. Только услуга денег будет стоить...

отличный ответ

Тут форум для начинающих? или freelancer?

Спустя 14 минут, 32 секунды (28.01.2011 - 00:59) Evilsoul написал(а):
began
для начинающих, которые учатся и сами делают.

Спустя 19 минут, 15 секунд (28.01.2011 - 01:19) began написал(а):
Цитата (Evilsoul @ 27.01.2011 - 21:59)
began
для начинающих, которые учатся и сами делают.


На примерах легче учиться. не так ли?


Спустя 1 час, 16 минут, 30 секунд (28.01.2011 - 02:35) inpost написал(а):
began
Примеры в книжках, тут работаем с практикой. Ты показываешь код или просишь подсказать. Тебе ответ дали, ищешь примеры в справочниках и книгах, мы лишь помогаем найти направление, само же решение должно всегда исходить от тебя.

Спустя 7 минут, 16 секунд (28.01.2011 - 02:42) Админ написал(а):
чувак на изучение пхп каждый местный убил туеву хучу времени - а ты не хочешь своё время тратить просишь сделать за тебя - ты ради интереса пошарься по форумам со схожей тематикой, там тебя сразу пошлют
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.