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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
goooooch
Отправлено: 26 Мая, 2011 - 11:44:47
Post Id



Гость


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


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




Здравствуйте.

Форма передает обработчику методом GET один из нескольких вариантов
producer_id_42
producer_id_43
producer_id_44
...

Мне нужно:
1. Организовать проверку типа
if (isset($_GET['producer_id_***'])) {Некое действие, привязанное к ***}
2. Извлечь *** из запроса

Мне не лень написать самому, просто я не знаю, как это сделать Однако
 
 Top
EuGen Администратор
Отправлено: 26 Мая, 2011 - 11:55:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Переделайте форму так, чтобы она передавала данные в виде
producer_id[42]
producer_id[43]
producer_id[44]
Добиться этого можно так:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action='script.php' method='GET'>
  3. <input type='text' name='producer_id[42]'>
  4. <input type='text' name='producer_id[43]'>
  5. <input type='text' name='producer_id[44]'>
  6. </form>
  7.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
goooooch
Отправлено: 26 Мая, 2011 - 12:07:52
Post Id



Гость


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


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




EuGen пишет:
Переделайте форму так, чтобы она передавала данные в виде
producer_id[42]
producer_id[43]
producer_id[44]
Добиться этого можно так:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action='script.php' method='GET'>
  3. <input type='text' name='producer_id[42]'>
  4. <input type='text' name='producer_id[43]'>
  5. <input type='text' name='producer_id[44]'>
  6. </form>
  7.  



Дело в том, что у меня форма из чекбоксов.
<input type="checkbox" name="producer_id_{@id}" id="id_producer_id_{@id}">
<label for="id_producer_id_{@id}"><xsl:value-of disable-output-escaping="yes" select="shop_producers_list_name"/></label>
</input>
 
 Top
EuGen Администратор
Отправлено: 26 Мая, 2011 - 12:10:26
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




<input type="checkbox" name="producer_id[{@id}]" id="id_producer_id_{@id}">

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
goooooch
Отправлено: 26 Мая, 2011 - 12:14:51
Post Id



Гость


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


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




EuGen пишет:
<input type="checkbox" name="producer_id[{@id}]" id="id_producer_id_{@id}">

?



Это из xslt-шаблона кусок.

Хтмл выглядит так:

<input type="checkbox" name="producer_id_42" id="id_producer_id_42">
<label for="id_producer_id_42">Адидас</label>
</input>

<input type="checkbox" name="producer_id_43" id="id_producer_id_43">
<label for="id_producer_id_43">Найк</label>
</input>

<input type="checkbox" name="producer_id_44" id="id_producer_id_44">
<label for="id_producer_id_44">Рибок</label>
</input>

.....
 
 Top
morosit
Отправлено: 26 Мая, 2011 - 12:15:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Июль 2010  
Откуда: Казахстан


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




goooooch
У вас переменное имя чекбокса?
 
 Top
goooooch
Отправлено: 26 Мая, 2011 - 12:17:05
Post Id



Гость


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


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




morosit пишет:
goooooch
У вас переменное имя чекбокса?



Получается, что так...
name="producer_id_42" name="producer_id_43" name="producer_id_44"...
 
 Top
EuGen Администратор
Отправлено: 26 Мая, 2011 - 12:17:22
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Так и не понял где сложность. Ну генерируйте в xslt имя в нужном виде


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
morosit
Отправлено: 26 Мая, 2011 - 12:18:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Июль 2010  
Откуда: Казахстан


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




а что вы собствено узнать хотите
как извлечь три звезды из запроса?
 
 Top
goooooch
Отправлено: 26 Мая, 2011 - 12:18:59
Post Id



Гость


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


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




morosit пишет:
а что вы собствено узнать хотите
как извлечь три звезды из запроса?


Мне нужно:
1. Организовать проверку типа
if (isset($_GET['producer_id_***'])) {Некое действие, привязанное к ***}
2. Извлечь *** из запроса


Т.е. чекбоксы могут быть пустыми, галочку пользователь может не поставить. Нужно это на странице обработчика проверить. Если галочка стоит, то извлечь ид производителя.

(Отредактировано автором: 26 Мая, 2011 - 12:20:34)

 
 Top
morosit
Отправлено: 26 Мая, 2011 - 12:23:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Июль 2010  
Откуда: Казахстан


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




вы не знаете заранее какой producer_id_***?
значение как-то задается
 
 Top
goooooch
Отправлено: 26 Мая, 2011 - 12:26:14
Post Id



Гость


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


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




morosit пишет:
вы не знаете заранее какой producer_id_***?
значение как-то задается



producer_id_*** добавляются из админки, их конечный набор (скажем 10штук).
Но они могут удаляться, добавляться новые админом.
 
 Top
EuGen Администратор
Отправлено: 26 Мая, 2011 - 12:26:15
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Я указал Вам на то, что лучше правильно сгенерировать имя полей, чтобы одна странность (имя полей через "_" ) не порождала другую странность (которую опишу ниже)
PHP:
скопировать код в буфер обмена
  1. $rgKeys=array_map(create_function('$item', 'preg_match("/producer_id_(.*)/", $item, $rgMatches); return $rgMatches[1];'), array_keys($_GET));
  2. foreach($rgKeys as $key)
  3. {
  4.    //действие для $key
  5. }

Хм... что-то стал я чрезмерно часто create_function + array_map использовать ..


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
goooooch
Отправлено: 26 Мая, 2011 - 12:29:52
Post Id



Гость


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


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




EuGen пишет:
Я указал Вам на то, что лучше правильно сгенерировать имя полей, чтобы одна странность (имя полей через "_" )


Это коробочная ЦМС-ка. С закрытым кодом.
 
 Top
EuGen Администратор
Отправлено: 26 Мая, 2011 - 12:31:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Ну так и нужно было указать - что Вы не имеете возможности изменить запрос и работать надо с тем, что есть. В любом случае пример выше отвечает на Ваш вопрос.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB