Подскажите ошибку в конструкции if else

allforweb

Новичок
Подскажите ошибку в конструкции if else

Проблема такая, соорудил конструкцию if else, но перменные в глобальный массим $_GET из нее не передаются.

Вывожу список новостей через цикл while, и при нажатии на новость у меня должны появляться переменные в глобальном массиве $_GET, но из конструкции условного оператора они почему то не появляются. А вот с прямых ссылок на странице они есть.
Вот такой код у меня получился:
if (isset ($_GET['id']))
{
echo 'Редактирование новости';
}
elseif (isset($_GET['del']))
{
echo 'Удаление новости';
}

elseif (isset($_GET['add']))
{
echo 'Добавление новости';
}
/*Это вывод новостей в цикле*/
else
{
$result = mysql_query("SELECT title, id, link FROM news");

while ($myrow = mysql_fetch_assoc($result))
{
echo '<p><a href="admin.php?mod=addnews&del='. (int)$myrow['id'] .'">del</a>
<a href="admin.php?mod=addnews&id='. (int)$myrow['id'] .'">'
. htmlspecialchars($myrow["title"]) .'</a> - <a href="'.htmlspecialchars($myrow["link"]).'" target="_blank">'
. htmlspecialchars($myrow["link"]) .'</a></p>';
}

}
 

korpus

злой бобёр
PHP:
if (isset ($_GET['id']) and $_GET['id']!="")
{
  echo 'Редактирование новости';
}
elseif (isset($_GET['del']) and $_GET['del']!="")
{
  echo 'Удаление новости';
}
elseif (isset($_GET['add']) and $_GET['add']!="")
{
  echo 'Добавление новости';
}
/*Это вывод новостей в цикле*/
else
{
  $result = mysql_query("SELECT title, id, link FROM news");
  while ($myrow = mysql_fetch_assoc($result))
  {
    echo '<p><a href="admin.php?mod=addnews&del='. (int)$myrow['id'] .'">del</a>
<a href="admin.php?mod=addnews&id='. (int)$myrow['id'] .'">'
. htmlspecialchars($myrow["title"]) .'</a> - <a href="'.htmlspecialchars($myrow["link"]).'" target="_blank">'
. htmlspecialchars($myrow["link"]) .'</a></p>';
  }
}
 

allforweb

Новичок
and $_GET['id']!="") - можно объяснить этот код?
Это двойная проверка, что существеут переменная id и она не пустая?
 

Фанат

oncle terrible
Команда форума
да
вместо нее обычно пишет одну проверку if (empty(...
 

Semen

Семён
id обычно является числом, поэтому
PHP:
if ( isset ($_GET['id']) and 0 < (int)$_GET['id'] )
 

korpus

злой бобёр
allforweb
isset() проверяет, что переменная существует. Но если в url передать такое: ?id=&somrthing=10, то PHP посчитает, что id установлена и равна пустой строке. Для этого и нужна вторая проверка.
 
Сверху