Вход

Просмотр полной версии : Работа с "динамической" формой.


lolka84
26.10.2010, 09:05
Добрый день, незнаю, насколько правильно обозвал в сабже проблему, суть в следущем:
Есть форма, куда подгружаются данные из бд. Фишка в том, что эти данные каждый раз разные, соответственно имена и id input'ов тоже каждый раз разные.
Что бы было понятно:
<?php
$queryonerazd = mysql_query("SELECT `id`,`podrazdel`,`devnamesm`,`defkol`,`stoim` FROM `smdevice` WHERE `razdel` = '1' AND `notuse` = '0' AND `smuse` = '1' ORDER BY `podrazdel` ASC") or die(mysql_error());
if (mysql_num_rows($queryonerazd) > 0) {
while ($arronerazd = mysql_fetch_assoc($queryonerazd)) {
?>

<tr>
<td>&nbsp;1.<?php echo $arronerazd['podrazdel']; ?><input type='text' name='<?php echo $arronerazd['id']; ?>' value='<?php echo $arronerazd['id']; ?>' style='display:none' /></td>
<td>&nbsp;<?php echo $arronerazd['devnamesm']; ?></td>
<td><input type='text' name='defcol<?php echo $arronerazd['id']; ?>' value='<?php echo $arronerazd['defkol']; ?>' /></td>
<td><input type='text' name='cena<?php echo $arronerazd['id']; ?>' value='<?php echo $arronerazd['stoim']; ?>' /></td>
<td><input type='text' name='summye<?php echo $arronerazd['id']; ?>' value='' /></td>
<td><input type='text' name='summrur<?php echo $arronerazd['id']; ?>' value='' /></td>
<td><input type='checkbox' name='arn<?php echo $arronerazd['id']; ?>' value='1' /></td>
</tr>


<?php
}
}
mysql_free_result($queryonerazd);
?>

В результате получается чтото типа этого:

<tr>
<td>&nbsp;1.1<input type='text' name='3' value='3' style='display:none' /></td>
<td>&nbsp;Блок РЕКС 2В</td>
<td><input type='text' name='defcol3' value='' /></td>
<td><input type='text' name='cena3' value='300.00' /></td>
<td><input type='text' name='summye3' value='' /></td>
<td><input type='text' name='summrur3' value='' /></td>
<td><input type='checkbox' name='arn3' value='1' /></td>
</tr>

Т.е. проще говоря, к каждому имени поля добавляется уникальный ID записи в БД, разделов <tr></tr> может быть сколько угодно много или мало, не суть, суть в том, что каждый раз их разное кол-во.
Нужно следущее: у нас есть колонка с ценой и колонка с кол-вом (cena и defcol соотвтественно). В колонке кол-ва пишем число, которое умножается на цену и в колонках summye и summrur выводятся произведения кол-ва на сумму.
Вроде все просто, если б имена были постоянными, выдернуть значение поля по id никаких проблем не составляет, а как быть в этом случае ?
Единственная мысль, которая летает в голове, это выдернуть число (id) из 1го скрытого поля <input type='text' name='3' value='3' style='display:none' /> и далее уже с ним работать, но как это сделать ?
Посоветуйте алгоритм, пожалуйста.

subzey
26.10.2010, 11:30
Коль скоро цена и количество находятся в одной строке, Вы можете, отталкиваясь от инпута, найти tr-родитель, а в tr найти инпут с нужным именем.

lolka84
26.10.2010, 11:56
найти tr-родитель, а в tr найти инпут с нужным именем.
Можно чуть подробнее, ибо я новичек в js и просто вот так вот не совсем понимаю, как "найти tr-родитель" :)

ksa
26.10.2010, 13:43
Можно чуть подробнее
Что-то типа такого...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function Calc(Obj) {
var o=Obj.parentElement
o=o.parentElement
var o1=o.cells[0]
var o2=o.cells[1]
var o3=o.cells[2]
o1=o1.getElementsByTagName('input')[0]
o2=o2.getElementsByTagName('input')[0]
o3=o3.getElementsByTagName('input')[0]
o3.value=o1.value*o2.value
}
</script>
</head>
<body>
<table>
<tr>
<td>
<input type='text' onchange='Calc(this)' />
</td>
<td>
<input type='text' onchange='Calc(this)' />
</td>
<td>
<input type='text' />
</td>
</tr>
</table>
</body>
</html>

lolka84
27.10.2010, 08:43
Что-то типа такого...


Благодарю всяко, подогнал под себя - работает как часы :)