|
|
|
| Проблема такая, соорудил конструкцию 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>';
}
} | |
|
|
|
|
|
|
|
для: allforweb
(26.09.2010 в 14:10)
| | Что-то не совсем понял.
У вас в адресной строке есть эти индексы массива _GET (id или del или add), но вам на страницу все равно выводится список новостей?
> соорудил конструкцию if else, но перменные в глобальный массим $_GET из нее не передаются.
Как они туда передаваться то могут, не понимаю? | |
|
|
|
|
|
|
|
для: neadekvat
(26.09.2010 в 14:21)
| | Ну у меня же получается ссылка вида: admin.php?mod=addnews&del=3.
Значит должна же быть в массиве GET переменная "del"? | |
|
|
|
|
|
|
|
для: allforweb
(26.09.2010 в 14:33)
| | Это весь код?
Тут даже интерпритатором быть не надо. Но порой мозг выключается. Вот, по сути, прямая аналогия:
<?php
if (isset($_GET['id']))
echo "ID = {$_GET['id']}";
elseif (isset($_GET['del']))
echo "Удаляем {$_GET['del']}?";
elseif (isset($_GET['add']))
echo 'Добавляем.';
else
echo 'Ничего нет';
|
При вызове через адресную строку ваших адресов (да, даже с mod=addnews) у меня все происходит именно так, как это ожидается.
Поэтому "подвох" где-то дальше.
P.S. В приведенном коде ошибок нет, он выдает результат также верно, как это необходимо.
И старайтесь как-то стиль выдерживать свой. Так, например, куда читабельнее приведенного кода.
<?php
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>';
}
}
|
| |
|
|
|
|
|
|
|
для: allforweb
(26.09.2010 в 14:10)
| | > при нажатии на новость
на какую ссылку?
при нажатии на ?mod=addnews&id='. (int)$myrow['id'] .'" обрабатывается только то что в блоке
if (isset ($_GET['id']))
{echo 'Редактирование новости';}
должно показать эту строку и всё
или если ?mod=addnews&del
elseif (isset($_GET['del']))
{echo 'Удаление новости';}
<a href="'.htmlspecialchars($myrow["link"]).'" target="_blank"> неизвестно какая ссылка
>должны появляться переменные в глобальном массиве
где это проверяется? | |
|
|
|
|
|
|
|
для: heed
(26.09.2010 в 14:26)
| | при нажатии на ?mod=addnews&id='. (int)$myrow['id'] .'" обрабатывается только то что в блоке
if (isset ($_GET['id']))
{echo 'Редактирование новости';}
должно показать эту строку и всё
Ну так вот ее и не показывает. | |
|
|
|
|
|
|
|
для: allforweb
(26.09.2010 в 14:34)
| | возможно какая-то опечатка
напишите в самом начале
echo '<pre>';
var_dump($_GET);
echo '</pre>'; | |
|
|
|
|
|
|
|
для: heed
(26.09.2010 в 14:44)
| | возможно какая-то опечатка
напишите в самом начале
echo '<pre>';
var_dump($_GET);
echo '</pre>';
Вот такой код выдало:
array(2) {
["mod"]=>
string(4) "news"
["del"]=>
string(0) ""
} | |
|
|
|
|
|
|
|
для: allforweb
(26.09.2010 в 15:22)
| | Это значит, что в переменную del у вас ничего не поступает с базы.
И обратите внимание, что все типы значений, это string, и какого лешего вы применяете (int) к значениям подставляемым url-переменным? | |
|
|
|
|
|
|
|
для: allforweb
(26.09.2010 в 15:22)
| | elseif (isset($_GET['del'])) должно срабатывать , опечаток не заметил
где-то в другом месте ошибка логики, или отключен вывод ошибок и скрипт просто вылетает с ошибкой
. если не в этом файле то в тех файлах которые включены каким-нибудь include() между var_dump($_GET); и этими блоками условных операторов | |
|
|
|
|
|
|
|
для: allforweb
(26.09.2010 в 14:10)
| | (int)$myrow['id'] - это то зачем проделывать, вы опасаетесь что в базе вашей вместо чисел буковки могут появиться? | |
|
|
|
|
|
|
|
для: sim5
(26.09.2010 в 14:53)
| | Согласен...
Куда полезнее делать это с $_GET['id'] | |
|
|
|