За последние 24 часа нас посетили 20224 программиста и 1550 роботов. Сейчас ищут 1944 программиста ...

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

Тема в разделе "PHP и базы данных", создана пользователем Golovastik, 23 сен 2010.

  1. Golovastik

    Golovastik Активный пользователь

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Вот вроде сделал навигацию, по исправлял все ошибки, но проблема в том ,что не получается добиться чтоб на каждой странице,было слева слово Назад, а справа слово - Вперёд, и так на всех страницах, у меня как-то не так выводит,как сделать правильно?
    У меня таблица такая в базе данных для пробы сделана.
    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
    Код (Text):
    1.  
    2. <?php
    3. $server = 'localhost'; //Имя сервера
    4. $user = 'privet'; //Логин  
    5. $password = '12345'; //Пароль
    6. $db = 'video';
    7. $table = 'lessons'; //Название таблицы
    8. $error_database = '<h2>Произошла ошибка в базе данных,<br/>
    9. в ближайшее время она будет устранена!</h2>';
    10. $connect = mysql_connect($server,$user,$password);
    11. if(!$connect){
    12. echo $error_database;
    13. exit;
    14. };
    15. //$connect по какому соединению мы работаем
    16. $select = mysql_select_db($db,$connect);
    17. if(!$select){
    18. echo $error_database;
    19. exit;
    20. };
    21. ?>
    Файл index.php
    Код (Text):
    1.  
    2. <?php
    3. include 'database.php';  /*Соединяемся с Базой Данных*/
    4. //Число постов выводящих на странице
    5. $num = 3;
    6. if(empty($page)){
    7. die('<p style="color:red; font-size:24px;">Ошибка! Неверный URL адресс!</p>');
    8. }
    9. $page = $_GET['page'];
    10. $result = mysql_query("select COUNT(*) FROM lessons",$connect);
    11. $posts = mysql_result($result,0);
    12. //Находим общее количество страниц
    13. $chislo_str = intval(($posts-1)/$num)+1;
    14. $page = intval($page);
    15. //empty($page) Если переменной не существует или ее значение равно нулю
    16. if(empty($page) or $page<0) $page = 1;
    17. if($page > $chislo_str) $page = $chislo_str;
    18. // Если ввести $page=7  тогда 7*3-3=18  
    19. //с 18 поста будет выводится пост 18,19,20 на странице №7
    20. $start = $page * $num - $num;  
    21. $result = mysql_query("SELECT * FROM lessons LIMIT $start, $num",$connect);  
    22. // В цикле переносим результаты запроса в массив $postrow  
    23. while ( $postrow[] = mysql_fetch_array($result));
    24.  
    25.  
    26. //Вывод постов
    27. for($i = 0; $i < $num; $i++)  
    28. {  
    29.  echo $postrow[$i]['id'].'&nbsp;'.$postrow[$i]['text'].'<br/>';
    30. }  
    31.  
    32. //------------------------------------------------
    33. // Проверяем нужны ли стрелки назад  
    34. if ($page != 1) $pervpage = '<a href= ./?page=1><<</a>  ;
    35.                                <a href= ./?page='. ($page - 1) .'><</a> ';  
    36. // Проверяем нужны ли стрелки вперед  
    37. if ($page != $chislo_str) $nextpage = ' <a href= ./?page='. ($page + 1) .'>></a>  
    38.                                    <a href= ./?page=' .$chislo_str. '>>></a>';  
    39.  
    40. // Находим две ближайшие страницы с обоих краев, если они есть  
    41. if($page - 2 > 0) $page2left = ' <a href= ./?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';  
    42. if($page - 1 > 0) $page1left = '<a href= ./?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';  
    43. if($page + 2 <= $chislo_str) $page2right = ' | <a href= ./?page='. ($page + 2) .'>'. ($page + 2) .'</a>';  
    44. if($page + 1 <= $chislo_str) $page1right = ' | <a href= ./?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
    45.  
    46. // Вывод меню  
    47.  
    48. if(isset($pervage)) echo $pervage;
    49. if(isset($page2left)) echo $page2left;
    50. echo '<b>';
    51. if(isset($page)) echo $page;
    52. echo '</b>';
    53. if(isset($page1right)) echo $page1right;
    54. if(isset($page2right)) echo $page2right;
    55. if(isset($nextpage)) echo $nextpage;
    56. ?>
    Не получается сделать вывод как на картинке,уже много раз пробовал и не знаю как,вот код на котором остановился.

    [​IMG]
     
  2. Golovastik

    Golovastik Активный пользователь

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

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

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

    Вот код который на данный момент сделал,чего-то не выходит,если кто знает помогите разобраться как сделать.
    Файл index.php
    Код (Text):
    1.  
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml">
    4. <head>
    5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    6. <title>Проба</title>
    7. <style type="text/css">
    8. .knopka_nazad1{text-decoration:underline; font-size:18px; color:black; font-family:Tahoma; }
    9. .knopka_nazad2{text-decoration:none; font-size:18px; color:gray; font-family:Tahoma;}
    10. .knopka_vpered1{text-decoration:underline; font-size:18px; color:black; font-family:Tahoma;}
    11. .knopka_vpered2{text-decoration:none; font-size:18px; color:gray; font-family:Tahoma;}
    12. </style>
    13. </head>
    14. <body>
    15.  
    16. </body>
    17. </html>
    18.  
    19. <?php
    20. include 'database.php';  /*Соединяемся с Базой Данных*/
    21. //Число постов выводящих на странице
    22. $num = 3;
    23. if(empty($page)){
    24. die('<p style="color:red; font-size:24px;">Ошибка! Неверный URL адресс!</p>');
    25. }
    26. $page = $_GET['page'];
    27. $result = mysql_query("select COUNT(*) FROM lessons",$connect);
    28. $posts = mysql_result($result,0);
    29. //Находим общее количество страниц
    30. $chislo_str = intval(($posts-1)/$num)+1;
    31. $page = intval($page);
    32. //empty($page) Если переменной не существует или ее значение равно нулю
    33. if(empty($page) or $page<0) $page = 1;
    34. if($page > $chislo_str) $page = $chislo_str;
    35. // Если ввести $page=7  тогда 7*3-3=18  
    36. //с 18 поста будет выводится пост 18,19,20 на странице №7
    37. $start = $page * $num - $num;  
    38. $result = mysql_query("SELECT * FROM lessons LIMIT $start, $num",$connect);  
    39. // В цикле переносим результаты запроса в массив $postrow  
    40. while ( $postrow[] = mysql_fetch_array($result));
    41.  
    42.  
    43. //Вывод постов
    44. for($i = 0; $i < $num; $i++)  
    45. {  
    46. if(isset($postrow[$i]['id'])) echo $postrow[$i]['id'].' '.$postrow[$i]['text'].'<br/>';
    47. }  
    48.  
    49.  
    50. //------------------------------------------------
    51. // Стрелка назад  
    52. if($page>1)
    53. $nazad= '<a class="knopka_nazad1" href= ./?page='.($page-1).'>Назад</a>';
    54. else $nazad= '<span class="knopka_nazad2">Назад</span>';
    55.        
    56. //Стрелка вперед  
    57. if($page<$chislo_str)
    58. $vpered = '<a class="knopka_vpered1" href= ./?page='.($page + 1).'>Вперёд</a>';
    59. else $vpered= '<span class="knopka_vpered2">Вперёд</span>';
    60.  
    61. // Вывод меню  
    62. echo $nazad.'  ';
    63. if($page>5) {
    64. echo '<a href=./?page=1>1</a>'.' ...';
    65. }
    66. echo '  ';
    67.  
    68. //$mustang = array();
    69.  
    70.  
    71. for($i=($page-5>0)?($page-5):1; ($i<=$page+5)&&$i<=$chislo_str; $i++)
    72. {
    73.  
    74. if($i==$page) { echo '<b>'.$i.'</b>'; }
    75.  
    76. else {  echo '<a href= ./?page='.$i.'>'.$i.'</a>'; }
    77.  
    78. echo ' | ';
    79. }
    80.  
    81.  
    82. if($page>1 &&  $page!=$chislo_str  &&  $page!=$chislo_str-1
    83. &&  $page!=$chislo_str-2  &&  $page!=$chislo_str-3
    84. &&  $page!=$chislo_str-4 &&  $page!=$chislo_str-5
    85. )
    86. echo '...'.'<a href=./?page='.$chislo_str.'>'.$chislo_str.'</a>'.'  ';
    87.  
    88.  
    89. echo $vpered;
    90.  
    91. ?>