Эта тема на forum.dklab.ru


OSKiller: Проблемы с передачей данных из динамически генерируемой формы
Имеется следующий PHP-код:

<?php
Header("Expires: Mon, 26 Jul 1997 01:00:00 GMT");
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>
<title>Администрирование</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link rel="stylesheet" type="text/css" href='/catalog/include_design/css/style.css'>

<script type="text/javascript">
_editor_url = "htmlarea/";
_editor_lang = "ru";
</script>


<script type="text/javascript" src="htmlarea/htmlarea.js"> </script>
<script type="text/javascript">
function initEd() {
ed = new HTMLArea("ta");
ed.generate();
}

var config = new HTMLArea.Config(); // create a new configuration object
// having all the default values
config.width = '500px';
config.height = '200px';

var countOfFields=1; // Текущее число полей
var curFieldNameId = 1; // Уникальное значение для атрибута name
function deleteField(a) {
// Получаем доступ к ДИВу, содержащему поле
var contDiv = a.parentNode;
// Удаляем этот ДИВ из DOM-дерева
contDiv.parentNode.removeChild(contDiv);
// Уменьшаем значение текущего числа полей
countOfFields--;
// Возвращаем false, чтобы не было перехода по сслыке
return false;
}
function addField() {
// Увеличиваем текущее значение числа полей
countOfFields++;
// Увеличиваем ID
curFieldNameId++;
// Создаем элемент ДИВ
var div = document.createElement("span");
// Добавляем HTML-контент с пом. свойства innerHTML
div.innerHTML = "<br><select name=\"w_shine[]\" ><option value=\"6,5\" >6,5<option value=\"7\" >7<option value=\"7,5\" >7,5<option value=\"12\" >12<option value=\"27\" >27<option value=\"28\" >28<option value=\"29\" >29<option value=\"31\" >31<option value=\"32\" >32<option value=\"33\" >33<option value=\"34\" >34<option value=\"35\" >35<option value=\"36\" >36<option value=\"37\" >37<option value=\"38\" >38<option value=\"38,5\" >38,5<option value=\"39,5\" >39,5<option value=\"135\" >135<option value=\"145\" >145<option value=\"155\" >155<option value=\"165\" >165<option value=\"175\" >175<option value=\"185\" >185<option value=\"195\" >195<option value=\"205\" >205<option value=\"215\" >215<option value=\"225\" >225<option value=\"235\" >235<option value=\"245\" >245<option value=\"255\" >255<option value=\"265\" >265<option value=\"275\" >275<option value=\"285\" >285<option value=\"295\" >295</select> / <select name=\"h_shine[]\" ><option value=\"7,5\" >7,5<option value=\"8,5\" >8,5<option value=\"9,5\" >9,5<option value=\"10,5\" >10,5<option value=\"11\" >11<option value=\"11,5\" >11,5<option value=\"12,5\" >12,5<option value=\"13\" >13<option value=\"13,5\" >13,5<option value=\"14\" >14<option value=\"14,5\" >14,5<option value=\"15\" >15<option value=\"15,5\" >15,5<option value=\"16\" >16<option value=\"18\" >18<option value=\"25\" >25<option value=\"30\" >30<option value=\"35\" >35<option value=\"40\" >40<option value=\"45\" >45<option value=\"50\" >50<option value=\"55\" >55<option value=\"60\" >60<option value=\"65\" >65<option value=\"70\" >70<option value=\"75\" >75<option value=\"80\" >80<option value=\"85\" >85<option value=\"FULL\" >FULL</select> R <select name=\"r_disk[]\" ><option value=\"12\" >12<option value=\"13\" >13<option value=\"14\" >14<option value=\"15\" >15<option value=\"16\" >16<option value=\"16,5\" >16,5<option value=\"17\" >17<option value=\"18\" >18<option value=\"19\" >19<option value=\"20\" >20<option value=\"21\" >21<option value=\"22\" >22<option value=\"23\" >23<option value=\"24\" >24<option value=\"28\" >28</select> <a onclick=\"return deleteField(this)\" href=\"#\">[X]</a>";
// Добавляем новый узел в конец списка полей
document.getElementById("parentId").appendChild(div);
// Возвращаем false, чтобы не было перехода по сслыке
return false;
}
</script>

</head>

<body onLoad='initEd()'>
<?php
var_dump($_POST);
?>
<div id="adm_wrap">
<div id="adm_head">
<div class="adm_name">Интернет магазин шин и дисков / панель администратора</div>

<a href='../index.php' class="adm_goto_site">Перейти в магазин</a> </div>
<div class="adm_bg_1">
<div class="adm_bg_2">
<div class="adm_bg_3">



<ul class="adm_menu">
<li class="menu1 active"><a href="#">Администрирование</a>

<div class="submenu">
<ul>
<li><a href='index.php'>Главная</a></li>
<li><a href='option.php'>Настройки</a></li>
<li><a href='change_pass.php'>Смена пароля и логина</a></li>
<li><a href='user_list.php'>Список пользователей</a></li>
</ul>

</div>
</li>
<li class="menu2"><a href="#">Товары</a>
<div class="submenu">
<ul>
<li><a href='catalog.php?add=1'>Категории дополнительных товаров</a></li>
<li><a href='item.php?add=1'>Добавить товары</a></li>

<li><a href='add_csv.php'>Добавить товары через файл</a></li>
<li><a href='skidka.php'>Настройка скидок</a></li>
</ul>
</div>
</li>
<li class="menu4"><a href="#">Марки авто</a>
<div class="submenu">

<ul>
<li><a href='table_brand.php'>Настройка списка производителей</a></li>
<li><a href='table_marka.php'>Работа с марками и моделями</a></li>
<li><a href='model_shina.php'>Связь моделей и ШИН</a></li>
<li><a href='model_disk.php'>Связь моделей и ДИСКОВ</a></li>
</ul>
</div>

</li>
<li class="menu3"><a href="#">Заказы</a>
<div class="submenu">
<ul>
<li><a href='zakaz_list.php'>Неоплаченные заказы</a></li>
<li><a href='zakaz_list_old.php'>Оплаченные заказы</a></li>
</ul>

</div>
</li>
<li class="menu5"><a href="#">Новости</a>
<div class="submenu">
<ul>
<li><a href='catalog_art.php?add=1'>Разделы новостей</a></li>

<li><a href='item_art.php?add=1'>Добавить статью</a></li>

<li><a href='item_list.php'>Редактировать статьи</a></li>
</ul>
</div>
</li>
</ul>




<div class="adm_left_menu">
<h3>Список разделов</h3>


<h4>Добавление нового товара. (Шины)</h4>
<ul>
<li><a href='?id_type=1&add=1'>Шины</a></li>
<li><a href='?id_type=2&add=1'>Диски</a></li>
<li><a href='?id_type=3&add=1'>Остальные виды товаров</a></li>
</ul>
</div>
<div class="adm_right_block">



<table border="0" align="center">
<form method="POST" enctype="multipart/form-data">


<td>Наименование:</td>
<td><input type="text" size="35" name='name' value='' /></td></tr>

<tr><td>Производитель:</td>
<td>

<select name="id_brand">
<option value="0" />-- Выберите производителя --
<option value="12" >BF Goodrich
<option value="8" >Bridgestone

<option value="3" >Dunlop
<option value="15" >Federal
<option value="14" >Kleber
<option value="4" >Kumho
<option value="17" >Michelin
<option value="5" >Nokian
<option value="6" >Nordman
<option value="16" >Tigar
<option value="7" >Yokohama
</select>
</td></tr>

<tr><td>Цена:</td>
<td><input type="text" size="35" name='price_rosn' value='' /></td></tr>

<tr ><td colspan=2 align=center>Краткое описание:

<br>Не должно превышать <b>255</b> символов<br>
<textarea cols="45" rows="10" name="opis_kratko" ></textarea>
</td></tr>

<tr ><td colspan=2 align=center>Полное описание:
<br>Не должно превышать <b>1000 </b> символов<br>
<textarea cols="45" rows="10" name="opis" ></textarea>

</td></tr>

<tr><td>Размер:</td>
<td>
<span id="parentId"><span><select name="w_shine[]" >
<option value="6,5" >6,5
<option value="7" >7
<option value="7,5" >7,5
<option value="12" >12
<option value="27" >27
<option value="28" >28
<option value="29" >29
<option value="31" >31
<option value="32" >32
<option value="33" >33
<option value="34" >34

<option value="35" >35
<option value="36" >36
<option value="37" >37
<option value="38" >38
<option value="38,5" >38,5
<option value="39,5" >39,5
<option value="135" >135
<option value="145" >145
<option value="155" >155
<option value="165" >165
<option value="175" >175
<option value="185" >185
<option value="195" >195
<option value="205" >205
<option value="215" >215
<option value="225" >225
<option value="235" >235

<option value="245" >245
<option value="255" >255
<option value="265" >265
<option value="275" >275
<option value="285" >285
<option value="295" >295
</select> /
<select name="h_shine[]" >
<option value="7,5" >7,5
<option value="8,5" >8,5
<option value="9,5" >9,5
<option value="10,5" >10,5
<option value="11" >11
<option value="11,5" >11,5
<option value="12,5" >12,5
<option value="13" >13

<option value="13,5" >13,5
<option value="14" >14
<option value="14,5" >14,5
<option value="15" >15
<option value="15,5" >15,5
<option value="16" >16
<option value="18" >18
<option value="25" >25
<option value="30" >30
<option value="35" >35
<option value="40" >40
<option value="45" >45
<option value="50" >50
<option value="55" >55
<option value="60" >60
<option value="65" >65
<option value="70" >70

<option value="75" >75
<option value="80" >80
<option value="85" >85
<option value="FULL" >FULL
</select>
R
<select name="r_disk[]" >
<option value="12" >12
<option value="13" >13
<option value="14" >14
<option value="15" >15
<option value="16" >16
<option value="16,5" >16,5
<option value="17" >17
<option value="18" >18
<option value="19" >19
<option value="20" >20

<option value="21" >21
<option value="22" >22
<option value="23" >23
<option value="24" >24
<option value="28" >28
</select>
</span></span><br><a onclick="return addField()" href="#">Добавить размер</a></td></tr>

<tr><td>Сезон:</td>
<td>
<select name="sezon" >
<option value="1" >зима
<option value="2" >лето
</select>
</td></tr>

<tr><td>Индекс скорости:</td>
<td><input type="text" size="35" name='index_speed' value='' /></td></tr>

<tr><td>Индекс нагрузки:</td>
<td><input type="text" size="3" maxlength="3" name='nagr' value='' /></td></tr>

<tr><td>Шипованные:</td>
<td><input type="checkbox" name="ship_shine" value="1"></td></tr>


<tr><td>В наличии:</td>
<td><input type="checkbox" name="nal" value="1" checked></td></tr>

</table>
<p>Загрузить фото: <input type="file" name='logo' />

<p><input type="submit" name="button" value = Добавить! />
</form>


</div>
<div class="clear"></div>
</div>
</div>
</div>
</body>
</html>

Независимо от количества полей "w_shine[]", "h_shine[]" и "r_disk[]", соответствующие подмассивы $_POST содержат по одному элементу... В чём проблема, подскажите, пожалуйста...
bæv:
Независимо от количества полей "w_shine[]", "h_shine[]" и "r_disk[]", соответствующие подмассивы $_POST содержат по одному элементу...
— э, а сколько должно быть по-Вашему?
OSKiller:
— э, а сколько должно быть по-Вашему?
Столько, сколько полей формы с такими именами я сгенерирую...
Михаил Гутентог:
Разные поля формы должны иметь разные имена. Если сделать много полей с одинаковым именем "w_shine[]", в POST попадёт только одно из них. Зачем у вас там пустые квадратные скобки? Напишите уже в них что-нибудь. Например, просто пронумеруйте: "w_shine[1]", "w_shine[2]", "w_shine[3]"...
bæv:
Ветка выделена в отдельную тему «мусор»,
расположенную в форуме Мусоропровод (24 Сентября 2011, 18:58).

Эта тема на forum.dklab.ru