Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > форма и ассоциативный массив


Автор: Sniper 19.10.2007, 14:49
файл представляет собой следующее:
list.txt
Код

item1="127.0.0.1"
item2="127.0.0.2"
item3="127.0.0.3"
item4="127.0.0.4"


теперь код:
Код


<?php
    print '<form id="it" method="post" action="somescript.php">';
    $arritems = parse_ini_file('list.txt');
    $keys_items=array_keys($arritems);
    print '<select name="it">';
    foreach ($keys_items as $keys => $key) {
        print '<option value="'.$key.'">'.$key.'</option>';
    }
    print '</select>';            
    print '<input type="hidden" name="ip" value="'.$arritems[$key].'" />';
    print '<input type="submit" name="pos" value="Next" />';
?>

что я пытаюсь сделать.
Сгерерировалась страничка со списом items.
Выбираем какой-то item и нужно передать в somescript.php и ip адрес и имя item
Имя item вродебы передается, а вот ip адрес не соответствует item. 
Как исправить? smile 

Автор: dsCode 19.10.2007, 15:23
Sniper, 
Цитата(Sniper @  19.10.2007,  14:49 Найти цитируемый пост)
Имя item вродебы передается, а вот ip адрес не соответствует item. 

естественно. элемент it у Вас будет содержать правильное значение (выбранное из списка), а ip всегда содержит последнее значение ($arritems[$key]), т.к. находится за пределами цикла. Решением может быть: либо в событии onChange у select'a писать в hidden-поле значение ip (для этого его надо хранить в js-объекте где-то), либо (что проще) - делать <option value="'. $key . ';' . $value '"> (организация цикла должна быть другая, конечно - но тут сами, думаю, додумаетесь, какая). Тогда при обработке значение будет "item4;127.0.0.4" и останется сделать только сплит или эксплод.

Автор: Sniper 19.10.2007, 15:36
не понял как реализовать ниодин из вариантов  smile 

Автор: SelenIT 19.10.2007, 17:17
Sniper, а нужно ли вообще передавать отдельно ip-адрес? Почему бы в somescript.php также не считать его из файла?

И array_keys, имхо, лишний - ведь перебрать по ключам можно и исходный массив $arritems...

Автор: dsCode 20.10.2007, 20:09
Sniper, 

Код

$arritems = parse_ini_file('list.txt');
.....
print '<select name="it">';
foreach ($arritems as $itemNumber => $ip) {
  print '<option value="' . $itemNumber . ';' . $ip . '">' . $ip . '</option>';
}
print '</select>';
.....



В обработке:

Код

$ipData = explode(";", $_POST['id']);
print "Item #: " . $ipData[0] . ", IP: " . $ipData[1];

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)