Проблема с удалением шагов в корзине

#
Re: Re: Проблема с удалением шагов в корзине
wanderersc писал(а):
Самое простое — добавить проверки на JavaScript в клиентском разделе.

Если не ошибаюсь Борис? Да? Вы настоящий консультант, и дан правильный ответ и толку мало Не обижайтесь, я по доброму
#
Re: Проблема с удалением шагов в корзине
wanderersc писал(а):
Не пойму где именно.
И можно хоть какой-то пример кода.

Пожалуйста...

Редактирование типовой динамической страницы -> Интернет-магазин -> Интернет-магазин корзина
В КОДЕ СТРАНИЦЫ перед строчкой
Цитата:
if (empty($error) && ($site_users_id > 0 || $site_users_id === false))


Нужно добавить/заменить код
Цитата:
/* Если отключен модуль пользователей сайта */
if (isset($_POST['step_1_1a']))
{
if (strlen(to_str($_POST['site_users_address'])) < 1)
   {
      $error = 'Введите адрес доставки!';
   }

if (!preg_match('/\([0-9]{3}\)\s[0-9]{3}\-[0-9]{2}\-[0-9]{2}/', $_REQUEST['site_users_phone']))
{
                $error = 'Введите номер телефона в формате (КОД ГОРОДА) ХХХ-ХХ-ХХ!';
}

if (strlen(to_str($_POST['site_users_phone'])) < 1)
   {
      $error = 'Введите телефон!';
   }

if(!preg_match('/^[a-z0-9](?:[-._a-z]+[a-z0-9])?@[a-z0-9][-_a-z]+[a-z0-9](?:\.[a-z0-9][-_a-z0-9]+[a-z0-9])?\.[a-z]{2,6}$/i',$_POST['site_users_email']))
{
    $error = 'Введите кооректный E-Mail!';
}

if (strlen(to_str($_POST['site_users_email'])) < 1)
   {
      $error = 'Введите E-Mail!';
   }

if (strlen(to_str($_POST['site_users_name'])) < 1)
   {
      $error = 'Введите имя!';
        }
}



В настройках типовой динамической страницы этот блок

Цитата:
/* Необходимо перенести товары из кукисов в сессию и очистить кукисы */
if ((isset($_POST['step_4']) || isset($_POST['step_1_1a'])) && !class_exists("SiteUsers")
{


   /* Читаем массив из кукисов */
   if (!empty($_COOKIE['CART']))
   {
      $session_cart = array();
      $postpone_items = array();

      $cart_from_cookies = $shop->GetCookieCart();

      $items = to_array($cart_from_cookies[$shop_id]);

      foreach ($items as $key => $value)
      {
         if ($value['shop_cart_flag_postpone'])
         {
            /* Оставляем товар в корзине кукисов */
            $postpone_items[$key] = $value;
         }
         else
         {
            /* Добавляем в корзину сессии */
            $session_cart[$key] = $value;
         }
      }
      
      /* Добавляем данные в сессию */
      $_SESSION['CART'][$shop_id] = $session_cart;

      /* Если массив с отложенными товарами не пуст - сохраняем его в кукисы */
         if (count($postpone_items) > 0 && isset($_POST['step_1_1a']))
                /*if (count($postpone_items) > 0 && isset($_POST['step_4']))*/
      {
         $cart_from_cookies[$shop_id] = $postpone_items;
      }
                   elseif(isset($_POST['step_1_1a']))
      /*elseif(isset($_POST['step_4']))*/
      {
         /* Удалям целиком кукисы карзины для данного магазина */
         unset($cart_from_cookies[$shop_id]);
      }

      /* Сохраняем данные */
      $shop->SetCookieCart($cart_from_cookies, time() + 31536000, '/');
   }
}


Заменить на этот блок

Цитата:
/************ Проверки*************/

if (isset($_POST['step_1_1a']))
{
if (strlen(to_str($_POST['site_users_address'])) < 1)
   {
      $error = 'Введите адрес доставки!';
   }

if (!preg_match('/\([0-9]{3}\)\s[0-9]{3}\-[0-9]{2}\-[0-9]{2}/', $_REQUEST['site_users_phone']))
{
                $error = 'Введите номер телефона в формате (КОД ГОРОДА) ХХХ-ХХ-ХХ!';
}

if (strlen(to_str($_POST['site_users_phone'])) < 1)
   {
      $error = 'Введите телефон!';
   }

if(!preg_match('/^[a-z0-9](?:[-._a-z]+[a-z0-9])?@[a-z0-9][-_a-z]+[a-z0-9](?:\.[a-z0-9][-_a-z0-9]+[a-z0-9])?\.[a-z]{2,6}$/i',$_POST['site_users_email']))
{
    $error = 'Введите кооректный E-Mail!';
}

if (strlen(to_str($_POST['site_users_email'])) < 1)
   {
      $error = 'Введите E-Mail!';
   }

if (strlen(to_str($_POST['site_users_name'])) < 1)
   {
      $error = 'Введите имя!';
        }
}


/*********Добавлено условие на $error***********/

if (empty($error) && ($site_users_id > 0 || $site_users_id === false))
{
/* Необходимо перенести товары из кукисов в сессию и очистить кукисы */
if ((isset($_POST['step_4']) || isset($_POST['step_1_1a'])) && !class_exists("SiteUsers")
{


   /* Читаем массив из кукисов */
   if (!empty($_COOKIE['CART']))
   {
      $session_cart = array();
      $postpone_items = array();

      $cart_from_cookies = $shop->GetCookieCart();

      $items = to_array($cart_from_cookies[$shop_id]);

      foreach ($items as $key => $value)
      {
         if ($value['shop_cart_flag_postpone'])
         {
            /* Оставляем товар в корзине кукисов */
            $postpone_items[$key] = $value;
         }
         else
         {
            /* Добавляем в корзину сессии */
            $session_cart[$key] = $value;
         }
      }
      
      /* Добавляем данные в сессию */
      $_SESSION['CART'][$shop_id] = $session_cart;

      /* Если массив с отложенными товарами не пуст - сохраняем его в кукисы */
         if (count($postpone_items) > 0 && isset($_POST['step_1_1a']))
                /*if (count($postpone_items) > 0 && isset($_POST['step_4']))*/
      {
         $cart_from_cookies[$shop_id] = $postpone_items;
      }
                   elseif(isset($_POST['step_1_1a']))
      /*elseif(isset($_POST['step_4']))*/
      {
         /* Удалям целиком кукисы карзины для данного магазина */
         unset($cart_from_cookies[$shop_id]);
      }

      /* Сохраняем данные */
      $shop->SetCookieCart($cart_from_cookies, time() + 31536000, '/');
   }
}

}


Должно заработать
Модератор
#
Re: Проблема с удалением шагов в корзине
DStorm,
Флудим помаленьку? Лучше за wanderersc выполните работу и покажите пример проверки на JavaScript.
Модератор
#
Re: Проблема с удалением шагов в корзине
DStorm,
О, замечательный пример! Только там местами в коде кавычки-елочки нужно поправить на просто кавычки.
#
Re: Проблема с удалением шагов в корзине
HostCMS писал(а):
Флудим помаленьку? Лучше за wanderersc выполните работу и покажите пример проверки на JavaScript.

Сказано - сделано
#
Re: Проблема с удалением шагов в корзине
Выдернул из своих скриптов, у меня работает
Модератор
#
Re: Проблема с удалением шагов в корзине
DStorm,
Могу только похвалить
Еще пожелание - не использовать явно $_POST, $_GET, $_REQUEST, т.к. они могут не прийти или прийти не в том виде. Всегда приводить к ожидаемому типу, например, функцией to_str() (описание есть в руководстве по разработке модулей).
#
Re: Проблема с удалением шагов в корзине
Наталью нужно хвалить, она сильно помогла в отладке этого кода

Боря, я не программист, я за основу брал вашу проверку на Имя + могучий интернет
Если Вы покажете, как более корректно доработать этот код без использования $_POST, $_REQUEST буду очень признателен.
Спасибо.
#
Re: Проблема с удалением шагов в корзине
подскажите пожалуйста как из корзины удалить это
(Данные о заказчике)а просто чтоб было оформить заказ
#
Re: Проблема с удалением шагов в корзине
Нашел еще одно решение как убрать все шаги кроме первого, может кому будет интересно
В форме «данные о заказчике» передаем:

<input name="step_4" value="Оформить заказ" type="submit" style="font-weight: bold"/>

В типовой динамической в четвертом шаге пишем:

elseif (isset($_POST['step_4'])) {
$_POST['system_of_pay_id'] = 1;
$_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
$_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
$_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);

...
Авторизация