Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Гибрид PHP и JS срабатвает со 2-ой попытки
 
 автор: kukuikar   (09.05.2007 в 00:25)   письмо автору
 
 

Есть гибрид из 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, а после перезагрузки страницы остается старое значение поля. При следующем нажатии все срабатывает как надо, т.е. удаляется сразу. Причем независимо от того сколько в заказе позиций. Вообщем вывихнул мозг.

Заранее спасибо.

   
 
 автор: DEM   (09.05.2007 в 01:11)   письмо автору
 
   для: kukuikar   (09.05.2007 в 00:25)
 

Попробуйте после того как выполнится нужная функция перезагрузить страницу...

   
 
 автор: kukuikar   (09.05.2007 в 01:14)   письмо автору
 
   для: DEM   (09.05.2007 в 01:11)
 


document.getElementById('order_form').submit();


вот здесь и происходит перезагрузка страницы и отправка данных формы через POST.
присваиваем полю id = 0 и далее работает PHP.
Тут скорее всего в PHP ошибка, но я немогу понять где...

   
 
 автор: kasmanaft   (09.05.2007 в 07:59)   письмо автору
 
   для: kukuikar   (09.05.2007 в 00:25)
 

if ($$id == 0) - не обязательно это может быть ошибкой, но здесь, видать, это так.
+ if (is_numeric($$id))
+ ceil(abs($$id));

   
 
 автор: kukuikar   (09.05.2007 в 08:44)   письмо автору
 
   для: 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;
        }
    }
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования