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

Построничный вывод из бд

12.02.2011, 16:52. Показов 851. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно сделать построничный вывод из бд, чтоб были кнопки 1 2 3 4 5 внизу
делают так,но страница пуста(белая вся) ,ошибку не пишет..
проблема в части кода где делат 1 2 3

общий
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
<?PHP 
error_reporitng(E_ALL);
include('db.php');
if(isset($_GET['page'])) { $page=$_GET['page']; } else { $page="0"; }
//$query = mysql_query("SELECT * FROM zomplog_news ORDER BY `id` DESC LIMIT 0,$limit");
$query=mysql_query("SELECT * FROM zomplog_news ORDER BY `id` DESC LIMIT ".$page.",20");
while($row = mysql_fetch_array($query)) {
$title = $row['title'];
$text = $row['text'];
$date = $row['date'];
 
?>
 
 
   <br><table class='panel'><tr class='phead'>
   <td><? echo "$title";?><td align='right'> <? echo "$date";?><tr><td colspan=2 class='pcontend'>
  <? echo "$text";?>
   <tr><td class='pend'>
   <td class='pend' align='right'></table>
 
 <?}
$q=mysql_query("SELECT * FROM zomplog_news");
$numpages=ceil(mysql_num_rows($q)/20);
 
if($numpages > 1) {
        echo "<a href=\"/index.php?goto=events&page=0\">Первая</a> ";
        for ($i=0; $i<=$numpages; $i++) {
                if($page != $i) { echo "<a href=\"index.php?goto=events&page=$i\">".$i+1."</a> "; }
                else { echo "<a href=\"index.php?goto=events&page=$i\" class=\"active-link\">".$i+1."</a> "; }
        }
        echo "<a href=\"/index.php?goto=events&page=$numpagess\">Последняя</a>";
}
mysql_free_result($query); 
 
?>
в чем проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2011, 16:52
Ответы с готовыми решениями:

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

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

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

7
 Аватар для old_style
12 / 12 / 0
Регистрация: 16.08.2010
Сообщений: 24
13.02.2011, 07:34
А почему у вас после LIMIT в запросе $page, а не ($page*20)?

И запрос на строке 22 нерационален - зачем извлекать все данные из таблицы, и делать это на каждой странице, когда можно сразу посчитать число строк в ней через COUNT, сделать это только при первом обращении к файлу, а дальше передавать в параметрах.

Пример такого кода:

PHP
1
2
3
4
5
6
7
8
9
10
11
## Считаем число страниц z при первом обращении к файлу. Дальше оно передается через get
   $table = 'temp';
   if (isset($_GET['z'])) $z=$_GET['z']; else  
   {
   $r = mysql_query("SELECT COUNT(*) FROM $table");
   $z1 = mysql_result($r,0);
   $z = ceil($z1/20); ## z - общее число страниц
   }
 
// дальше страницы выводятся функцией
pagination ($page, $z, 'result.php');
Функцию pagination я написала специально и вынесла в отдельный файл с функциями:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function pagination($page, $z, $url) 
   // номер стр, число страниц в табл, УРЛ)
   {
   if (!preg_match('/\\?/is', $url)) $url = $url.'?'; else $url = $url.'&';
   // если в адресе встречается ?, то в конце добавляем &, если нет - то ?
   
    echo "<div style='text-align:center;'> <a href='".$url."z=".$z."&&page=1'>Первая</a>&nbsp; &nbsp;";
    if ($page>1) print("<a href='".$url."z=".$z."&&page=".($page-1)."'>Предыдущая</a> &nbsp; &nbsp;");
    print ("Страница $page из $z &nbsp; &nbsp;");
    if ($page<$z) print("<a href='".$url."z=".$z."&&page=".($page+1)."'>Следующая</a>&nbsp; &nbsp;");
    echo "<a href='".$url."z=".$z."&&page=$z'>Последняя</a>";
    echo "<p style='margin-top:10px; margin-bottom:10px'>";
    
    for ($i = 1; $i <= $z; $i++) 
    if ($i == $page) echo "<span class='greenbig'> $i </span> &nbsp;";
    else echo "<a href='".$url."z=".$z."&&page=$i'>$i</a> &nbsp;"; 
    echo "</p></div>";
    }
0
1 / 1 / 2
Регистрация: 26.09.2010
Сообщений: 73
13.02.2011, 09:07  [ТС]
что то совсем ничего не выводит. в запросе что то не то изменил?
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
<?php
function pagination($page, $z, $url) 
   // номер стр, число страниц в табл, УРЛ)
   {
   if (!preg_match('/\\?/is', $url)) $url = $url.'?'; else $url = $url.'&';
   // если в адресе встречается ?, то в конце добавляем &, если нет - то ?
   
    echo "<div style='text-align:center;'> <a href='".$url."z=".$z."&&page=1'>Первая</a>&nbsp; &nbsp;";
    if ($page>1) print("<a href='".$url."z=".$z."&&page=".($page-1)."'>Предыдущая</a> &nbsp; &nbsp;");
        print ("Страница $page из $z &nbsp; &nbsp;");
        if ($page<$z) print("<a href='".$url."z=".$z."&&page=".($page+1)."'>Следующая</a>&nbsp; &nbsp;");
        echo "<a href='".$url."z=".$z."&&page=$z'>Последняя</a>";
        echo "<p style='margin-top:10px; margin-bottom:10px'>";
        
        for ($i = 1; $i <= $z; $i++) 
    if ($i == $page) echo "<span class='greenbig'> $i </span> &nbsp;";
    else echo "<a href='".$url."z=".$z."&&page=$i'>$i</a> &nbsp;"; 
        echo "</p></div>";
    }
 
//error_reporitng(E_ALL);
include('db.php');
if(isset($_GET['page'])) { $page=$_GET['page']; } else { $page="0"; }
//$query = mysql_query("SELECT * FROM zomplog_news ORDER BY `id` DESC LIMIT 0,$limit");
$query=mysql_query("SELECT * FROM zomplog_news ORDER BY `id` DESC LIMIT ($page*20),20");
while($row = mysql_fetch_array($query)) {
$title = $row['title'];
$text = $row['text'];
$date = $row['date'];
 
?>
 
 
   <br><table class='panel'><tr class='phead'>
   <td><? echo "$title";?><td align='right'> <? echo "$date";?><tr><td colspan=2 class='pcontend'>
  <? echo "$text";?>
   <tr><td class='pend'>
   <td class='pend' align='right'></table>
 
 <?}
  $table = 'zomplog_news';
   if (isset($_GET['z'])) $z=$_GET['z']; else  
   {
   $r = mysql_query("SELECT COUNT(*) FROM $table");
   $z1 = mysql_result($r,0);
   $z = ceil($z1/20); ## z - общее число страниц
   }
pagination ($page, $z, 'index.php');
 
?>
0
 Аватар для old_style
12 / 12 / 0
Регистрация: 16.08.2010
Сообщений: 24
13.02.2011, 10:30
Извините, но у меня нет времени копаться в коде. По-моему у вас там с открывающими-закрвывающими скобками { } не все в порядке.

И включите, наконец, на время отладки вывод ошибок
PHP
1
error_reporting (E_ALL); // на самом верху файла
Тогда сами все увидите.

Еще можно смотреть ошибку запроса к базе данных - поставьте после запроса (естественно, только на время отладки, в готовом скрипте это убирается).
PHP
1
echo mysql_errno() . ": " . mysql_error() . "\n";
И еще помогает при отладке распечатать себе все переменные в области видимости:
PHP
1
2
3
4
$nowlist=get_defined_vars();
 echo "<br>Все переменные в области видмиости: <br>";
 while (list($key,$val) = each($nowlist))
  echo "ключ - $key, значение - $val<br>\n";
Кстати, по той же пагинации в этой ветке форума было много тем - полистайте назад и найдете.

Добавлено через 1 час 9 минут
Проверила ваш код - работает, если в запросе изменить переменную после LIMIT. Вот этот кусок:

PHP
1
2
3
if(isset($_GET['page']))  $page=$_GET['page']; else $page="1";
$plim=($page-1)*20;
$query=mysql_query("SELECT * FROM zomplog_news ORDER BY `id` DESC LIMIT $plim, 20");
0
1 / 1 / 2
Регистрация: 26.09.2010
Сообщений: 73
13.02.2011, 11:12  [ТС]
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
<?php
function pagination($page, $z, $url) 
   // номер стр, число страниц в табл, УРЛ)
   {
   if (!preg_match('/\\?/is', $url)) $url = $url.'?'; else $url = $url.'&';
   // если в адресе встречается ?, то в конце добавляем &, если нет - то ?
   
    echo "<div style='text-align:center;'> <a href='".$url."z=".$z."&&page=1'>Первая</a>&nbsp; &nbsp;";
    if ($page>1) print("<a href='".$url."z=".$z."&&page=".($page-1)."'>Предыдущая</a> &nbsp; &nbsp;");
        print ("Страница $page из $z &nbsp; &nbsp;");
        if ($page<$z) print("<a href='".$url."z=".$z."&&page=".($page+1)."'>Следующая</a>&nbsp; &nbsp;");
        echo "<a href='".$url."z=".$z."&&page=$z'>Последняя</a>";
        echo "<p style='margin-top:10px; margin-bottom:10px'>";
        
        for ($i = 1; $i <= $z; $i++) 
    if ($i == $page) echo "<span class='greenbig'> $i </span> &nbsp;";
    else echo "<a href='".$url."z=".$z."&&page=$i'>$i</a> &nbsp;"; 
        echo "</p></div>";
    }
 
 
include('db.php');
if(isset($_GET['page']))  $page=$_GET['page']; else $page="1";
$plim=($page-1)*20;
$query=mysql_query("SELECT * FROM zomplog_news ORDER BY `id` DESC LIMIT $plim, 20");
while($row = mysql_fetch_array($query)) {
$title = $row['title'];
$text = $row['text'];
$date = $row['date'];
 
?>
 
 
   <br><table class='panel'><tr class='phead'>
   <td><? echo "$title";?><td align='right'> <? echo "$date";?><tr><td colspan=2 class='pcontend'>
  <? echo "$text";?>
   <tr><td class='pend'>
   <td class='pend' align='right'></table>
 
 <?}
  $table = 'zomplog_news';
   if (isset($_GET['z'])) $z=$_GET['z']; else  
   {
   $r = mysql_query("SELECT COUNT(*) FROM $table");
   $z1 = mysql_result($r,0);
   $z = ceil($z1/20); ## z - общее число страниц
   }
pagination ($page, $z, 'index.php');
 
?>
пробовал распечатать все переменные. распечатало.. Но у меня там еще одна проблема, весь русский язык почему то переводит в Íîâîñòè
0
 Аватар для old_style
12 / 12 / 0
Регистрация: 16.08.2010
Сообщений: 24
13.02.2011, 11:21
Ну, это уже надо разбираться с кодировками базы данных и файла. Наверху всех файлов надо указывать кодировку для HTML. Типа так для windows-1251:

HTML5
1
2
3
4
5
6
7
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<title>Отладочный файл</title>
</head>
<body>
В базе тоже по идее при ее создании надо было настроить поле "Сравнение" cp1251_general_ci - это если вы хотите в windows-1251. То же поле "Сравнение" есть и для отдельных полей таблиц.

Сейчас, правда, более универсальна на utf-8, но я с ней не работала.
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
13.02.2011, 12:16
xhugo, htaccess
AddDefaultCharset ****
SQL
DEFAULT CHARSET ***
PHP
mysql_set_charset(***)
0
1 / 1 / 2
Регистрация: 26.09.2010
Сообщений: 73
13.02.2011, 13:26  [ТС]
у меня после подключение
PHP
1
2
3
mysql_connect($sqlhost, $sqluser, $sqlpass);
mysql_query("SET NAMES `CP1251`") or die (mysql_error());
mysql_select_db($sqldb);
и
HTML5
1
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
раньше все норм было..

Так то скрипт работает. Но баги..:
?z=333&&page=1
внизу куча ссылок, и там и xss.

Можно как то по проще сделать? в смысле только одним параметором например ?page=2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2011, 13:26
Помогаю со студенческими работами здесь

Постройте данный вывод и результирующий вывод, применяя теорему дедукции
Помогите пожалуйста (A⊃C)⊃C, A⊃B, B⊃C ├ C

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

Вывод массива и вывод строки, где меньше всего переходов с - на + и с + на -
Как изменить этот код, чтобы пользователь сам мог вводить количество столбцов и строк в массиве #include &lt;stdio.h&gt; #include...

Вывод определённых значений из таблицы, затем вывод их произведения на файл
Здравствуйте, как считать с файла только цифры(буквы не трогать), найти их произведение, затем вывести его в файл(output)? В интернете не...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru