Перейти к содержанию
Официальный форум поддержки Simpla

Ajax: сохранение цены и количества из админки


Рекомендуемые сообщения

Проблема была лишь в том, что я передавал массив. Переписал функцию update_stock

 

    public function update_stock($id, $stock)
    {
        if($stock == 'символ_бесконечности' || $stock == '') $stock = null;
        $query = $this->db->placehold("UPDATE __variants SET `stock`=? , `stockchanged` = NOW()  WHERE id=? LIMIT 1", $stock, intval($id));
        $this->db->query($query);
        return $id;
    }
 

 

Теперь работает нормально.

Ссылка на сообщение
Поделиться на другие сайты

Вы хотите сказать, идея нормальная, реализация плохая? 

 

Я не знаю, какова Ваша реализация. Если опишете свою реализацию точно и полностью, а не отдельными обрывками, как сейчас, тогда можно будет обсуждать по существу.

Ссылка на сообщение
Поделиться на другие сайты

Интересно, почему запрос 

 

UPDATE s_variants SET `stock`='77' , `stockchanged` = NOW()  WHERE id=6128  AND (SELECT stock FROM s_variants WHERE id=6128 LIMIT 1) < '77' LIMIT 1 

не хочет работать? 

 

#1093 - Не допускается указание таблицы 's_variants' в списке таблиц FROM для внесения в нее изменений
Ссылка на сообщение
Поделиться на другие сайты

Потому  что такие правила у MySQL.

Может, надо попроще, например:

UPDATE s_variants SET `stock`='77' , `stockchanged` = NOW()  WHERE id=6128  AND stock< '77'

Ссылка на сообщение
Поделиться на другие сайты

Потому  что такие правила у MySQL.

Может, надо попроще, например:

UPDATE s_variants SET `stock`='77' , `stockchanged` = NOW()  WHERE id=6128  AND stock< '77'

Мне нужно обновить поле stock, а stockchanged обновлять только при условии, когда stock<77. Это возможно сделать одним запросом? Или только два UPDATE-запроса?

Ссылка на сообщение
Поделиться на другие сайты

UPDATE s_variants SET `stock`='77' , `stockchanged` = if(stock<77, NOW(), stockchanged)  WHERE id=6128  AND stock< '77'

Огромное спасибо. Хоть буду знать на практике, как пишутся условия в SQL. Вот только последнее 

 

AND stock< '77'
 

явно лишнее.

Ссылка на сообщение
Поделиться на другие сайты

Я не знаю, какова Ваша реализация. Если опишете свою реализацию точно и полностью, а не отдельными обрывками, как сейчас, тогда можно будет обсуждать по существу.

Для начала опишу задачу. Склад (в смысле консультация, бронь, приём заказов) работает 24/7/365, но на отгрузку - только в определённое время.

Звонит покупатель, спрашивает, есть ли такой-то товар в наличии, а принимающий звонок - он человек: он может есть, ехать в машине, быть на месте у какого-либо покупателя и т.д., а ответить должен здесь и сейчас.

Вопросы стандартные:

1. есть, нету?

2. А сколько есть?

3. Сколько стоит?

4. Забронируйте до понедельника.

И для этого есть склад - буклет с наличием, в котором чёркают, комментируют и т.д, и есть прайс - ещё больший буклет. Также есть отдельный список скидок для каждого клиента, а есть список того, что заказано на фабрике, но пока не поступило на склад, но это уже детали.

Вот чтобы в любой момент я мог зайти, допустим, с планшета по известному только мне адресу и выполнить пункты 1, 2, 3, 4, я и пытаюсь реализовать то, что описано с самого начала топика.

Для начала была взята стандартная админка Симплы, откуда были выкинуты ненужные модули, скрипты (а их там на мегабайт) и оставлен только функционал редактирования количества.

Далее - сохранение количества без перезагрузки страницы.

Далее - дата изменения количества.

Комментарий (например, Иванов забронировал 2 штуки до понедельника)

Цена

Ну и при изменении количества в плюс, меняется "дата получения", в минус - "последняя продажа".

Пока вот так.

Ссылка на сообщение
Поделиться на другие сайты
UPDATE s_variants SET `stock`='2', `stockchanged` = if(stock<'2', NOW(), stockchanged)   WHERE id=6128
 

не работает

 

 

UPDATE s_variants SET `stock`='2' , `stockchanged` = if(stock<2, NOW(), stockchanged)  WHERE id=6128  AND stock< '2'
 

тоже не работает

Ссылка на сообщение
Поделиться на другие сайты

Эврика! Их просто нужно поменять местами!!!

 

UPDATE s_variants SET `stockchanged` = if(stock<'5', NOW(), stockchanged), `stock`='5'   WHERE id=6083
 

Работает.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...