Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
1

неправильная навигация

06.11.2010, 18:16. Показов 3226. Ответов 53
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем!
Написал навигацию, работает нормально, кроме....
у меня - страница index.php не совпадает со страницей index.php?p=1
на страницах index.php?p=$1 и т.д. статьи выводятся нормально.
хотелось, чтобы то что отображается на index.php?p=$1 было и на index.php, т.е начальная страница равнялась первой странице в цикле
(лучше чтобы не было index.php?p=$1, а только 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
<?
/*
Шаблон списка статей
====================
$article['title'] - заголовок статьи
$article['content'] - текст статьи
$article['id_dates'] - дата последнего обновления
$article['id_article'] - номер статьи в БД
*/
?>
    |   <b><a href="editor.php">Админка</a></b>
<hr/>
<? $count_article=0;    //Количество статей на одной странице ?>
 
<? foreach ($articles as $article): ?>
 
<? $count_article++; ?>
<? if (($count_article > 2 * ($_GET['p'] - 1)) && ($count_article <= 2 * $_GET['p'])): ?>
<br/>
<a href="article.php?id=<?=$article['id_article']?>"><?=$article['title']?></a>
<br/>
 
    Дата последнего обновления:&nbsp;&nbsp;&nbsp;
    <b>
    <?=substr($article['id_dates'], 0, 10)?>
    &nbsp;|&nbsp;
    <?=substr($article['id_dates'], 10, 9)?>
    </b>
    <p>
    <img src = "small_ph/<?=$article['photo']?>" />
    <?=nl2br($article['content']) . '   ...'?>
    </p>
    </ul>
    
<? endif ?> 
 
<? endforeach ?>
 
<?  
    for ($i = 1; $i <= $count_article/2+1; $i++) {
        $p = $i;
        if ($p == $_GET['p'])
            echo '&nbsp;'. $current;  //  $current  -- текущая страница
        else
            echo "<a href =index.php?p=$p style = 'text-decoration : none'>&nbsp;$p</a>";
    }
?>
Благодарю заранее!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2010, 18:16
Ответы с готовыми решениями:

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

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

Постраничная навигация
Здравствуйте это конечно вопрос не новый но ничего подходящего пока не нашел для себя,.. помогите...

Не работает навигация
Есть файл вывода товаров каталога, он большой поэтому загрузил его на сайт. Не получается вывод...

53
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
08.11.2010, 17:41  [ТС] 41
Author24 — интернет-сервис помощи студентам
вот архив (не полный). все то что касается index.php, ну чтобы не запутаться
Вложения
Тип файла: rar архив.rar (3.4 Кб, 10 просмотров)
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
09.11.2010, 02:42  [ТС] 42
если нужно, выложу все файлы, но думаю они не нужны ..

Добавлено через 6 часов 33 минуты
УРА! я сделал это )))))))
я же говорил нужен цыкл с массивом

Добавлено через 3 минуты
вот что добавил в Контроллер
это обращение к ф-ии вывода статей постранично
PHP
1
2
// Извлечение статей постранично
    $art = article_num($pag, $num);
а это как раз чтобы постранично все заработало, потому что эта ф-я зависит от $pag и меняется вместе с ней
PHP
1
2
3
4
5
6
    $a = array(); // создаем пустой массив, чтобы класть туда статьи с каждой страницы
    
// чтобы заработала ф-я article_num($pag, $num); нужно пустить ее по циклу страниц
    for ($pag = 1; $pag <= $pages; $pag++) {
        $a[] = $art;
    }
Добавлено через 7 минут
остался вопрос теперь с навигацией.
во 1-ых у меня цифра остается ссылкой, даже если я нахожусь на данной странице.
во 2-ых надо полностью избавиться от index.php?pag=1 - эта страница должна равняться главной (ну как уже делали без MVC).

вот как вывожу в браузер навигацию
PHP
1
2
3
<? for ($pag = 1; $pag <= $pages; $pag++): ?>
<a href="index.php?pag=<?=$pag?>" style = 'text-decoration : none'>&nbsp;<?=$pag?></a>
<? endfor ?>
что здесь надо поменять(?), вроде те условия которые это делали я записал в Контроллере, почему то не реагирует

Добавлено через 2 часа 14 минут
да, точно, исправить надо навигацию, работает нормально, но не хорошо... )
короче на главной странице (http://www.wg4/index.php или http://www.wg4/) отображаются только ссылки на страницы со статьями (1 2 ...). Кроме того, выдает ошибку (предупреждение):
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in Z:\home\wg4\www\model.php on line 237
вот эта строка (это из ф-ии вывода статей):
PHP
1
while ($article = mysql_fetch_assoc($re)) $articles[] = $article;
Когда перехожу по ссылкам ошибка исчезает и все отображается нормально.
Думаю, если как то первую страницу - index.php?pag=1 приравнять главной (т.е. полностью убрать первую), эта ошибка исчезнет сама собой.... и, мне будет счастье
Как это все проделать?
0
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
09.11.2010, 22:40 43
Сорри.. Был занят. Но все у вас развивается слишком быстро.
Выложите свой архив еще раз с исправленным выводом статей.

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
Кроме того, выдает ошибку (предупреждение):
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in Z:\home\wg4\www\model.php on line 237
вот эта строка (это из ф-ии вывода статей):
Судя по всему, ошибка в SQL-запросе.

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
вот как вывожу в браузер навигацию
PHP
1
2
3
<? for ($pag = 1; $pag <= $pages; $pag++): ?>
<a href="index.php?pag=<?=$pag?>" style = 'text-decoration : none'>&nbsp;<?=$pag?></a>
<? endfor ?>
что здесь надо поменять(?)
Куда-то пропал вывод по условию, что я когда-то писал...

Короче, жду свежую версию.
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
09.11.2010, 23:08  [ТС] 44
вот, выложил. спасибо что откликнулся.
тут только, то что касается главной страницы и Модуль.
Короче сичас так, на главной стр выходит ошибка, о которой я уже написал и просто ссылки на стр (в моем случае - 1 2 , потому что 4 статьи, по 2 на каждую). Прохожу по ссылкам все нормально работает - исчезает ошибка, выводятся новости (каждая на своей стр.).
Что я хочу:
1. избавиться от первой стр,т.е приравнять ее к главной, т.е чтобы главная и была 1-ой страницей (ну как ты мне показывал без MVC).
2. когда я нахожусь на какой то стр, напр. 1-ой, цифра указывающая на эту стр не была ссылкой (как сейчас)
Вложения
Тип файла: rar архив.rar (3.4 Кб, 9 просмотров)
0
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
09.11.2010, 23:46 45
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
1. избавиться от первой стр,т.е приравнять ее к главной, т.е чтобы главная и была 1-ой страницей (ну как ты мне показывал без MVC).
Похоже, что была переименована GET-переменная (была 'p' - стала 'pag')?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
// работа с GET и POST переменными должна проводиться только в контроллере.
// здесь это все и происходит
    $pag = empty($_GET['p']) ? 1 : $_GET['p'];
 
// текущая страница  
    $pag = $_GET['pag'];
 
// число статей на странице
    $num = 2;
 
// если номер страницы пустой или меньше 0, то приравниваем к 1
    if (empty($pag) && $pag < 0) {$pag = 1;}
Надо определиться наконец, как она называется
Потом удалить ненужное.


Цитата Сообщение от Love_and_Peace Посмотреть сообщение
2. когда я нахожусь на какой то стр, напр. 1-ой, цифра указывающая на эту стр не была ссылкой (как сейчас)
Это функция представления, файла которого в архиве нет. Но на основе приведенного чуть выше кода, можно предположить, что выглядеть это должно примерно так:
PHP
1
2
3
<? for ($p = 1; $p <= $pages; $p++): /* $pag не применяем для цикла - это внешняя переменная */ ?>
<? echo ($p == $pag ? $p : '<a href="index.php?pag='.$p.'" style="text-decoration:none">&nbsp;'.$p.'</a>')?>
<? endfor ?>
Добавлено через 2 минуты
Кстати, это неправильно составленное условие:
PHP
1
if (empty($pag) && $pag < 0) {$pag = 1;}
Должно быть:
PHP
1
if (empty($pag) || $pag < 0) {$pag = 1;}
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
09.11.2010, 23:54  [ТС] 46
ostgals, GET-переменная будет называться 'pag'

Цитата Сообщение от ostgals Посмотреть сообщение
файла которого в архиве нет
этот файл есть там в папке theme. В главной папке есть еще папка - theme

Добавлено через 2 минуты
кстати, если убрать вабще это
PHP
1
2
// текущая страница     
        $pag = $_GET['pag'];
то на главной странице появляются статьи но ссылки перестают работать, точнее они работают (юрл меняется), но на всех страницах одни и те же статьи
0
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
10.11.2010, 10:05 47
Вместо:
PHP
1
2
3
4
$pag = empty($_GET['p']) ? 1 : $_GET['p'];
 
// текущая страница  
    $pag = $_GET['pag'];
пишем только:
PHP
1
$pag = empty($_GET['pag']) ? 1 : $_GET['pag'];
Вывод страниц:
PHP
1
2
3
4
5
6
<?
for ($i = 1; $i <= $pages; $i++):
    $url = ($i == 1 ? '/' : '/index.php?pag='.$i); // адреса страниц с корректировкой первая=главная
    echo '&nbsp;'.($i == $pag ? $i : "<a href=\"$url" style=\"text-decoration:none\">$i</a>";
endfor;
?>
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
10.11.2010, 17:41  [ТС] 48
Отлично, спасибо ostgals, круто!

Добавлено через 4 минуты
все работает, тока почему то цифра указывающая на данную страницу остается ссылкой (кликабельной),
и второй вопрос по теории - можно ли в Представлении писать слово echo, разве здесь не должно быть просто переменные обработанные в Контроллере, безо всяких условий?
0
Особый статус
40 / 41 / 10
Регистрация: 26.01.2010
Сообщений: 504
10.11.2010, 17:59 49
А что пишеш тема сайта. я не читал другие собшении

Добавлено через 1 минуту
Сайт в ссылке. Над этим работаеш?

Добавлено через 20 секунд
Сайт в ссылке. Над этим работаеш?
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
10.11.2010, 18:04  [ТС] 50
bek08, Начал с простого вывода статей (сокращенных) в браузер, отдельно можно прочитать статью полностью..., добавлять, редактировать и т.п, ну это типа основу сайта что -ли. и это все на MVC (процедурно пока)
а в этой теме я хотел правильно написать навигацию с помощью MVC

Добавлено через 52 секунды
Цитата Сообщение от bek08 Посмотреть сообщение
Сайт в ссылке.
в ссылке не весь сайт, и он щас только у меня на локалке

Добавлено через 37 секунд
короче постепенно усложняю сайт...
0
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
10.11.2010, 20:39 51
Цитата Сообщение от ostgals Посмотреть сообщение
echo '&nbsp;'.($i == $pag ? $i : "<a href=\"$url" style=\"text-decoration:none\">$i</a>";
Я здесь слэш пропустил. Должно быть:
PHP
1
echo '&nbsp;'.($i == $pag ? $i : "<a href=\"$url\" style=\"text-decoration:none\">$i</a>";
Скорее всего это и поправит баг со ссылкой.

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
и второй вопрос по теории - можно ли в Представлении писать слово echo, разве здесь не должно быть просто переменные обработанные в Контроллере, безо всяких условий?
Грубо говоря, почему бы и нет - конечно, можно. Ведь echo всего лишь выводит данные.

А вообще, если придерживаться принципов, блок листалки надо было вынести в отдельный файл или в функцию-генератор, чтоб потом в представлении написать например так:
PHP
1
2
3
4
5
6
7
8
<!-- как переменная -->
<?=$paginator?>
 
<!-- как внешний файл -->
<? include 'paginator.php' ?>
 
<!-- или, если функция-генератор  -->
<?=paginator($pag, $pages)?>
Вариантов добавления листалки можно придумать много, на самом деле.
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
10.11.2010, 20:51  [ТС] 52
Цитата Сообщение от ostgals Посмотреть сообщение
Я здесь слэш пропустил. Должно быть:
да, заметил, я добавил, кроме того скобка не закрыта.
а что за
Цитата Сообщение от ostgals Посмотреть сообщение
функцию-генератор
???
0
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
10.11.2010, 20:58 53
Это которая сама создает html для вывода в браузер, в данном случае.

Например, функция-генератор (хоть и бесполезная), генерирующая простую ссылку:
PHP
1
2
3
function alink($url, $text) {
    echo "<a href=\"$href\">$text</a>";
}
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
10.11.2010, 21:04  [ТС] 54
Цитата Сообщение от ostgals Посмотреть сообщение
Это которая сама создает html для вывода в браузер, в данном случае
а... понял

Цитата Сообщение от ostgals Посмотреть сообщение
<!-- как переменная --> <?=$paginator?>
я вот так и хотел, над этим сам попробую как нить поломать голову. щас надо избавиться от ссылочности страницы на которой нахожусь.
Хелпни плиз

Добавлено через 1 минуту

Не по теме:


ostgals, ты по каким книгам учился?? :)

0
10.11.2010, 21:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2010, 21:04
Помогаю со студенческими работами здесь

ПОСТРАНИЧНАЯ НАВИГАЦИЯ
Имеется 3 файла 1. m_categories.php function categories_get($id, $start, $num) { $query...

Постраничная навигация
Я делаю свой первый сайт знакомств, а как вы наверное знаете на сайтах знакомств обязательно...

постраничная навигация
пытаюсь сделать для тренировки что-то наподобии такого: &quot;]&quot;]&quot;] т.е. очередная ссылка показывает...

Постраничная навигация
Добрый день! Помогите доработать пожалуйста скрипт постраничной навигации. Суть такая: у меня...


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

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