Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Избегание ошибок 
:(
    Опции темы
Shark
Дата 20.5.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



bars80080, про какой индекс ты имеешь ввиду?...
1. это вывод ссылок на страницы...
2. где была ошибка я ставил isset()
3. только после этих иссетов у меня выводилось Старница: 111, а не Страница: 1 | 2 > >>


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Photon
Дата 20.5.2009, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



У тебя куча переменных из массива $_GET.
Ты твёрдо уверен в их существовании?

И в начале заменить 
Код

$page = $_GET['page'];

на
Код

$page = array_key_exists('page', $_GET)? $_GET[ 'page' ]:1;



P.S.  Вот тебе твой код с поправками..  Так должно работать..   Только обрати внимание на 6, 7 и 8 строки..  Я ж не знаю, какие у тебя минимальные значения

Код

    $res = mysql_query("SELECT * FROM *** WHERE id_user='".$_SESSION['id']."'") or die ("Ошибка при выборе количества сообщений на страницу");
    $count_postpage = mysql_fetch_array($res);
    $num = $count_postpage['postpages'] ; 
    $page = array_key_exists('page', $_GET)?$_GET['page']:1;

    $showforum = array_key_exists('showforum', $_GET)?$_GET['showforum']:1;
    $showtopic = array_key_exists('showtopic', $_GET)?$_GET['showtopic']:1;                                               
    $showcat = array_key_exists('showcat', $_GET)?$_GET['showcat']:1;
    
    $newss = mysql_query ( "SELECT COUNT(*) FROM *** WHERE id_for=".$showforum." AND id_top=".$showtopic." AND id_cat=".$showcat."" ); 
    $p     = mysql_result ( $newss,0 ); 
    $total = intval(($p - 1) / $num) + 1; 
    if($page > $total)  
        $page = $total ; 
    $start = $page * $num - $num ; 
        
    echo "<table border=0 width=70% align=center style='border-collapse:collapse;table-layout:fixed;'><tr><td>
                <div align=left><font size=2>Страница: ";
    if ($page != 1) 
        $pervpage = "<a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page=1'> <<</a> 
                     <a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page=".($page - 1)."'><</a> " ;
    if ($page != $total) 
        $nextpage = "<a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page=" . ( $page  +  1 ). "'> ></a> 
                     <a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page="  . $total .  "'>>></a>" ; 
    if ($page - 2 > 0)  
        $page2left = " <a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page=" . ( $page  -  2 ). ">" . ( $page  - 2 ). "</a> | " ; 
    if ($page - 1 > 0)  
        $page1left = " <a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page=" . ( $page  -  1 ). ">" . ( $page  - 1 ). "</a> | " ; 
    if ($page + 2 <= $total)  
        $page2right = " | <a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page=" . ( $page  +  2 ). ">" . ( $page  +  2 ). "</a>" ; 
    if ($page + 1 <= $total)  
        $page1right = " | <a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page=" . ( $page  +  1 ). ">" . ( $page  +  1 ). "</a>" ;

    echo  $pervpage . $page2left . $page1left . "<b>" . $page . "</b>" . $page1right . $page2right . $nextpage ;
    echo "</div></font></td></tr></table>";



И еще вопрос..  У тебя куча одинакового кода повторяется..  Ты не думал, что его можно как-то по-другому выводить?

Это сообщение отредактировал(а) Photon - 20.5.2009, 22:56


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
Shark
Дата 20.5.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



работает, НО:
Код

Notice: Undefined variable: page2left in *** on line 197
Notice: Undefined variable: pervpage in *** on line 197
Notice: Undefined variable: page1left in *** on line 197


это если от выбранной странице в левую сторону нельзя выбрать страницы, и так же с правой стороной... если выбрать 3 страницу... то эти ошибки исчезают

другими словами вот в этой части:
Код

echo  $pervpage . $page2left . $page1left . "<b>" . $page . "</b>" . $page1right . $page2right . $nextpage ;



--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Photon
Дата 21.5.2009, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Ну тут можно сделать все проще..

Код

$res = mysql_query("SELECT * FROM *** WHERE id_user='".$_SESSION['id']."'") or die ("Ошибка при выборе количества сообщений на страницу");
$count_postpage = mysql_fetch_array($res);
$num = $count_postpage['postpages'] ; 
$page = array_key_exists('page', $_GET)?$_GET['page']:1;

$showforum = array_key_exists('showforum', $_GET)?$_GET['showforum']:1;
$showtopic = array_key_exists('showtopic', $_GET)?$_GET['showtopic']:1;                                               
$showcat = array_key_exists('showcat', $_GET)?$_GET['showcat']:1;
    
$newss = mysql_query ( "SELECT COUNT(*) FROM *** WHERE id_for=".$showforum." AND id_top=".$showtopic." AND id_cat=".$showcat."" ); 
$p = mysql_result ( $newss,0 ); 
$total = intval(($p - 1) / $num) + 1; 
if($page > $total)  
    $page = $total ; 


Оставляем этот кусок и добавляем:

Код

$side = 2;
if ($page > $side)
    $start = $page - $side;
else
    $start = 1;
if ($page+$side < $total)
    $end = $page+$side+1;
else
    $end = $total;
if ($start > 1) {
    $left = $page-1;
    echo "<a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page=1' title='Первая страница'>&lt;&lt;&lt;</a>";
    echo "&nbsp;<a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page={$left}' title='Предыдущая страница'>&lt;</a>&nbsp;";
}
for ($i = $start; $i < $end; $i++)
    if ($i != $page) {
        echo "<a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page={$i}'>{$i}</a>&nbsp;";
        if ($i < $end - 1)
            echo "|&nbsp;";
    }
    else {
        echo "<strong>{$i}</strong>&nbsp;";
        if ($i < $end - 1) 
            echo "|&nbsp;";
    }
if ($end < $total) {
    $right = $page+1;
    echo "<a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page={$right}' title='Следующая страница'>&gt;</a>&nbsp;";
    echo "<a href='".$_SERVER['PHP_SELF']."?showcat=".$showcat."&showforum=".$showforum."&showtopic=".$showtopic."&page={$total}' title='Последняя страница'>&gt;&gt;&gt;</a>";
}



Попробуй..  Если не будет работать, значит я что-то недосмотрел и забыл взять из твоего кода.

Это сообщение отредактировал(а) Photon - 21.5.2009, 00:22


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
Shark
Дата 21.5.2009, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Photon, та же самая ошибка... что с твоими изменениями, что без них


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Photon
Дата 23.5.2009, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Та же самая - это какая?


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
Shark
Дата 23.5.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



Цитата

Notice: Undefined variable: page2left in *** on line 197
Notice: Undefined variable: pervpage in *** on line 197
Notice: Undefined variable: page1left in *** on line 197
эта


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
NLspieler
Дата 23.5.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



У меня почему то никогда не возникало подобных проблем. 
Наверное сервер настроен так, что не существующие переменные воспринемает как пустое значение.

Например если написать такой скрипт.

Код

<?php

echo 'Hallo' . $var ;

?>


То результатом будет просто Hallo. Думал, что так и должно быть и даже использовал это свойство. Теперь вот появились сомнения...

PM MAIL   Вверх
enof
Дата 23.5.2009, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Значит E_NOTICE не включен в вывод ошибок. И причем здесь сервер? smile 
PM MAIL ICQ Skype   Вверх
NLspieler
Дата 23.5.2009, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



enof , а это может быть черевато какими либо последствиями?
PM MAIL   Вверх
enof
Дата 23.5.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Это просто предупреждение, что юзается неопределенная переменная. Предупреждение может натолкнуть на некоторые мысли, что где-то косяк. Если нужно пустое значение, которое может измениться, а может и нет, то я делаю примерно так:
Код

$var = '';

По крайней мере мне так удобнее, чем юзать что-то неопределенное. Ну и не валятся нотайсы.
PM MAIL ICQ Skype   Вверх
Shark
Дата 23.5.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



NLspieler
Цитата

<?php

echo 'Hallo' . $var ;

?>

прежде чем, написать это сообщение, я попробовал тоже самое.... это тут не причем!

enof
Код

 $var = ''; 

а что делать если переменная может существовать и может не существовать!!!???т.е. именно тут?
Код

    echo  $pervpage . $page2left . $page1left . "<b>" . $page . "</b>" . $page1right . $page2right . $nextpage ;

если у меня открыта первая страница.. появляется ошибка!!! а если 3-я.. то ошибки нет!
ошибка все таже!.. неизвестная переменная!


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
enof
Дата 23.5.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Она должна существовать, определите ее и все, в чем проблема?

Добавлено через 17 секунд
Цитата(Shark @  23.5.2009,  23:25 Найти цитируемый пост)
ошибка

это не ошибка

Добавлено через 41 секунду
Цитата(Shark @  23.5.2009,  23:25 Найти цитируемый пост)
!!!???

Цитата(Shark @  23.5.2009,  23:25 Найти цитируемый пост)
!!!

 smile  smile 
PM MAIL ICQ Skype   Вверх
Shark
Дата 23.5.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



а как?


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
enof
Дата 24.5.2009, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



А есть еще какой-то способ?
Код

$var = '';

Цитата(Shark @  23.5.2009,  23:25 Найти цитируемый пост)
а что делать если переменная может существовать и может не существовать

Переменная используется, но при этом может и не существовать, не логично как-то получается. Не стоит зацикливаться на этом.
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1033 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.