Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите ошибку в конструкции if else
 
 автор: allforweb   (26.09.2010 в 14:10)   письмо автору
 
 

Проблема такая, соорудил конструкцию 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>';
}

}

  Ответить  
 
 автор: neadekvat   (26.09.2010 в 14:21)   письмо автору
 
   для: allforweb   (26.09.2010 в 14:10)
 

Что-то не совсем понял.
У вас в адресной строке есть эти индексы массива _GET (id или del или add), но вам на страницу все равно выводится список новостей?

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

  Ответить  
 
 автор: allforweb   (26.09.2010 в 14:33)   письмо автору
 
   для: neadekvat   (26.09.2010 в 14:21)
 

Ну у меня же получается ссылка вида: admin.php?mod=addnews&del=3.
Значит должна же быть в массиве GET переменная "del"?

  Ответить  
 
 автор: neadekvat   (26.09.2010 в 14:46)   письмо автору
 
   для: 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>';
    }
}

  Ответить  
 
 автор: heed   (26.09.2010 в 14:26)   письмо автору
 
   для: 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"> неизвестно какая ссылка

>должны появляться переменные в глобальном массиве
где это проверяется?

  Ответить  
 
 автор: allforweb   (26.09.2010 в 14:34)   письмо автору
 
   для: heed   (26.09.2010 в 14:26)
 

при нажатии на ?mod=addnews&id='. (int)$myrow['id'] .'" обрабатывается только то что в блоке
if (isset ($_GET['id']))
{echo 'Редактирование новости';}
должно показать эту строку и всё

Ну так вот ее и не показывает.

  Ответить  
 
 автор: heed   (26.09.2010 в 14:44)   письмо автору
 
   для: allforweb   (26.09.2010 в 14:34)
 

возможно какая-то опечатка
напишите в самом начале
echo '<pre>';
var_dump($_GET);
echo '</pre>';

  Ответить  
 
 автор: allforweb   (26.09.2010 в 15:22)   письмо автору
 
   для: heed   (26.09.2010 в 14:44)
 

возможно какая-то опечатка
напишите в самом начале
echo '<pre>';
var_dump($_GET);
echo '</pre>';

Вот такой код выдало:
array(2) {
["mod"]=>
string(4) "news"
["del"]=>
string(0) ""
}

  Ответить  
 
 автор: sim5   (27.09.2010 в 06:39)   письмо автору
 
   для: allforweb   (26.09.2010 в 15:22)
 

Это значит, что в переменную del у вас ничего не поступает с базы.
И обратите внимание, что все типы значений, это string, и какого лешего вы применяете (int) к значениям подставляемым url-переменным?

  Ответить  
 
 автор: heed   (27.09.2010 в 15:01)   письмо автору
 
   для: allforweb   (26.09.2010 в 15:22)
 

elseif (isset($_GET['del'])) должно срабатывать , опечаток не заметил

где-то в другом месте ошибка логики, или отключен вывод ошибок и скрипт просто вылетает с ошибкой

. если не в этом файле то в тех файлах которые включены каким-нибудь include() между var_dump($_GET); и этими блоками условных операторов

  Ответить  
 
 автор: sim5   (26.09.2010 в 14:53)   письмо автору
 
   для: allforweb   (26.09.2010 в 14:10)
 

(int)$myrow['id'] - это то зачем проделывать, вы опасаетесь что в базе вашей вместо чисел буковки могут появиться?

  Ответить  
 
 автор: akmal   (28.09.2010 в 16:40)   письмо автору
 
   для: sim5   (26.09.2010 в 14:53)
 

Согласен...
Куда полезнее делать это с $_GET['id']

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования