Получение значенной переменной по маске имени

  • Автор темы constructor
  • Дата начала

constructor

Guest
Получение значения переменной по маске имени

Подскажите пожалуйста, ламерский вопрос, но не могу решить его самостоятельно.

Суть в том, что передаю переменные постом из формы, но имена переменных создаются динамически, так вот каким образом я могу получить значение переменной ?

посылаю:
Код:
<input type="text" 
 name="fr_name_img_<?= $row['id_img'];?>" 
 value="<?= $row['name_img'];?>">
<? printf ("<label><input type=\"checkbox\" 
                 name=\"select_item[]\" 
                 value=\"%d\"> </label>",$row['id_img']);?>
то есть переменая имеет имя: $fr_name_img_100
где числовой префикс зависит от данных перемнной $row['id_img']
Саму $row['id_img'], передаю в значение чекбокса:
Да, помимо fr_name_img_ХХХ передается еше 4 переменных.

Далее нужно обработать эту переменную и выудить соответственно ее значение. Делаю так:
Код:
 $count = count($select_item); 
     for($i=0; $i<$count; $i++) 
     {
      $id_edit=$select_item[$i]; 

      $fr_name_img="fr_name_img_$id_edit";
       eval ("\$fr_name_img = \$fr_name_img"); 
    //обработка данных...
     }
В итоге $fr_name_img=не значению, а ее имени :( Как же, черт подери, получить само значение?
Получаю при $row['id_img']=100
$fr_name_img=fr_name_img_100

При соблюдении условия получения данной переменной.
Да, $select_item[$i] передаются нормально.

Подскажите, как я могу получить значение переменной с "генеренным" именем?
Спасибо.
 

Nime

Guest
Самый правильный способ писать так:

<input type="text"
name="fr_name_img[<?= $row['id_img'];?>]"

и потом написав, $fr_name_img=$_POST['fr_name_img'], ты получишь массив со значениями

а вообще если я правильно понял, что ты делаешь, то
eval ("\$fr_name_img = \$\$fr_name_img");
 

constructor

Guest
Originally posted by Nime
Самый правильный способ писать так:

<input type="text"
name="fr_name_img[<?= $row['id_img'];?>]"

и потом написав, $fr_name_img=$_POST['fr_name_img'], ты получишь массив со значениями

а вообще если я правильно понял, что ты делаешь, то
eval ("\$fr_name_img = \$\$fr_name_img");
Хм.. видимо надо так. передавая id как порядковый номер массива, но тогда соответственно и для чекбоксов нужно делать аналогично :)

А как же тогда потом их перебирать?
С тем что сейчас все просто: for() и по порядку до count(кол-во элементов), а при том что поляковые номера элемента массива будут не послеовательны? Как мне получить доступ ко всем, если будт передавться поля больщше 1го?

Далее, с eval (eval ("\$fr_name_img = \$\$fr_name_img"))... Также переменная $fr_name_img получает не значение ее ,а имя :(

-~{}~ 03.04.04 13:36:

Nime извини ,передается, збыл поставиь ";" в евале :)
eval ("\$fr_name_img = \$\$fr_name_img;")

Ясно, принцип передачи значения понял, а как перебором элементов массива, содержаещего элементы в рзброс?
То есть:
array(
1='111',
5='222',
8='333'
)

то есь не по прядку, как их все подяд обработать?

Nime,еще раз спасибо тебе
 

constructor

Guest
Originally posted by Nime
[m]foreach[/m] :)
:) точно, спасибо.
но уже и в первом варианте работает. с кривыми именами :)
fr_name_img_$id_edit

и через eval.

или это слишком криво?
 

Nime

Guest
это криво - лучше перепиши

да и в будущем пригодится :)
 
Сверху