в скрипте есть $page = (int)$_GET['page'];
то бишь появляется ругань в виде Notice: Undefined index: page
при определении переменной $page = ''; или вставке проверки if(isset($_GET['page'])) ругань пропадает
теперь вопрос, если в скрипте например 70 и более переменных, то что, в начале скрипта писать такую строку что ли????
$page1 = $page2 = ... ... $page69 = $page70 = '';
c НЕТЕРПЕНИЕМ жду коментов.
ps: убрать E-ALL не предлагать, отладкой занимаюсь..
- 10.12.2012 08:02
- 10.12.2012 10:23
когда назначаете значение переменной пропишите
$page = isset($_GET['page']) ? (int)$_GET['page'] : 'дефолтное значение';
Не стоит всегда явно прописывать $page = (int)$_GET['page'];, т.к. всегда есть вариант, что такого параметра в GET не будет. - 10.12.2012 16:47
то есть всем 70 переменным прописывать $page = isset($_GET['page']) ? (int)$_GET['page'] : 'дефолтное значение'; что ли?
- 10.12.2012 18:20
Зачем? Можно и в цикле прописать
- 10.12.2012 18:25
Простите, но что у вас за скрипт с 70 переменными?
---------- Сообщение добавлено 17:25 ---------- Предыдущее 17:21 ----------
Которые не всегда определены. - 10.12.2012 18:39
- 10.12.2012 19:16
да пожалуйста:
пример кода
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 - 2 > 0) $page2left = ' <a href=index.php?section=articles&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=index.php?section=articles&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href=index.php?section=articles&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $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 было взято как пример. но все равно много получается.. - 10.12.2012 20:03
Если я правильно понял, то вся проблема у Вас только из-за отсутствия $_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;
Т.е. если одно из условий в цитате выше у Вас не сработает, то тут у Вас вылезет нотайс вот тут
Т.к. одной из переменных не будет, а они у Вас не заданны по дефолту. Пропишите заранее их. Например так $pervpage = ''; и т.д. перед проверкой. - 10.12.2012 20:25
это то понятно.
собственно сабж был не об этом.) а как раз по второй части:
я ж говорю у меня 4 таких блока с кодом.
получается везде прописывать надо $var = ''; для инициализации всех переменных, в данном случае их 7 штук в блоке кода этого и у меня 4 таких блока кода, итого 28 пустых переменных!!
это просто жесть! куча кода совершенно лишнего... а если переменных еще больше, то и лишний код будет расти как на дрожжах.. - 10.12.2012 20:29
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Заражают index.php | WordPress | 12 | 23.11.2012 11:57 |
Undefined offset | Web программирование | 1 | 18.11.2012 11:55 |
Убрать index.php из url в MediaWiki | CMS | 3 | 13.11.2012 17:05 |
Fatal error: Call to undefined function ... в WordPress | WordPress | 21 | 29.04.2012 17:13 |
Снова вопрос о дубле морды http://site.ru/index.php | Вопросы от новичков | 7 | 14.02.2012 15:32 |