Если:
Пользователь в первом блоке пишет - 450
Во втором - 260
В третье - 500
то это означает выбор нескольких из множества, и значит форма должна быть одна, а не несколько с одним полем в каждой. Разве можно в нескольких формах написать и отправить их одновременно?
То есть РНР сценарий совсем не ту html-структуру выдает. Таблица должна быть вложена в форму, ячейки таблицы должны содержать поля формы (а данном случае три), кнопка "Добавить в смету" должна быть одна.
Имя поля формы должно отражать принадлежность поля к массиву, то есть:
<input type="text" name="fact_price[id_pc_price]">
Атрибут id полям формы совсем не нужен, имя
"in_w" у кнопки submit нужно только в том случае, если price.php кроме POST данных этой формы принимает и обрабатывает еще и другие POST данные и их селекция включает и проверку этого имени. Иначе имя совсем не нужно, и кнопку на сервер отправлять не надо.
Заносить в сессию или в куки, а только потом в базу... Не знаю, все зависит от задач, может и надо, а может и пустое занятие, мне трудно об этом судить не зная многого.
Как бы ни было, сервер получит массив вида:
Код:
|
fact_price (
[25] => 450
[123] => 260
[46] => 500
) |
То есть не 1, 2, 3, а идентификаторы услуг будут его ключами. Остается проверить и выбрать те услуги, которые заполнены:
if($fact = array_diff(array_map('intval', $_POST['fact_price']), array(0))) {
//действия с данным, например сумма на сервере, если нужна:
$sum = array_sum($fact);
//требуется проверка и ключей полученного массива $fact,
//если только запись не подготовленными запросами PDO
} else {
//ничего не выбрано
}
То есть на серверной стороне все просто и удобно, на клиентской тоже нет сложностей:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(function() {
var o = $('#price').find('input[name^="fact"]').keyup(function() {
var m = 0; this.value = this.value.replace(/\D/, '');
for(var i=0, k=o.length; i<k; i++) m += o[i].value * 1;
$('#total').text(m)
})
});
</script>
</head>
<body>
<form id="price">
<input name="fact_price[25]" /> <input name="fact_price[123]" /> <input name="fact_price[46]" />
<input type="submit" />
</form>
<span id="total"></span>
</body>
</html>
Примечание: пример подразумевает, что форма присутствует на странице, иначе нужно не так назначать обработчик события полей.