|
|
|
| Есть гибрид из PHP и JS.
Форму можно посмотреть здесь - http://shop.perepetsky.ru/order.php?action=put&item=69
Так вот при удалении пункта из заказа выполняется функция JS:
<script>
function delProduct(form_item)
{
document.getElementById(form_item).value = 0;
document.forms['order_form'].action.value = 'recalc';
document.getElementById('order_form').submit();
}
</script>
|
При значении параметра action="recalc" выполняется следующий PHP код:
<?php
foreach($order as $id => $count)
{
if ($$id == 0)
unset($order[$id]);
else
{
if (is_numeric($$id))
$count = ceil(abs($$id));
else
$count = 1;
$order[$id] = $count;
}
}
?>
|
Так вот при попытке что-либо удалить, первая попытка ничего не дает. Функция JS срабатывает, потому что я вижу, как в поле text появляется 0, а после перезагрузки страницы остается старое значение поля. При следующем нажатии все срабатывает как надо, т.е. удаляется сразу. Причем независимо от того сколько в заказе позиций. Вообщем вывихнул мозг.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: kukuikar
(09.05.2007 в 00:25)
| | Попробуйте после того как выполнится нужная функция перезагрузить страницу... | |
|
|
|
|
|
|
|
для: DEM
(09.05.2007 в 01:11)
| |
document.getElementById('order_form').submit();
|
вот здесь и происходит перезагрузка страницы и отправка данных формы через POST.
присваиваем полю id = 0 и далее работает PHP.
Тут скорее всего в PHP ошибка, но я немогу понять где... | |
|
|
|
|
|
|
|
для: kukuikar
(09.05.2007 в 00:25)
| | if ($$id == 0) - не обязательно это может быть ошибкой, но здесь, видать, это так.
+ if (is_numeric($$id))
+ ceil(abs($$id)); | |
|
|
|
|
|
|
|
для: kasmanaft
(09.05.2007 в 07:59)
| | Упрощаем до невозможности:
<?php
foreach($order as $id => $count)
{
if ($$id == "0")
unset($order[$id]);
else
$order[$id] = $$id;
}
?>
|
Ничего не изменилось.
Есть второй ресурс, где похожая схема работает без проблем. Только там так:
<?php
foreach($request as $id => $prop)
{
if ($$id == "0")
unset($request[$id]);
else
{
@$c = $_POST['color'.$id];
if (is_numeric($$id))
$prop['qty'] = round_count($id,$$id);
else
$prop['qty'] = get_division($id);
$prop['color'] = $c;
$request[$id] = $prop;
}
}
?>
|
| |
|
|
|