Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничный вывод из таблиц SQL с помощью PHP
 
 автор: Gnusmas   (08.03.2006 в 02:26)   письмо автору
 
 

Как мне сделать Постраничный вывод из таблиц SQL с помощью PHP?
Качал, читал книги, статьи так и неполучается сделать постраничный вывод.
Люди помогите пожалуйста!

   
 
 автор: cheops   (08.03.2006 в 02:37)   письмо автору
 
   для: Gnusmas   (08.03.2006 в 02:26)
 

Какая таблица испльзуется и как должны выглядеть ссылки постраничной навигации?

PS Вопросы, посвящённые базам данных лучше сразу помещать в разделе MySQL

   
 
 автор: Gnusmas   (08.03.2006 в 02:55)   письмо автору
 
   для: cheops   (08.03.2006 в 02:37)
 

Таблица "downloads_files". Какой вид будут иметь ссылки мне пофигу, мне главное чтоб работала!!

Извеняюсь за то что нетам создал тему.

   
 
 автор: cheops   (08.03.2006 в 12:58)   письмо автору
 
   для: Gnusmas   (08.03.2006 в 02:55)
 

Если вам не сложно приведите структуру таблицы (получить её можно при помощи оператора SHOW CREATE TABLE) и пару записей к ней. Потому что без таблицы, вас остаётся только направить к темам
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3044
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=2792
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1883
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=721
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1282
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=274
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=302
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=745
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=721
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1169
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=838
А вы вероятно там уже были :)))

   
 
 автор: Gnusmas   (09.03.2006 в 02:04)   письмо автору
 
   для: cheops   (08.03.2006 в 12:58)
 

Вот база:


-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
-- 
-- Хост: localhost
-- Время создания: Мар 09 2006 г., 02:02
-- Версия сервера: 4.1.8
-- Версия PHP: 4.3.10
-- 
-- БД: 'engine'
-- 

-- --------------------------------------------------------

-- 
-- Структура таблицы 'download_files'
-- 

CREATE TABLE 'download_files' (
  'file_id' int(11) NOT NULL default '0',
  'mytitle' varchar(255) NOT NULL default '',
  'disc' text NOT NULL,
  'link' varchar(255) NOT NULL default '',
  'size' varchar(255) NOT NULL default '',
  'date' datetime NOT NULL default '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

-- 
-- Дамп данных таблицы 'download_files'
-- 

INSERT INTO 'download_files' VALUES (1, 'Maxthon 1.5.2.21', 'Новая версия браузера, работающего на движке Internet Explorer. Программа позволяет просматривать веб-страницы в многооконном режиме. Отличительной чертой является подключение большого числа всевозможных плагинов, которые можно выбирать по собственному усмотрению. Подключив к Maxthon необходимые вам дополнения, вы получите быстрый и многофункциональный браузер, с помощью которого можно заниматься удобным интернет-серфингом. Поддерживаются скины. В этой версии улучшены настройки безопасности, улучшен блокировщик всплывающих окон, появились новые настройки, исправлены ошибки.', 'http://dl.iad.downloadhosting.com/download/myie2/mcombo.exe', '5028 кб', '2006-03-07 15:48:03');
INSERT INTO 'download_files' VALUES (16, '454', '', '43435', '4354', '2006-03-09 01:55:39');
INSERT INTO 'download_files' VALUES (15, 'дждждждж', 'дждждждж', 'ждждждждж', 'дджджд', '2006-03-09 01:55:36');
INSERT INTO 'download_files' VALUES (14, 'тьитьитьит', 'итьить', 'итьть', 'ьить', '2006-03-09 01:55:31');
INSERT INTO 'download_files' VALUES (7, 'JetStart Free 3.17', 'Вышла новая версия программы для управления меню Пуск. Она позволяет сгруппировать ярлыки по категориям для их быстрого запуска. Из всплывающего меню, вызываемого нажатием правой кнопки мыши по значку программы в Системном лотке, можно вызвать дополнительные функции. Например, среди них есть возможность закрытия всех приложений, выключение и перезагрузка компьютера и т.д. В JetSrart Free присутствует удобный интерфейс для добавления новых программ в меню быстрого запуска. В специальном Мастере есть функция поиска ярлыков и алфавитный указатель. При использовании функции поиска можно легко найти необходимую программу, зная только несколько первых букв ее названия. Кроме того, через интерфейс данного Мастера можно запустить программу на выполнение, а эту функцию можно использовать для проверки ярлыка на работоспособность. В этой версии улучшено импортирование настроек меню Пуск, улучшен запуск программы.', 'http://codesector.fileburst.com/jetstart.exe', '668 кб', '2006-03-07 20:46:27');
INSERT INTO 'download_files' VALUES (8, 'FontViewer 1.2', 'Обновилась утилита, предназначенная для просмотра шрифтов. Она представляет собой удобное средство для просмотра и установки шрифтов в систему. В программе имеется специальная область экрана, где можно набрать текст. Это делается для того, чтобы предоставить пользователю возможность просмотра начертания того или иного семейства шрифтов. В программе возможны различные варианты просмотра с изменением размера шрифта, жирности и наклона. Утилита имеет маленький размер дистрибутива (менее 100 кб). Область применения FontViewer весьма разнообразна. Так, например, люди, занимающиеся веб-дизайном и работающие с большой коллекцией шрифтов, могут достаточно быстро выбрать подходящий шрифт и установить его в систему.\r\n', 'http://gljakal.altervista.org/files/fontview_setup.exe', '97 кб', '2006-03-07 20:46:56');
INSERT INTO 'download_files' VALUES (9, 'MP3 Cat 1.27', 'Опубликована новая версия программы для создания каталога из MP3 и других музыкальных файлов. Утилита сканирует выбранные директории на наличие в них музыкальных файлов и отображает в удобном виде найденную информацию. Интуитивно понятный интерфейс позволит быстро разобраться во всех тонкостях работы программы. Вы можете за короткое время создать базу, в которой будет содержаться информация обо всех имеющихся у вас музыкальных файлах. MP3 Cat умеет выбирать, искать, сортировать, добавлять и редактировать ID3-теги, создавать список всех файлов созданного пользователем каталога в текстовом или HTML формате. Поддерживается совместная работа с Winamp. В этой версии улучшен поиск, улучшена работа с ID3-тегами, исправлены ошибки. ', 'http://xoomer.virgilio.it/wiz/MP3Cat.exe', '2,6 мб', '2006-03-07 20:59:26');
INSERT INTO 'download_files' VALUES (10, 'выавыавы', 'аывавыа', 'выавыа', 'выавыа', '2006-03-08 00:02:58');
INSERT INTO 'download_files' VALUES (13, 'некек', 'екнекнекнек', 'некн', 'екн', '2006-03-09 01:55:27');
INSERT INTO 'download_files' VALUES (12, 'куе', 'куекуе', 'куеук', 'ававпа', '2006-03-09 01:55:22');
INSERT INTO 'download_files' VALUES (11, 'апапап', 'апап', 'апапа', 'пап', '2006-03-08 05:00:18');
INSERT INTO 'download_files' VALUES (17, '6666', '666', '66', '435', '2006-03-09 01:55:43');
INSERT INTO 'download_files' VALUES (18, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:55:47');
INSERT INTO 'download_files' VALUES (19, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:55:50');
INSERT INTO 'download_files' VALUES (20, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:55:53');
INSERT INTO 'download_files' VALUES (21, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:55:57');
INSERT INTO 'download_files' VALUES (22, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:56:00');
INSERT INTO 'download_files' VALUES (23, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:58:22');
INSERT INTO 'download_files' VALUES (24, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:58:24');
INSERT INTO 'download_files' VALUES (25, 'download_files', 'download_files', 'download_files', '', '2006-03-09 01:58:27');
INSERT INTO 'download_files' VALUES (26, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:58:31');
INSERT INTO 'download_files' VALUES (27, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:58:35');
INSERT INTO 'download_files' VALUES (28, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:58:37');
INSERT INTO 'download_files' VALUES (29, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:58:40');
INSERT INTO 'download_files' VALUES (30, 'download_files', 'download_files', 'download_files', 'download_files', '2006-03-09 01:58:44');
 


Думаю это то.....

   
 
 автор: cheops   (09.03.2006 в 13:20)   письмо автору
 
   для: Gnusmas   (09.03.2006 в 02:04)
 

Постраничную навигацию можно организовать при помощи следующего скрипта
<?php
  
// Устанавливаем соединение с сервером MySQL
  
require_once("config.php");

  
// Элемент постраничной навигация
  
if(empty($_GET['page'])) $page 1;
  else 
$page $_GET['page'];

  
// Число ссылок в постраничной навигации
  
$page_link 3;
  
// Число позиций на странице
  
$pnumber 10;
  
// Постраничная навигация
  
$first = ($page 1)*$pnumber;
  
// Формируем и выполняем SQL-запросы  
  
$query "SELECT COUNT(*) FROM download_files";
  
$num mysql_query($query);
  if(!
$num) exit("Ошибка при обращении к таблице");
  
// Ввыводим ссылки на другие страницы
  
$total mysql_result($num,0);

  
// Формируем SQL-запрос на извлечение записей
  
$query "SELECT * FROM download_files    
            LIMIT 
$first$pnumber";
  
$dmn mysql_query($query);
  if(!
$dmn) exit("Ошибка при обращении к таблице");
  
// Если имеется хотя бы одна запись - выводим таблицу
  
if(mysql_num_rows($dmn) > 0)
  {
    echo 
"<table>
           <tr>
             <td>mytitle</td>
             <td>disc</td>
             <td>link</td>
             <td>size</td>
             <td>date</td>
           </tr>"
;
    while(
$files mysql_fetch_array($dmn))
    {
      echo 
"<tr>
            <td>
$files[mytitle]</td>
            <td>
$files[disc]</td>
            <td>
$files[link]</td>
            <td>
$files[size]</td>
            <td>
$files[date]</td>
         </tr>"
;
    }
    echo 
"</table>";
  }
  
// Постраничная навигация
  
pager($page$total$pnumber$page_link"&order=$_GET[order]");

  
// Функция постраничной навигации
  // $page - текущая страница, передаётся через GET-параметр page
  // $total - общее число позиций в базе данных
  // $pnumber - число позиций на одной странице
  // $page_link - число ссылок слева и справа от выбранной страницы
  
function pager($page$total$pnumber$page_link$parameters)
  {
    
// Вычисляем число страниц в системе
    
$number = (int)($total/$pnumber);
    if((float)(
$total/$pnumber) - $number != 0$number++;
    
// Проверяем есть ли ссылки слева
    
if($page $page_link 1)
    {
      echo 
"<a href=$_SERVER[PHP_SELF]?page=1{$parameters}> <nobr>[1-$pnumber]</nobr></a>&nbsp;<em class=currentpage><nobr>&nbsp;...&nbsp;</nobr> </em>&nbsp;";
      
// Есть
      
for($i $page $page_link$i<$page$i++)
      {
          echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
      }
    }
    else
    {
      
// Нет
      
for($i 1$i<$page$i++)
      {
          echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
      }
    }
    
// Проверяем есть ли ссылки справа
    
if($page $page_link $number)
    {
      
// Есть
      
for($i $page$i<=$page $page_link$i++)
      {
        if(
$page == $i)
          echo 
"<em class=currentpage><nobr>&nbsp;[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]&nbsp;</nobr> </em>";
        else
          echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
      }
      echo 
"<em class=currentpage><nobr>&nbsp;...&nbsp;</nobr> </em>&nbsp;<a href=$_SERVER[PHP_SELF]?page=$number{$parameters}> <nobr>[".(($number 1)*$pnumber 1)."-$total]</nobr></a>&nbsp;";
    }
    else
    {
      
// Нет
      
for($i $page$i<=$number$i++)
      {
        if(
$number == $i)
        {
          if(
$page == $i)
            echo 
"<em class=currentpage><nobr>&nbsp;[".(($i 1)*$pnumber 1)."-$total]&nbsp;</nobr></em>";
          else
            echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i 1)*$pnumber 1)."-$total]</a>&nbsp;";
        }
        else
        {
          if(
$page == $i)
            echo 
"<em class=currentpage><nobr>&nbsp;[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]&nbsp;</nobr> </em>";
          else
            echo 
"&nbsp;<a href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
        }
      }
    }
    echo 
"<br><br>";
  }
?>

Для его успешного функционирования требуется конфигурационный файл config.php, который устанавливает соединение с базой данных:
<?php
  
// сейчас выставлен сервер локальной машины
  
$dblocation "localhost";
  
// Имя базы данных, на хостинге или локальной машине
  
$dbname "for";
  
// Имя пользователя базы данных
  
$dbuser "root";
  
// и его пароль
  
$dbpasswd "";

  
// Устанавливаем соединение с базой данных
  
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbcnx) {
   exit( 
"<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
  }
  
// Выбираем базу данных
  
if (! @mysql_select_db($dbname,$dbcnx) ) {
    exit( 
"<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
  }

  
// Определяем версию сервера
  
$query "SELECT VERSION()";
  
$ver mysql_query($query);
  if(!
$ver) exit("Ошибка при определении версии MySQL-сервера");
  
$version mysql_result($ver0);
  list(
$major$minor) = explode("."$version);
  
// Если версия выше 4.1 сообщаем серверу, что будем работать с
  // кодировкой cp1251
  
$ver $major.".".$minor;
  if((float)
$ver >= 4.1)
  {
    
mysql_query("SET NAMES 'cp1251'");
  }
?>

   
 
 автор: Gnusmas   (10.03.2006 в 01:28)   письмо автору
 
   для: cheops   (09.03.2006 в 13:20)
 

Спасибо, всё работает идеально!

   
 
 автор: Gnusmas   (17.03.2006 в 03:46)   письмо автору
 
   для: Gnusmas   (10.03.2006 в 01:28)
 

А немогли бы Вы мне подсказать как мне зделать так чтоб он непоказывал страницы так [1-1]
а чтоб показывал их вот так 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20.

   
 
 автор: cheops   (17.03.2006 в 12:41)   письмо автору
 
   для: Gnusmas   (17.03.2006 в 03:46)
 

Везде, где видете подстроку [".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] - заменяйте её на [".$i."]

   
 
 автор: Gnusmas   (17.03.2006 в 14:37)   письмо автору
 
   для: cheops   (17.03.2006 в 12:41)
 

Спасибо! Всё работае.
А как мне зделать чтоб сортировалось по дате добовления.
Я пытался зделать так


  $query = "SELECT COUNT(*) FROM download_files ORDER BY date desc";


И так


$query = "SELECT * FROM download_files
            LIMIT $first, $pnumber ORDER BY date desc ";


Но нечего непалучается((

   
 
 автор: Trianon   (17.03.2006 в 14:53)   письмо автору
 
   для: Gnusmas   (17.03.2006 в 14:37)
 

$query = "SELECT * FROM download_files ORDER BY date desc LIMIT $first, $pnumber ";

   
 
 автор: Gnusmas   (17.03.2006 в 15:40)   письмо автору
 
   для: Trianon   (17.03.2006 в 14:53)
 

О! Всё работает. Спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования