вопрос по Notice: Undefined index

(Ответов: 17, Просмотров: 2755)
Страница 1 из 2 12 Последняя
  1. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    в скрипте есть $page = (int)$_GET['page'];
    то бишь появляется ругань в виде Notice: Undefined index: page
    при определении переменной $page = ''; или вставке проверки if(isset($_GET['page'])) ругань пропадает

    теперь вопрос, если в скрипте например 70 и более переменных, то что, в начале скрипта писать такую строку что ли????
    $page1 = $page2 = ... ... $page69 = $page70 = '';

    c НЕТЕРПЕНИЕМ жду коментов.

    ps: убрать E-ALL не предлагать, отладкой занимаюсь..
    • 0
  2. Студент Аватар для Kartograff
    • Регистрация: 22.09.2011
    • Сообщений: 71
    • Репутация: 19
    когда назначаете значение переменной пропишите
    $page = isset($_GET['page']) ? (int)$_GET['page'] : 'дефолтное значение';
    Не стоит всегда явно прописывать $page = (int)$_GET['page'];, т.к. всегда есть вариант, что такого параметра в GET не будет.
    • 0
  3. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    то есть всем 70 переменным прописывать $page = isset($_GET['page']) ? (int)$_GET['page'] : 'дефолтное значение'; что ли?
    • 0
  4. Студент Аватар для Kartograff
    • Регистрация: 22.09.2011
    • Сообщений: 71
    • Репутация: 19
    Зачем? Можно и в цикле прописать
    • 0
  5. Опытный Аватар для AntoXa
    • Регистрация: 05.04.2012
    • Сообщений: 393
    • Репутация: 108
    • Webmoney BL: ?
    Простите, но что у вас за скрипт с 70 переменными?

    ---------- Сообщение добавлено 17:25 ---------- Предыдущее 17:21 ----------

    Которые не всегда определены.
    • 0
  6. Студент Аватар для Kartograff
    • Регистрация: 22.09.2011
    • Сообщений: 71
    • Репутация: 19
    Цитата Сообщение от AntoXa Посмотреть сообщение
    Простите, но что у вас за скрипт с 70 переменными?
    Которые не всегда определены.
    Особенно передаваемые GET'ом. ТС, может приведёте пример кода, возможно тогда не придётся использовать 70 переменных:)
    • 0
  7. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от Kartograff Посмотреть сообщение
    ТС, может приведёте пример кода
    да пожалуйста:

    пример кода


    PHP код:
    // ************************* навигация ****************************
    $num 5;
    $page $_GET['page']; // ругань на эту строку, если сделать как вы советовали то ругань переходит на 
    $query mysql_query("SELECT COUNT(*) FROM `cont_lib_articles`");
    $posts1 mysql_fetch_array($query);
    $posts $posts1[0];
    $total intval(($posts 1) / $num) + 1;
    $page intval($page); // вот эту строку, если и тут написать как вы советовали, то ругань переходит на 
    if(empty($page) or $page 0$page 1;
    if(
    $page $total$page $total;
    $start $page $num $num;
    $result mysql_query("SELECT * FROM `cont_lib_articles` WHERE post_status='on' ORDER BY id DESC LIMIT $start$num");
    if (
    $page != 1$pervpage '<a href=index.php?section=articles>< первая</a> <a href=index.php?section=articles&page='. ($page 1) .'><< предыдущая</a> ';
    if (
    $page != $total$nextpage ' <a href=index.php?section=articles&page='. ($page 1) .'>следующая >></a> <a href=index.php?section=articles&page=' .$total'>последняя ></a>';
    // все эти переменные: $page_navigate $pervpage $page2left $page1left $page $page1right $page2right $nextpage
    //вот и получается что надо писать строку $page_navigate = $pervpage = $page2left = $page1left = $page = $page1right = $page2right = $nextpage = ''; чтобы инициализировать все переменные. и исчезли Нотисы
    if($page 0$page2left ' <a href=index.php?section=articles&page='. ($page 2) .'>'. ($page 2) .'</a> | ';
    if(
    $page 0$page1left '<a href=index.php?section=articles&page='. ($page 1) .'>'. ($page 1) .'</a> | ';
    if(
    $page <= $total$page2right ' | <a href=index.php?section=articles&page='. ($page 2) .'>'. ($page 2) .'</a>';
    if(
    $page <= $total$page1right ' | <a href=index.php?section=articles&page='. ($page 1) .'>'. ($page 1) .'</a>';
    $page_navigate $pervpage.$page2left.$page1left."<b><font color='#E60000'>".$page."</font></b>".$page1right.$page2right.$nextpage// Вывод нивигации
    // ************************* навигация ****************************
    $myrow mysql_fetch_array ($result);
    do {
        
    $user_id $_SESSION['user_id'];
        
    $result_u mysql_query ("SELECT * FROM `users` WHERE `id`='".$myrow["user_id"]."'");
        
    $myrow_users mysql_fetch_array ($result_u);
    $content .= "<div id='content'>";
    $content.= "
    <div style='float: right; width: 150px; text-align: center; padding: 3px;'>"
    ;
        if (!empty(
    $myrow_users['avatar'])){$content .= "<img src=/content/".$myrow["user_id"]."/".$myrow_users['avatar']." alt='аватар'><br>";}
        else {
    $content .= "<img src='".P_TPL."/images/noavatar.png'><br>";}

    $content.= "
    <p>"
    .$myrow_users['name']."</p>
    <a href='/index.php?section=member&id="
    .$myrow_users['id']."' title='посмотреть профиль'>профиль</a><br>";
    if (isset(
    $_SESSION['user_id']) && $user_id == $myrow["user_id"]){$content .="<a href='/account/index.php?section=articles&operate=edit&id=".$myrow["id"]."' class='' title='редактировать эту статью'><img src='".P_TPL."/images/icon_edit_pensil.png' style='width: 24px; margin: 5px 0 0;'></a>";}
    $content .= "
    </div>

    <div style='margin: 0px 165px 0 0; padding: 10px; border-right: 1px dashed;'>
    <div id='content_top'>Статьи по "
    .$myrow["category"]."<br><img src='".P_TPL."/images/navPathArr.png' style='margin: 0 5px 3px 10px;'><span  style='color: #FF0000;'>".$myrow["title"]."</span><br></div>
    <div id='content_main'>"
    .htmlspecialchars_decode(implode(array_slice(explode('<br>',wordwrap($myrow["text"],500,'<br>',false)),0,1)))."...<br><br></div>
    <div id='content_bottom'>Прочтений: "
    .$myrow["view_count"]." <a href='index.php?section=articles&id=".$myrow["id"]."'>читать полностью...</a></div>
    </div>
    "
    ;
    $content .= "</div>"//добавлена: ".format_time($myrow['date'])."
    } while ($myrow mysql_fetch_array ($result));
    $content .= "<div id='content'>";
    $content .= "<div style='float: left; width: 100%; height: 20px; margin: 0; text-align: center;'>".$page_navigate."</div>";
    $content .= "</div>"
    [свернуть]


    в коментах ниписал где на че ругается
    таких кусков кода у меня 4, потому что таблицы и поля этих таблиц в бд все разные

    зы: число 70 было взято как пример. но все равно много получается..
    • 0
  8. Студент Аватар для Kartograff
    • Регистрация: 22.09.2011
    • Сообщений: 71
    • Репутация: 19
    Если я правильно понял, то вся проблема у Вас только из-за отсутствия $_GET['page'], когда его явно не прописывать в УРЛе
    Вместо $page = $_GET['page']; я бы написал так:

    $page = 1;
    if(isset($_GET['page']))
    {
    $page = !empty($_GET['page']) && ((int)$_GET['page'] > 0) ? (int)$_GET['page'] : 1;
    }
    Проверка может и большая, но зато Вы точно пропишете, что если в УРЛе у Вас есть нужный гет, то проверяем его на пустоту и на то, чтобы он был > 0 и цифровой, то присваиваем переменной значение из ГЕТ, иначе ставим равной 1. А в самом начале задаёте дефолтное значение переменной $page, чтобы ваш пагинатор не ругался, если $_GET['page'] будет отсутствовать.
    Дальше, не надо писать эти строки, т.к. проверка уже есть:
    $page = intval($page);
    if(empty($page) or $page < 0) $page = 1;


    Цитата Сообщение от cOAPerator Посмотреть сообщение
    if ($page != 1) $pervpage = ...
    if ($page != $total) $nextpage = ...
    if($page - 2 > 0) $page2left =...
    if($page - 1 > 0) $page1left = ...
    if($page + 2 <= $total) $page2right =...
    if($page + 1 <= $total) $page1right = ...
    Т.е. если одно из условий в цитате выше у Вас не сработает, то тут у Вас вылезет нотайс вот тут
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    $page_navigate = $pervpage.$page2left.$page1left."<b><font color='#E60000'>".$page."</font></b>".$page1right.$page2right.$nextpage;
    Т.к. одной из переменных не будет, а они у Вас не заданны по дефолту. Пропишите заранее их. Например так $pervpage = ''; и т.д. перед проверкой.
    • 0
  9. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от Kartograff Посмотреть сообщение
    Если я правильно понял, то вся проблема у Вас только из-за отсутствия $_GET['page'], когда его явно не прописывать в УРЛе Вместо $page = $_GET['page']; я бы написал так: $page = 1; if(isset($_GET['page'])) { $page = !empty($_GET['page']) && ((int)$_GET['page'] > 0) ? (int)$_GET['page'] : 1; } Проверка может и большая, но зато Вы точно пропишете, что если в УРЛе у Вас есть нужный гет, то проверяем его на пустоту и на то, чтобы он был > 0 и цифровой, то присваиваем переменной значение из ГЕТ, иначе ставим равной 1. А в самом начале задаёте дефолтное значение переменной $page, чтобы ваш пагинатор не ругался, если $_GET['page'] будет отсутствовать. Дальше, не надо писать эти строки, т.к. проверка уже есть: $page = intval($page); if(empty($page) or $page < 0) $page = 1;
    это то понятно.

    собственно сабж был не об этом.) а как раз по второй части:
    Цитата Сообщение от Kartograff Посмотреть сообщение
    Т.е. если одно из условий в цитате выше у Вас не сработает, то тут у Вас вылезет нотайс вот тут Сообщение от cOAPerator $page_navigate = $pervpage.$page2left.$page1left."<b><font color='#E60000'>".$page."</font></b>".$page1right.$page2right.$nextpage;Т.к. одной из переменных не будет, а они у Вас не заданны по дефолту. Пропишите заранее их. Например так $pervpage = ''; и т.д. перед проверкой.
    я ж говорю у меня 4 таких блока с кодом.
    получается везде прописывать надо $var = ''; для инициализации всех переменных, в данном случае их 7 штук в блоке кода этого и у меня 4 таких блока кода, итого 28 пустых переменных!!

    это просто жесть! куча кода совершенно лишнего... а если переменных еще больше, то и лишний код будет расти как на дрожжах..
    • 0
  10. Студент Аватар для Kartograff
    • Регистрация: 22.09.2011
    • Сообщений: 71
    • Репутация: 19
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    это просто жесть! куча кода совершенно лишнего... а если переменных еще больше, то и лишний код будет расти как на дрожжах..
    Для этого такие вещи переносят в функции и тогда не будет у Вас лишнего кода, просто передаёте необходимые данные и всё
    • 0
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Заражают index.php
WordPress 12 23.11.2012 10:57
Undefined offset
Web программирование 1 18.11.2012 10:55
Убрать index.php из url в MediaWiki
CMS 3 13.11.2012 16:05
Fatal error: Call to undefined function ... в WordPress
WordPress 21 29.04.2012 17:13
Снова вопрос о дубле морды http://site.ru/index.php
Вопросы от новичков 7 14.02.2012 14:32

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры