Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Link24
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 88
1

Делаем пейджинг

30.07.2014, 21:34. Просмотров 1094. Ответов 2
Метки нет (Все метки)

Помогите найти ошибку в пейджинге.
Код работает, но в качестве первой строки на каждой странице выдает пустой результат, далее все идет по порядку - как положено. Не могу понять почему под номером 1 идет пустая строка и как ее убрать?

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
<?php
//Настройки подключения к БД
$db_host = 'localhost';
$db_name = 'kc';
$db_user = 'kc';
$db_pass = 'VR';
 
$page = intval($_GET[page]); // значение текущей страницы из GET
$num = 100; // Переменная хранит число сообщений выводимых на станице
if ($page==0) $page=1;
// Определяем общее число сообщений в базе данных
// Берем из БД кол-во записей
 
    mysql_connect($db_host,$db_user,$db_pass) OR DIE("Error connect to SQL<br/> "); // коннект к БД, указать хост, лог и пасс
    @mysql_select_db("$db_name") or die("Error connect to DB<br/>"); 
    mysql_query ("set character_set_client='utf8'"); // установка кодировки ( возможно у вас cp1251)
    mysql_query ("set character_set_results='utf8'");
    mysql_query ("set collation_connection='utf8_general_ci'"); 
    $query = "SELECT COUNT(r.id) AS 'count(id)' FROM (SELECT id from org union all SELECT id2 from org2)r";  
    $mysql_result = mysql_query($query);
 
if(mysql_num_rows($mysql_result)>0){
    $count=mysql_fetch_row($mysql_result);
    }
$posts = $count[0]; // получем значение кол-во всех записей
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
 
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href="/1page.php?page=-1"><<</a>
<a href="/1page.php?page='. ($page - 1).'"><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = '  <a href="/1page.php?page='. ($page + 1).'">></a>
<a href="/1page.php?page='.$total.'">>></a> ';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href="/1page.php?page='. ($page - 2) .'">'. ($page - 2) .'</a>  ';
if($page - 1 > 0) $page1left = '<a href="/1page.php?page='. ($page - 1) .'">'. ($page - 1) .'</a>  ';
if($page + 2 <= $total) $page2right = '  <a href="/1page.php?page='. ($page + 2).'">'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = '  <a href="/1page.php?page='. ($page + 1).'">'. ($page + 1) .'</a>';
 
//получаем записи из БД (начиная с $start, кол-во записей = $num)
 
$query = "SELECT id, org, gorod, adres FROM org union SELECT id2, org2, gorod2, adres2 FROM org2 LIMIT $start, $num"; 
        $res = mysql_query($query); 
 
?>
<?php
if ($total>1) echo '<p><div  class="navigation">'
.$pervpage.$page2left.$page1left.'<span>'.$page.'</span>'.$page1right.$page2right
.$nextpage.'</div></p>';
?>
<?php do { ?>
          <font size="-1"><a href="http://mysite.ru/page2/<?php echo $row['id']; ?>"><?php echo $row['org']; ?></a><a href="http://mysite.ru/page2/<?php echo $row['id']; ?>"><?php echo $row['gorod']; ?> <?php echo $row['adres']; ?></a></font><br>
              <?php } while ($row = mysql_fetch_assoc($res)); ?>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2014, 21:34
Ответы с готовыми решениями:

Repeater и пейджинг
Здравствуйте. Как сделать пейджинг при использовании контрола Repeater? Кто нибудь пробовал?...

Прoблемa с DataGrid (пейджинг)
Испoльзую нa стрaнице DataGrid. Oбнaружилoсь ы негo прoблемa: Зaписей в сете - oкoлo 200....

Пейджинг с сохранением истории
Здравствуйте, уважаемые форумчане! Кратко о проблеме: Есть пейджинг на ajax, всё прекрасно...

из 2 делаем 1
нужно чтоб вот этот код сост. из 2-х едитов и кнопок превратить в одну, помогите чета голова не...

Делаем игру
У меня на форме pictureBox при нажимании клавиш она двигается! как сделать чтобы при встречи с...

2
pav1uxa
1859 / 1713 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
30.07.2014, 21:49 2
Цитата Сообщение от Link24 Посмотреть сообщение
<<</a>
А как в этом месте браузер должен определить - где тут знак "меньше", а где начинается тег </a>? Знаки "<" надо заменить на "&lt;", ">" на "&gt;".
0
Link24
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 88
30.07.2014, 21:56  [ТС] 3
проверил - не помогло - все равно под номером один результата выборки на каждой странице идет пусой результат - далее - по порядку
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2014, 21:56

Делаем тесты
Ребят у кого соображает мозг , кто знает как запрограммировать , нужна помощь . Нужно...

Делаем Круассаны
Для приготовления хрустящих французских круассанов вам потребуется: 600г пшеничной муки, 50 мл...

Делаем программу
Мне часто приходится заходить ВК, на несколько учётных записей, и постоянно бегать туда-сюда уже...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru