Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 02:24   #1
Kapitann
Заблокирован
 
Регистрация: 26.07.2010
Сообщений: 160
По умолчанию Обновленная навигация

Вот вроде сделал навигацию, по исправлял все ошибки, но проблема в том ,что не получается добиться чтоб на каждой странице,было слева слово Назад, а справа слово - Вперёд, и так на всех страницах, у меня как-то не так выводит,как сделать правильно?
У меня таблица такая в базе данных для пробы сделана.
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
$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
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;
?>
Не получается сделать вывод как на картинке,уже много раз пробовал и не знаю как,вот код на котором остановился.
Изображения
Тип файла: jpg clip_image002.jpg (8.8 Кб, 93 просмотров)
Kapitann вне форума Ответить с цитированием
Старый 26.09.2010, 03:01   #2
Kapitann
Заблокирован
 
Регистрация: 26.07.2010
Сообщений: 160
По умолчанию

Вот попробовал сделать, но получается немного не то, что я хочу, а хочу я такое, как увидел у одних на сайте,вот фото:
http://ipicture.ru/uploads/100926/T4IeilKxZs.jpg

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

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

Вот код который на данный момент сделал,чего-то не выходит,если кто знает помогите разобраться как сделать.
Файл index.php
Код:
 
<!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;

?>
Kapitann вне форума Ответить с цитированием
Старый 27.09.2010, 15:39   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

ВНИМАНИЕ: ЭТО НЕ ГОТОВОЕ РЕШЕНИЕ!
Просто я пересмотрел код, подправил алгоритм. Он работает, но код вам нужно хорошенько почистить и оптимизировать.

PHP код:
//------------------------------------------------
// Стрелка назад
if ($chislo_str 1) {
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;';

//$mustang = array();

for($i=1$i<=$chislo_str$i++)
{

if(
$page && $i && $i $page-3) {
echo 
'...';
echo 
'&nbsp;|&nbsp;';
$i $page 3;
}

if(
$chislo_str && $i $chislo_str && $i $page+3) {
echo 
'...';
echo 
'&nbsp;|&nbsp;';
$i $chislo_str;
}

if(
$i==$page) { echo '<b>'.$i.'</b>'; }

else {  echo 
'<a href= "./?page='.$i.'">'.$i.'</a>'; }

echo 
'&nbsp;|&nbsp;';
}

echo 
$vpered;
} else {
    echo 
'<b>1</b>';

98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Навигация в документе kanapfelka Microsoft Office Word 20 24.09.2010 19:54
Страницная навигация R-87A Общие вопросы .NET 13 25.04.2010 18:36
Навигация по листу Rodion Microsoft Office Excel 1 19.04.2010 19:47
Навигация по DBGrid uraura Компоненты Delphi 1 01.11.2008 18:13
Навигация по таблице Натуся Помощь студентам 4 31.10.2007 00:58