Чтение RSS каналов

Форум

Открыть Ответить

Проблема с POST переменными

1

1
1
22.05.2009 21:59:22
Народ, помогите, плиз, что-то не могу никак понять, как победить проблему.
Есть такой кусочек кода:

for ($i=0; $i<limit; $i++) {
$task = "Task$i";
switch ($$task) {


Проблема в третьей строке, она не срабатывает, потому что переменные "Task1", "Task2" и т.д. типа POST и попадают в данную функцию из предыдущей формы.

Вопрос следующий: как обратится в данном случае к POST переменным, т.к. (далее фраза из справочника PHP)
- переменные переменные не могут использоваться с суперглобальными массивами PHP. Это означает, что вы не можете делать что-то вроде ${$_GET}. Если вы ищете способ использовать суперглобальные переменные и старые HTTP_*_VARS, вы можете попробовать ссылаться на них


Версия системы: Open SLAED 1.*
Версия PHP: PHP 5
Сервер: Локальный сервер
3.84

3.84
2
23.05.2009 09:59:2623.05.2009 10:00:10
1. абсурд какой то... Первы раз слышу, что в конструкции switch запрещено использовать POST переменные
2. Для чего использовать ссылки на переменные? Не усложняйте написание и восприятие кода

Теперь по коду, откуда взялась именно ссылка на переменную $$task ?
3.91

3.91
3
23.05.2009 12:01:47
Я не писал, что использовать в switch POST переменную нельзя, проблема в другом: переменные $Task1, $Task2... и т.д. находятся в одной форме, а их надо передать в другую и выполнять соответственно что либо исходя из их значений, для этого запущен цикл, который присваивает переменной $task текстовые значения "Task1", "Task2" и т.д., а обращение switch ($$task) дожно по задумке проверять переменные $Task1, $Task2... и т.д.


Версия системы: Open SLAED 1.*
Версия PHP: PHP 5
Сервер: Локальный сервер
3.84

3.84
4
23.05.2009 15:56:54
Если чесно, то очень и очень смутно я представляю, что ты там задумал.

Попробуй использовать не ссылки, а массив, типо Task[1], Task[2] и т.д., просто я реально не соображу, какая входная форма и что получить на выходе нужно
3.91

3.91
5
23.05.2009 20:22:44
Было бы легче, если бы я сам задумывал, тогда бы по этому пути и не пошел наверное, а т.к. на данный момент я переписываю модуль под Open Slaed, то сильно не хочется менять все на свете, ну да ладно, пишу поподробнее:
есть форма в ней есть n штук вот таких вот объектов, которым в цикле присваиваются значения:

<input type=\"hidden\" name=\"Task$i\" value=\"$pgid\">


после выбора значений этих объектов жмем кнопочку submit и попадаем в другую форму, где надо узнать значения этих объектов, т.е. значения POST переменных $Task1, $Task2... и т.д. Соответственно запускаем цикл, т.е. смотри первый пост.

Так, как написано в первом посте, в Slaed 2.6 Lite работает, а в Open Slaed надо обращаться к POST переменным через $_POST, иначе он их не видит, а почему, для меня загадка, если честно.


Версия системы: Open SLAED 1.*
Версия PHP: PHP 5
Сервер: Локальный сервер
3.84

3.84
6
24.05.2009 19:23:07
используй массив
<input type='hidden' name='Task[]' value='$pgid'>
3.91

3.91
7
24.05.2009 23:57:34
вместо
switch ($$task) {

пиши
switch ($_POST[$task]) {


чего тут сложного-то?
4.03

4.03
8
25.05.2009 04:59:34
patriot, да насколько я понят, ему не это надо, хотя может ты и в точку попал :)
3.91

3.91
9
25.05.2009 07:41:44
patriot попал прямо в точку, огромное спасибо, что помогли. Понять не могу, что именно ТАК не додумался написать, вроде как разные варианты пробовал, но опыта мало поэтому и результат соответствующий :)


Версия системы: Open SLAED 1.*
Версия PHP: PHP 5
Сервер: Локальный сервер
3.84

3.84
10
25.05.2009 07:47:13
Блин, вот я лоханулся, рассуждения пошли неверным путем Смайл - 12
3.91

3.91
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь