Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
1

Обновленная навигация

23.09.2010, 02:27. Показов 638. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот вроде сделал навигацию, по исправлял все ошибки, но проблема в том ,что не получается добиться чтоб на каждой странице,было слева слово Назад, а справа слово - Вперёд, и так на всех страницах, у меня как-то не так выводит,как сделать правильно?
У меня таблица такая в базе данных для пробы сделана.
id cat text
1 1 Петя
2 1 Фрося
3 1 Борис
4 1 Анатолий
5 1 Банан
6 1 Тарзан
7 1 Макс
8 1 Министр
9 1 Факел
10 1 Природа
11 1 Листья
12 1 Друзья
13 1 Морковь
14 1 Титаник
15 1 Мел
16 1 Натрий
17 1 Вуглевод
18 1 Кислород
19 1 Дартаньян
20 1 Поезд

Файл databse.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$server = 'localhost'; //Имя сервера
$user = 'privet'; //Логин   
$password = '12345'; //Пароль
$db = 'video';
$table = 'lessons'; //Название таблицы
$error_database = '<h2>Произошла ошибка в базе данных,<br/>
в ближайшее время она будет устранена!</h2>';
$connect = mysql_connect($server,$user,$password);
if(!$connect){
echo $error_database;
exit;
};
//$connect по какому соединению мы работаем
$select = mysql_select_db($db,$connect);
if(!$select){
echo $error_database;
exit;
};
?>
Файл index.php
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
<?php
include 'database.php';  /*Соединяемся с Базой Данных*/
//Число постов выводящих на странице
$num = 3;
if(empty($page)){
die('<p style="color:red; font-size:24px;">Ошибка! Неверный URL адресс!</p>');
}
$page = $_GET['page'];
$result = mysql_query("select COUNT(*) FROM lessons",$connect);
$posts = mysql_result($result,0);
//Находим общее количество страниц
$chislo_str = intval(($posts-1)/$num)+1;
$page = intval($page);
//empty($page) Если переменной не существует или ее значение равно нулю
if(empty($page) or $page<0) $page = 1;
if($page > $chislo_str) $page = $chislo_str;
// Если ввести $page=7  тогда 7*3-3=18  
//с 18 поста будет выводится пост 18,19,20 на странице №7
$start = $page * $num - $num;  
$result = mysql_query("SELECT * FROM lessons LIMIT $start, $num",$connect);  
// В цикле переносим результаты запроса в массив $postrow  
while ( $postrow[] = mysql_fetch_array($result)); 
 
 
//Вывод постов
for($i = 0; $i < $num; $i++)  
{  
 echo $postrow[$i]['id'].'&nbsp;'.$postrow[$i]['text'].'<br/>';
}  
 
//------------------------------------------------
// Проверяем нужны ли стрелки назад  
if ($page != 1) $pervpage = '<a href= ./?page=1><<</a>  ;
                               <a href= ./?page='. ($page - 1) .'><</a> ';  
// Проверяем нужны ли стрелки вперед  
if ($page != $chislo_str) $nextpage = ' <a href= ./?page='. ($page + 1) .'>></a>  
                                   <a href= ./?page=' .$chislo_str. '>>></a>';   
 
// Находим две ближайшие страницы с обоих краев, если они есть  
if($page - 2 > 0) $page2left = ' <a href= ./?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';  
if($page - 1 > 0) $page1left = '<a href= ./?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';  
if($page + 2 <= $chislo_str) $page2right = ' | <a href= ./?page='. ($page + 2) .'>'. ($page + 2) .'</a>';  
if($page + 1 <= $chislo_str) $page1right = ' | <a href= ./?page='. ($page + 1) .'>'. ($page + 1) .'</a>'; 
 
// Вывод меню  
 
if(isset($pervage)) echo $pervage;
if(isset($page2left)) echo $page2left;
echo '<b>';
if(isset($page)) echo $page;
echo '</b>';
if(isset($page1right)) echo $page1right;
if(isset($page2right)) echo $page2right;
if(isset($nextpage)) echo $nextpage;
?>
Не получается сделать вывод как на картинке,уже много раз пробовал и не знаю как,вот код на котором остановился.

Обновленная навигация
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2010, 02:27
Ответы с готовыми решениями:

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

Навигация
Как на сайтах создается навигация по страницам?Ведь не миллион же ссылок вручную создают.Что-то не...

Постраничная навигация!
Есть вот такой код страницы: &lt;?php require_once('inc/top.php');?&gt; &lt;/head&gt; &lt;body&gt; &lt;?php...

Постраничная навигация
Ребят подскажите пожалуйста уже который день мучаюсь, есть у нас таблица в бд dannie_cat_article у...

3
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
23.09.2010, 11:34 2
Цитата Сообщение от Syltan Посмотреть сообщение
Не получается сделать вывод как на картинке
А как получается? Можно скриншот?

Из видимых ошибок:
Символы < и > в HTML следует экранировать как &lt; и &gt; иначе есть риск что развалится разметка

PHP
1
2
3
4
5
6
// Проверяем нужны ли стрелки назад  
if ($page != 1) $pervpage = '<a href="./?page=1">&lt;&lt;</a>  ;
                               <a href="./?page='. ($page - 1) .'">&lt;</a> ';  
// Проверяем нужны ли стрелки вперед  
if ($page != $chislo_str) $nextpage = ' <a href="./?page='. ($page + 1) .'">&gt;</a>  
                                   <a href="./?page=' .$chislo_str. '">&gt;&gt;</a>';
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
26.09.2010, 02:58  [ТС] 3
Вот попробовал сделать, но получается немного не то, что я хочу, а хочу я такое, как увидел у одних на сайте,вот фото:
[Ссылка удалена!]
Обновленная навигация

Пробовал не получается так сделать,не могу понять как так сделать,чтоб например я на 7 странице, чтоб
первые 5 пунктов кроме первого были 3 точки, а когда перешел к первому пункту, эти 3 точки пропадали.
Вот так:

1...6 7 8 9 10 ... 15

Вот код который на данный момент сделал,чего-то не выходит,если кто знает помогите разобраться как сделать.
Файл index.php
HTML5
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
90
91
 
<!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>
<style type="text/css">
.knopka_nazad1{text-decoration:underline; font-size:18px; color:black; font-family:Tahoma; }
.knopka_nazad2{text-decoration:none; font-size:18px; color:gray; font-family:Tahoma;}
.knopka_vpered1{text-decoration:underline; font-size:18px; color:black; font-family:Tahoma;}
.knopka_vpered2{text-decoration:none; font-size:18px; color:gray; font-family:Tahoma;}
</style>
</head>
<body>
 
</body>
</html>
 
<?php
include 'database.php';  /*Соединяемся с Базой Данных*/
//Число постов выводящих на странице
$num = 3;
if(empty($page)){
die('<p style="color:red; font-size:24px;">Ошибка! Неверный URL адресс!</p>');
}
$page = $_GET['page'];
$result = mysql_query("select COUNT(*) FROM lessons",$connect);
$posts = mysql_result($result,0);
//Находим общее количество страниц
$chislo_str = intval(($posts-1)/$num)+1;
$page = intval($page);
//empty($page) Если переменной не существует или ее значение равно нулю
if(empty($page) or $page<0) $page = 1;
if($page > $chislo_str) $page = $chislo_str;
// Если ввести $page=7  тогда 7*3-3=18  
//с 18 поста будет выводится пост 18,19,20 на странице №7
$start = $page * $num - $num;  
$result = mysql_query("SELECT * FROM lessons LIMIT $start, $num",$connect);  
// В цикле переносим результаты запроса в массив $postrow  
while ( $postrow[] = mysql_fetch_array($result)); 
 
 
//Вывод постов
for($i = 0; $i < $num; $i++)  
{  
if(isset($postrow[$i]['id'])) echo $postrow[$i]['id'].'&nbsp;'.$postrow[$i]['text'].'<br/>';
}  
 
 
//------------------------------------------------
// Стрелка назад  
if($page>1)
$nazad= '<a class="knopka_nazad1" href= ./?page='.($page-1).'>Назад</a>';
else $nazad= '<span class="knopka_nazad2">Назад</span>';
       
//Стрелка вперед  
if($page<$chislo_str)
$vpered = '<a class="knopka_vpered1" href= ./?page='.($page + 1).'>Вперёд</a>';
else $vpered= '<span class="knopka_vpered2">Вперёд</span>';
 
// Вывод меню  
echo $nazad.'&nbsp;&nbsp;';
if($page>5) {
echo '<a href=./?page=1>1</a>'.' ...';
}
echo '&nbsp;&nbsp;';
 
//$mustang = array();
 
 
for($i=($page-5>0)?($page-5):1; ($i<=$page+5)&&$i<=$chislo_str; $i++)
{
 
if($i==$page) { echo '<b>'.$i.'</b>'; }
 
else {  echo '<a href= ./?page='.$i.'>'.$i.'</a>'; }
 
echo '&nbsp;|&nbsp;';
}
 
 
if($page>1 &&  $page!=$chislo_str  &&  $page!=$chislo_str-1
&&  $page!=$chislo_str-2  &&  $page!=$chislo_str-3 
&&  $page!=$chislo_str-4 &&  $page!=$chislo_str-5
)
echo '...'.'<a href=./?page='.$chislo_str.'>'.$chislo_str.'</a>'.'&nbsp;&nbsp;';
 
 
echo $vpered;
 
?>
0
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
26.09.2010, 12:28 4
Фрагмент генерации и вывода навигации.

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
//------------------------------------------------
// Стрелка назад  
if($page>1)
$nazad= '<a class="knopka_nazad1" href= ./?page='.($page-1).'>Назад</a>';
else $nazad= '<span class="knopka_nazad2">Назад</span>';
       
//Стрелка вперед  
if($page<$chislo_str)
$vpered = '<a class="knopka_vpered1" href= ./?page='.($page + 1).'>Вперёд</a>';
else $vpered= '<span class="knopka_vpered2">Вперёд</span>';
 
// дальше мой код
 
$expand_to = 4; // сколько страниц должно показываться слева и справа от текущей
 
// начало и конец "соседних" страниц
$a = $page - $expand_to; if ($a < 1) $a = 1; 
$b = $page + $expand_to; if ($b > $chislo_str) $b = $chislo_str;
 
if ($a > 1) // надо ли показывать отдельно ссылку на первую и "..."
{
    $navigation[] = "<a href=\"./?page=1\">1</a>";
    if ($a > 2) $navigation[] = "...";
}
 
// генерируем ссылки на "соседние" страницы
for ($i = $a; $i <= $b; $i++)
    $navigation[] = ($page == $i) ? $i : "<a href=\"./?page=$i\">$i</a>";
 
if ($b < $chislo_str) // надо ли показывать отдельно "..." и ссылку на последнюю
{
    if ($b < $chislo_str - 1) $navigation[] = '...';
    $navigation[] = "<a href=\"./?page=$chislo_str\">$chislo_str</a>";
}
 
// выводим готовую навигацию
echo $nazad.'&nbsp;&nbsp;'.implode(' ', $navigation).'&nbsp;&nbsp;'.$vpered;
1
26.09.2010, 12:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2010, 12:28
Помогаю со студенческими работами здесь

Постраничная навигация
Есть скрипт, для говнокрафта minecraft banlist&quot;а, не подскажете, как сделать постраничную...

Постраничная навигация
Здравствуйте. Помогите сделать постраничную навигацию. Вот список: &lt;?php $ordtype = 'title'; ...

Постраничная навигация
Всем привет,есть такая задача: &lt;?php foreach ($list as $item) : ?&gt; &lt;?php echo '&lt;div...

Постраничная навигация
Начал переводить свой проект на mysqli и столкнулся с проблемой постраничной навигации: &lt;?php...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru