Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Добавить элементы формы (https://javascript.ru/forum/dom-window/26228-dobavit-ehlementy-formy.html)

Katik 01.03.2012 16:37

Добавить элементы формы
 
Добрый день!
Помогите, пожалуйста. К сожалению знаний не хватает(((
Мне нужно добавить новый продукт на основе комплектующих в БД.
Форма для добавления состоит из выпадающих списков по разделам комплектующих. Списки заполняются автоматически значениями из БД. Для каждой детали можно указать количество.
Задача заключается в том что продукт может содержать 2 разные детали из одного раздела.
Например: 2 радиокарты (если они одинаковые, то просто указывается количество 2, если разные - то при нажатии по ссылке "Добавить" появляется аналогичный выпадающий список и поле для количества)
Вот к чему пришла я. Формирование выпадающих списков
$res=mysql_query("SELECT * FROM $tbl_catalog");
$i=0;
    while ($row=mysql_fetch_array($res))
    {
    	if ($row['id_parent']=='0')
    	{echo "<tr><td width=\"150\" valign=\"top\" class=\"field\">";
    	echo $row['name'];
    	$select[$i]=$row['id_catalog'];
    	$option[$i]=$row['id_catalog'];
    	echo "</td><td valign=\"top\" id=\"".$select[$i]."\"><div >";
    	echo "<select name=\"select".$select[$i]."\">";
    	echo "<option value=\"0\">----</option>";
        $sel=$row['id_catalog'];
    	$result=mysql_query("SELECT id_product, name FROM $tbl_position WHERE id_catalog='$sel'");
        while ($rows=mysql_fetch_array($result))
        {
        echo "<option value=\"".$rows['id_product']."\">".$rows['name']."</option>";}
        echo "</select>";
        echo "<input type=\"text\" value=\"1\" name=\"kol".$row['id_catalog']."\" size=\"1\" > шт.</div>";
        echo "&nbsp;<a href=\"#\" onclick=\"clone($sel)\"  >Добавить</a>";

        echo "</td>";
        echo "</tr>"; 
    	}$i++;
    }

Ссылка возле каждого выпадающего списка вызывает функцию clone()
function clone(idElem)
  {
  	var td=document.getElementById(idElem).firstChild;
  	var cln=td.cloneNode(true);
  	var sel=cln.getElementsByTagName('SELECT')[0];
  	var inp=cln.getElementsByTagName('INPUT')[0];
        sel.name="select...";
        inp.name="kol...";
  	document.getElementById(idElem).appendChild(cln); 	
  }

где новым элементам должны присвиться уникальные имена в соответствии с назначением.
Проблема в том, что все значения элементов формы в цикле заносятся в БД и новые выпадающие списки должны быть также занесены в массивы $select[] и $option[]
foreach ($select as $key => $value){	
    	$var = $_POST["select".$value];
        if ($var != 0){
        $kol = "kol".$option[$key];
        $kol = $_POST[$kol];
        for ($j=1; $j<=$kol; $j++){
        $q = mysql_query("INSERT INTO tbl_sborka VALUES (NULL,'$last','$var')");}}}

Можно ли как-то дополнить эти массивы с пощью JS???

Katik 02.03.2012 11:09

Спасибо, сама разобралась:)


Часовой пояс GMT +3, время: 10:17.