Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передача методом GET - когда в строке ссылки передаются значения переменных, а когда их имена?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Las
Отправлено: 27 Мая, 2012 - 11:56:42
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Здравствуйте все!
Не получается передача на локалхосте методом GET в строке ссылки. В одном скрипте передаются значения переменных, а в другом только их имена. Например , по ссылке:
<a href='forma.php?select&item=$x&object=$y&value=smoll' TARGET='Sets'>$folders[$j]</a>"; в одном фрейме передаются
значения и переменных и константа:
$_GET['item'] и $_GET['object'] содержат значения $x и $y и константы select и smoll и это видно в явном виде в строке ссылки при наведении курсора на ссылку.

В другом же фрейме в строке ссылки видны только константы и имена переменных $x и $y, как константы, а значения
$_GET['item'] и $_GET['object'] не определены и получить через них значения $x и $y невозможно. Константы select и smoll при этом благополучно передаются, а переменные - нет.
В чем причина такого поведения метода GET и что нужно сделать, чтобы по клику ссылки передавались значения переменных всегда, как оно и должно быть?
Спасибо.
 
 Top
Medallion
Отправлено: 27 Мая, 2012 - 12:13:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




Ссылка должна генерироваться в PHP-кодом, чтобы подставить значения переменных $x и $y

Вот юзай пример:
PHP:
скопировать код в буфер обмена
  1.  
  2. // Имеем переменные
  3. $x = 'Первое значение';
  4. $y = 'Второе значение';
  5.  
  6. // Имеем ссылку в которой составляем GET-запрос со значениями переменных
  7. echo '<a href="?item='.$x.'&object='.$y.'">Ссылка</a>';
  8.  
  9. if($_GET['item'] && $_GET['object']) {
  10.         echo '<br>'.$_GET['item'].'<br>'.$_GET['object'];
  11. }
  12.  
 
 Top
sKaa
Отправлено: 27 Мая, 2012 - 12:19:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Medallion, не правильно! Нужно так :

PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['item']) && isset($_GET['object'])) {
  2.         echo '<br>'.$_GET['item'].'<br>'.$_GET['object'];
  3. }
 
 Top
Las
Отправлено: 27 Мая, 2012 - 12:45:57
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Посмотри в сообщении, именно так и сделано. А если isset
isset($_GET['item']) && isset($_GET['object' дает отрицательный ответ, тогда что делать?
 
 Top
Medallion
Отправлено: 27 Мая, 2012 - 12:50:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




sKaa
Объясни, почему неправильно! Код работает, это упрощенная запись.
 
 Top
DelphinPRO
Отправлено: 27 Мая, 2012 - 13:51:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Medallion пишет:
Объясни, почему неправильно!

Перед использованием переменной следует проверять ее на существование. Потому что при обращении к несуществующей переменной генерируется ошибка уровня E_NOTICE


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
sKaa
Отправлено: 27 Мая, 2012 - 14:07:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


DelphinPRO, нет не генерируется, если пользоваться каким-нибудь денвером и думать при этом, что ты ПРО-кодер как Данила, разумеется error_reporting(E_ALL); расставит все точки над Е....

(Отредактировано автором: 27 Мая, 2012 - 14:08:05)

 
 Top
Medallion
Отправлено: 27 Мая, 2012 - 14:22:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




sKaa, тебе терпения нехватает, написать почему, мой код плохо написан. Если пишешь, что неправильно кто-то написал код, не поленись, напиши почему?, или как-будто ты, никогда не писал "говнокод".
Я за практику, и это хорошо, когда указывают на ошибки, но плохо когда не говорят почему и как.
 
 Top
DelphinPRO
Отправлено: 27 Мая, 2012 - 14:25:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




sKaa
Денвером давно не пользовался, но насколько помню там включено отображение всех уровней ошибок.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Мая, 2012 - 09:59:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




DelphinPRO пишет:
там включено отображение всех уровней ошибок.

E_STRICT точно отключен, там же не 5.4 ещё. А на счёт E_NOTICE - не в курсе, да. Не видел вживую денвер.

sKaa пишет:
if(isset($_GET['item']) && isset($_GET['object'])) {

Ну и напомню, что isset умеет проверять несколько аргументов как раз по логике И
PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['item'],$_GET['object'])) {

(Добавление)
Medallion пишет:
Код работает, это упрощенная запись.

И помимо нотайса, о котором уже написали, ещё немаловажная вещь:
http://example[dot]org/index.php?x
if (isset($_GET['x'])) и if ($_GET['x']) дадут в корне различающиеся результаты.
А так же при http://example[dot]org/index.php?x=0
Что может быть вполне неприятно.


-----
PostgreSQL DBA
 
 Top
Las
Отправлено: 29 Мая, 2012 - 06:50:51
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Мы ушли от темы вопроса и мой вопрос остался без ответа
 
 Top
Мелкий Супермодератор
Отправлено: 29 Мая, 2012 - 09:31:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Las пишет:
и мой вопрос остался без ответа

Разве? А, да, похоже на то.
0) не используйте фреймы. Как и GOTO - толк есть только если больше ничего не помогает.
1) что такое константы и что такое переменные в вашей терминологии? В терминологии GET-запроса есть параметр и значение. Констант там точно нету.


-----
PostgreSQL DBA
 
 Top
Las
Отправлено: 29 Мая, 2012 - 10:26:44
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




А у Мелкого самый толковый совет! Вы предлагаете раскраивать страницу сайта (как видимо и все так делают) с помощью CSS и div-верстки?
Тогда ведь тоже будет уйма скриптов модулей и все проблемы обмена данными между ними и автоматического (без ссылок - зачем грузить посетителя лишними кликами) перехода из модуля в модуль.

Мелкий, я сам пришел к решению бросить этот сайт на полдороге (со слезами на глазах и задавив жабу), когда очередной target отказался работать. Не хочу больше таргетов, они то срабатывают, то нет.

Короче, начинаем с нуля.
 
 Top
Las
Отправлено: 04 Июня, 2012 - 15:01:19
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Мелкий пишет:
1) что такое константы и что такое переменные в вашей терминологии? В терминологии GET-запроса есть параметр и значение. Констант там точно нету.

Переменные есть в PHP. Я говорю о том, когда в массив $_GET с определенным параметром (напримен 'item') вставляется в качестве значения содержательное значение переменной $x
(например, если $x=5, то вставляется 5.
А когда в качестве значения вставвляется просто имя переменной, те собственноо $x.
ВОТ О ЧЕМ РЕЧЬ!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB