Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269

Постраничный вывод данных из MySQL

31.10.2010, 22:23. Показов 5629. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Долго в инете лазил с этой темкой, что т для меня непосильно справиться с этой задачей самостоятельно (, прошу помочь!
вот один из кодов который я пробовал, выводит данные но ругается на 16 строчку, страницы не выводит, вот код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
 
 
// Будем выводить по 2 записи на листе:
$number = 5;
// Читаем сдвиг из GET-массива:
$offset = isset($_GET['offset']) ? (int)$_GET['offset'] : 0;
// Коннект до базы данных
$link = mysql_connect('localhost', 'root', '');
if (!$link) die('Не могу соединиться с базой данных');
// Выбираем базу данных
mysql_select_db('users', $link);
// Выполняем запрос 'посчитать число записей'
$result = mysql_query("SELECT COUNT(*) FROM `url`", $link);
// Теперь в переменной $total общее число записей
$total = mysql_result($result, 0);
$menu = getMenuofPages($total, $number, $offset);
?>
 
 
<?
function getMenuofPages($total, $number, $offset) {
   // Подфункция определяет есть ли уже в текущем url get-данные
   // и дописывает соответственно нужный offset:
   function getGoodUrl($url, $cur) {
      if ($_SERVER['QUERY_STRING'] == "") {
         return $url."?offset=".$cur;
      }else {
         if (substr_count($_SERVER['QUERY_STRING'], "offset=") > 0) {
            $url = preg_replace("/offset=\d+/i", "offset=".$cur, $url);
            return $url;
         }else {
            return $url."&offset=".$cur;
         }
      }
   }
   // Если общее число меньше числа записей, которые мы должны вывести на
   // странице, то ничего не делаем:
   if ($total <= $number) {
      return;
   }
   $url = $_SERVER['REQUEST_URI'];
   $int = intval($total / $number); // Целая часть от деления
   $rest = $total % $number; // Остаток от деления
   $menu = "";
   // Сначала перебираем целые части
   for ($i = 0; $i < $int; $i++) {
      $cur = $i * $number;
      if ($cur == $offset) { // Проверка на текущую страницу
         $menu .= " | ".($cur + 1)."-".($cur + $number);
      }else {
         $menu .= " | <a href=\"".getGoodUrl($url, $cur)."\">".
                  ($cur + 1)."-".($cur + $number)."</a>";
      }
   }
   // Потом остаток (если есть)
   if ($rest > 0) {
      $cur += $number;
      if ($cur == $offset) { // Проверка на текущую страницу
         if ($rest == 1) {
            $menu .= " | ".($cur + 1)." |";
         }else {
            $menu .= " | ".($cur + 1)."-".($cur + $rest)." |";
         }
      }else {
         if ($rest == 1) {
            $menu .= " | <a href=\"".getGoodUrl($url, $cur)."\">".($cur + 1)."</a> |";
         }else {
            $menu .= " | <a href=\"".getGoodUrl($url, $cur)."\">".
                     ($cur + 1)."-".($cur + $rest)."</a> |";
         }
      }
   }else {
      $menu .= " |";
   }
   return $menu;
}
?>
 
 
<?
// Читаем из базы $number записей начиная с $offset:
$result = mysql_query("SELECT * FROM `users` LIMIT $offset, $number", $link);
// Распечатываем результат:
echo $menu;
while ($row = mysql_fetch_array($result)) {
   echo '<div>'.$row['id'].' : '.$row['url'].'</div>';
}
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.10.2010, 22:23
Ответы с готовыми решениями:

Постраничный вывод данных на PHP и MySQL
Не получается сделать постраничный вывод данных на PHP и MySQL! Нажимаю на любую страницу в строке пишется ?page=2 или ?page=3 а...

Поиск по базе данных + постраничный вывод данных
Привет всем! в общем с поиском данных всё нормально! но не работает постраничный вывод ((( не знаю, где не так (! посомтрите пожалуйста,...

Постраничный вывод данных (форма обновления)
Приветствую! Есть рабочая форма обновления данных &lt;? /* Соединяемся с базой данных */ $hostname = &quot;192.168.1.160&quot;; //...

15
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 11:06
Цитата Сообщение от philcrosoft Посмотреть сообщение
выводит данные но ругается на 16 строчку
Что именно пишет?
0
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269
01.11.2010, 21:07  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
Что именно пишет?
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in K:\home\mytest\www\catalogue3.php on line 16
0
Почетный модератор
 Аватар для Humanoid
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
01.11.2010, 21:35
Там должно быть указано 3 аргумента... первый - правильно, второй - номер строки (думаю, правильно), а третий - номер столбца (ты не указал).
0
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269
01.11.2010, 21:44  [ТС]
в смысле номер столбца?
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 22:02
Цитата Сообщение от Humanoid Посмотреть сообщение
а третий - номер столбца (ты не указал)
Третий параметр кагбе необязательный... (пруф)

А вообще у меня есть сомнения насчет правильности запроса:
PHP
1
$result = mysql_query("SELECT COUNT(*) FROM `url`", $link);
Потому что при выводе используется совсем другая таблица:
PHP
1
$result = mysql_query("SELECT * FROM `users` LIMIT $offset, $number", $link);
0
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269
01.11.2010, 22:34  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
Третий параметр кагбе необязательный... (пруф)

А вообще у меня есть сомнения насчет правильности запроса:
PHP
1
$result = mysql_query("SELECT COUNT(*) FROM `url`", $link);
Потому что при выводе используется совсем другая таблица:
PHP
1
$result = mysql_query("SELECT * FROM `users` LIMIT $offset, $number", $link);
Вот блин не посмотрел!!! исправил но загвоздка всё равно в 16 строке )))
пишет, что
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 10 on MySQL result index 3 in K:\home\mytest\www\catalogue3.php on line 16
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 22:48
16-ую строку покажите. Как она выглядит сейчас?
0
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269
01.11.2010, 22:51  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
16-ую строку покажите. Как она выглядит сейчас?
PHP
1
$total = mysql_result($result, 10);
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 22:52
Откуда там 10 появилось?
Сделайте 0, как было.
0
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269
01.11.2010, 23:17  [ТС]
о заработало ))) только не пойму почему не отображает мне данные по дате регистации, т.е. свежие наверху должны быть

PHP
1
$result = mysql_query("SELECT COUNT(*) FROM `users` ORDER BY input_date DESC", $link);
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.11.2010, 23:20
ORDER BY во второй запрос всовывать надо, а не в тот, где COUNT(*)
1
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269
02.11.2010, 21:00  [ТС]
ок щас попробую )
только вот переношу код так, чтобы навигация страниц была внизу а блин не идёт (((

Добавлено через 21 час 30 минут
... всё вот работает, но из-за недостатка знаний в php не могу зделать следующие (((
1. Отображение навигации вверху страницы, как только этот код не вертел и не крутил не вставлял отдельно в рамки он всё равно вверху (((
2. На странице у меня установлено чтобы все ссылки открывались в новом окне, но вот переход по страницам должен быть внутри страницы как не пытался этот a target="_parent" вставить не работало
ну и 3. чтобы вместо того чтобы отображалось | 1-10 | 11 -20 |, чтобы было просто номера страниц 1 | 2 | 3 и так далее )))
прошу помощи )
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
02.11.2010, 21:33
1 и 2 пункты к РНР не имеют думаю никакого отношения - это хтмл или css.
а 3-ий - поменяй в коде структуру того как ты делишь страницы

Добавлено через 2 минуты
Цитата Сообщение от philcrosoft Посмотреть сообщение
target="_parent"
?????
если хочешь чтобы в том же окне открывалось, тогда никаких target не нужно (во всяком случае никогда не дулал из-за не надобности).
а чтобы открывалось в отдельной странице напиши - <a...что-то.. target="_blank">
0
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269
03.11.2010, 00:31  [ТС]
ну да чего там ))) всего лишь html =) сказал же и так и сяк пробовал опустить не получилось )
по поводу css в настройках просто стоит чтобы все ссылки в новых окнах открывались, ну так задумано ) а вот нафигацию мне так не нужно ))) ...

Добавлено через 1 час 57 минут
Эврика, опустить менюшку в нужное место удалось )))
0
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 269
20.01.2011, 11:19  [ТС]
в общем я использую постраничный вывод так

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
function page()
{
if(empty($_GET["page"])){
$page = 0;
} else {
if(!is_numeric($_GET["page"])) die("Неправильный формат номера страницы!");
$page = $_GET["page"];
}
return $page;
}
 
 
function sql_query($onpage, $page, $table)
{
$begin = $page*$onpage; // откуда начинать
$sql = "SELECT * FROM ".$table." LIMIT ".$begin.", ".$onpage;
$result = mysql_query($sql) or die(mysql_error());
return $result;
}
 
function navigation($onpage, $page, $table)
{
$return = null;
$count = mysql_query("SELECT COUNT(*) FROM users") or die(mysql_error());
$count = mysql_fetch_array($count);
$count = $count[0];
$pages = $count/$onpage;
if($page!==0){
$prev = "<A HREF=\"?page=".($page-1)."\">&lt;</A>";
} else {
$prev = "<";
}
if($page<round($pages-1)){
$next = "<A HREF=\"?page=".($page+1)."\">&gt;</A>";
} else {
$next = ">";
}
for($i=0;$i<$pages;$i++)
{
if($i==$page){
$return.="[".($i+1)."]";
} else {
$return.="<A HREF=\"?page=".$i."\">[".($i+1)."]</A>";
}
}
return $prev.$return.$next;
}
 
$onpage = 10; // записей на страницу
$table = "users"; // из какой таблицы
mysql_connect("localhost", "root", "") or die(mysql_error()); // коннект к БД
mysql_select_db("users"); // выбор БД
$page = page(); // определяем страницу
$result = sql_query($onpage, $page, $table); // sql - запрос
while($data = mysql_fetch_array($result)) // цикл вывода
{
// шаблон вывода нужно изменить
// $data["название_поля"] - содержание поля
     Echo $data['website_name'];
}
$navigation = navigation($onpage, $page, $table); // определим навигацию
echo $navigation; // выведем ее
mysql_close(); // отключение от БД
?>
И хочу сделать выборку с определённого столбца "сс1" где есть значение "13" я делаю следющим образом

PHP
1
$sql = "SELECT * FROM ".$table." WHERE cc1='13' LIMIT ".$begin.", ".$onpage;
Однако когда я не пишу выборку он мне выводи все данные из таблицы, их всего на две страницы, но когда я делаю выборку с этим значением, то таких данных всего 5, но на странице всё равно показывает что данных на две страницы! почему так? прошу помощи! что доделать чтобы при выборке отображало то количество страниц сколько данных с этим значением, спасибо!

Добавлено через 14 часов 41 минуту
ну как же сделать вывод мне с критерием выборки но, чтобы количество страниц было таким как надо? в чём загвоздка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.01.2011, 11:19
Помогаю со студенческими работами здесь

Постраничный вывод данных из таблицы в базе
Всем привет! С наступающим вас! Прошу вас помочь организовать постраничный вывод данных из таблицы в базе. Код формы вывода...

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

Постраничный вывод данных в зависимости от разрешения монитора
Здравствуйте. Столкнулся с такой проблемой. Сайт по высоте резиновый. То есть растягивается по экрану. Верхняя и нижняя строка...

Постраничный вывод(не MySQL)
Поискал в интернете кучу pager'ов, но так и не смог не один привить к нужному скрипту) Проблема возникает всегда в выводе контента как...

Как сделать постраничный вывод результатов из mysql?
Необходимо выводить большой объем данных (порядка нескольких сотен единиц), и как это можно реализовать в php? Как сделать именно увязку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru