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

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

1

1

1
22.05.2009 21:59:22

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

PHP
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
Сервер Локальный сервер
BugsTracker
BugsTracker
3.85

3.85

2
23.05.2009 09:59:26 23.05.2009 10:00:10

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

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

sam07
sam07
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
Сервер Локальный сервер
BugsTracker
BugsTracker
3.85

3.85

4
23.05.2009 15:56:54

Если чесно, то очень и очень смутно я представляю, что ты там задумал.

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

sam07
sam07
3.91

3.91

5
23.05.2009 20:22:44

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

PHP
<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
Сервер Локальный сервер
BugsTracker
BugsTracker
3.85

3.85

6
24.05.2009 19:23:07

используй массив

PHP
<input type='hidden' name='Task[]' value='$pgid'>
sam07
sam07
3.91

3.91

7
24.05.2009 23:57:34

вместо switch ($$task) {
пиши switch ($_POST[$task]) {

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

patriot
patriot
4.03

4.03

8
25.05.2009 04:59:34

patriot, да насколько я понят, ему не это надо, хотя может ты и в точку попал :)

sam07
sam07
3.91

3.91

9
25.05.2009 07:41:44

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

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

3.85

10
25.05.2009 07:47:13

Блин, вот я лоханулся, рассуждения пошли неверным путем 😳

sam07
sam07
3.91

3.91

Открыть Ответить
Хотите опробовать SLAED CMS в действии?
Идеи и предложения
Обратная связь
Подтверждение

Поделиться
QR-код

Предварительный просмотр