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

Поиск:

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


Опытный
**


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

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



чтобы избежать ошибку Notice: Undefined index: id_ses in нужно обязательно указывать isset() или можно каким-то другим способом ее решить?


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



а просто подавить знаком @ не получаеться *?


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Shark
Дата 20.5.2009, 01:46 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



godvinn, если поставить знак @, то тогда ниодна ошибка не появится...


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



переменные объявить  пробовали?

(string)$str = '';
(int)$int      = 0; 

можно без (int string итд) 



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
bars80080
Дата 20.5.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(Shark @  20.5.2009,  00:36 Найти цитируемый пост)
нужно обязательно указывать isset() или можно каким-то другим способом ее решить? 


о прописных истинах, о которых всё же надо сказать, ибо вопросы возникают неспроста


вообще, данный вопрос не имеет на самом деле проблемы в себе. тут ведь очень просто: как ты можешь использовать переменные, если не знаешь есть они или нет. а если знаешь, то она уже решена

в любой задаче данные просто не могут ниоткуда взяться, если вы её хотите решить грамотно, без дальнейших сюрпризов в дальнейшим (наподобии ошибок, взлома системы, порчи данных), то надо изначально объявлять переменные

здесь подойдут isset и empty, но в каждом конкретном случае своя проверка
у тех кто начинает кодить возникает естественная лень по этому поводу. переменных много, а наблюдать кучу строк 
Код

if(!empty($_POST['day'])) $day = intval($_POST['day']); $day = 0;
if(!empty($_POST['month'])) $month = intval($_POST['month']); $month= 0;
if(!empty($_POST['year'])) $year = intval($_POST['year']); $year = 0;
в начале скрипта глаз ломается. однако, возникает резонный вопрос, почему не воспользоваться навыком программирования и упростить себе задачу.

к примеру, мне из формы должны придти ряд числовых параметров. я пишу что-то вроде:

Код

$HTML->input(array('day', 'month', 'year'), 'int', 0);


что выглядит гораздо короче чем предыдущий кусок кода, а внутренние обработчики сделают что надо и вернут соответствующие переменные (имхо, лучше они будут не вида $day, а вида $HTML->i['day'], т.е. в специальном массиве под входящие переменные, дабы они не перезатирались). но что самое главное, мы получаем гарантировано существующую переменную, уже приведённую к нужному (числовому) виду
PM MAIL WWW   Вверх
primesite
Дата 20.5.2009, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А поверку существования индексов (или ключей) в  массивах лучше всего сделать специально предназначенной для этого ф-ей:

http://ru2.php.net/array_key_exists
PM MAIL WWW   Вверх
Shark
Дата 20.5.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а если такой код:
Код

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

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

        $page  =  intval ( $page ); 

        if(empty( $page ))  $page  =  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=".$PHP_SELF."?showcat=".$_GET['showcat']."&showforum=".$_GET['showforum']."&showtopic=".$_GET['showtopic']."&page="."1"."> <<</a> 
                <a href=".$PHP_SELF."?showcat=".$_GET['showcat']."&showforum=".$_GET['showforum']."&showtopic=".$_GET['showtopic']."&page=" . ( $page  -  1 ). "><</a> " ;  //в этой строке ошибка
            

        if ( $page  !=  $total ) $nextpage  =   "<a href=".$PHP_SELF."?showcat=".$_GET['showcat']."&showforum=".$_GET['showforum']."&showtopic=".$_GET['showtopic']."&page=" . ( $page  +  1 ). "> ></a> 
                <a href=".$PHP_SELF."?showcat=".$_GET['showcat']."&showforum=".$_GET['showforum']."&showtopic=".$_GET['showtopic']."&page="  . $total .  ">>></a>" ; 
            

        if( $page  -  2  >  0 )  $page2left  =  " <a href=".$PHP_SELF."?showcat=".$_GET['showcat']."&showforum=".$_GET['showforum']."&showtopic=".$_GET['showtopic']."&page=" . ( $page  -  2 ). ">" . ( $page  - 2 ). "</a> | " ; 
        if( $page  -  1  >  0 )  $page1left  =  " <a href=".$PHP_SELF."?showcat=".$_GET['showcat']."&showforum=".$_GET['showforum']."&showtopic=".$_GET['showtopic']."&page=" . ( $page  -  1 ). ">" . ( $page  - 1 ). "</a> | " ; 
        if( $page  +  2  <=  $total )  $page2right  =  " | <a href=".$PHP_SELF."?showcat=".$_GET['showcat']."&showforum=".$_GET['showforum']."&showtopic=".$_GET['showtopic']."&page=" . ( $page  +  2 ). ">" . ( $page  +  2 ). "</a>" ; 
        if( $page  +  1  <=  $total )  $page1right  =  " | <a href=".$PHP_SELF."?showcat=".$_GET['showcat']."&showforum=".$_GET['showforum']."&showtopic=".$_GET['showtopic']."&page=" . ( $page  +  1 ). ">" . ( $page  +  1 ). "</a>" ;  //в этой строке ошибка

        echo  $pervpage . $page2left . $page1left . "<b>" . $page . "</b>" . $page1right . $page2right . $nextpage ; //в этой строке ошибка
        echo "</div></font></td></tr></table>";


Это сообщение отредактировал(а) Shark - 20.5.2009, 15:07


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


Белый и лохматый
**


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

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



Цитата(Shark @  20.5.2009,  15:01 Найти цитируемый пост)
а если такой код

А в чем вопрос?  smile 


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Shark
Дата 20.5.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



s0lman, а Вы почтайте первый пост


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


Белый и лохматый
**


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

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



Для строки 4 можно, например
Код

if(isset($_GET [ 'page' ])){$page  =  $_GET [ 'page' ];}else{$page=0;}

Или $page=1, как там нумерация идет
В остальных трех случаях выложите полный текст ошибок smile


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Shark
Дата 20.5.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



s0lman, ошибка точно такая же Notice: Undefined index: (указана переменная)... в своем коде я наисал комменты где эта ошиба!


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


Новичок



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

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



Тогда так:
Код

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

PM MAIL WWW   Вверх
s0lman
Дата 20.5.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


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

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



Shark,  как я могу судить, в вашем коде не определа переменная $page. 
Если в 4-й строке вы ее определили, то нотайс вылетать не должен бы...


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Shark
Дата 20.5.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



помимо этой строчки:
Код

$page  =  $_GET [ 'page' ]; 

есть и другие ошибки...
прокрутите мой код вниз и вправо и почитайте коммы...

с этим
Код

$page  =  $_GET [ 'page' ]; 

я уже понял


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


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



и ты не можешь вставить проверку для переменной с указанным индексом? (который, кстати, ты оставил в тайне от нас)

это во-первых, во-вторых, совать чистые необработанные $_GET - верх кощунства. гибель базы, гибель пользователей, имевших горькую участь зайти на ваш сайт, и т.д....
PM MAIL WWW   Вверх
Страницы: (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.0900 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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