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

question

Пользователь
  • Публикаций

    275
  • Зарегистрирован

  • Посещение

Весь контент question

  1. Мне нужно обновить поле stock, а stockchanged обновлять только при условии, когда stock<77. Это возможно сделать одним запросом? Или только два UPDATE-запроса?
  2. Интересно, почему запрос 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 не хочет работать?
  3. Проблема была лишь в том, что я передавал массив. Переписал функцию 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; } Теперь работает нормально.
  4. $query = $this->db->placehold("UPDATE s_variants SET ?%, datechanged=NOW() WHERE id=? AND (SELECT stock FROM s_variants WHERE id=? LIMIT 1) < КОЛИЧЕСТВО LIMIT 1", $variant, intval($id)); Вот только передать количество не получается.
  5. Добавлю. Наиболее правильное, с моей точки зрения, решение - отправлять запрос в БД. Однако, функция placeholder не позволит отправить в БД запрос вида UPDATE s_variants SET stock=КОЛИЧЕСТВО, datechanged=NOW() WHERE id=КАТЕГОРИЯ AND (SELECT stock FROM s_variants WHERE id=КАТЕГОРИЯ LIMIT 1) < КОЛИЧЕСТВО LIMIT 1 Конкретно 4 строчка. Не позволит подставить КОЛИЧЕСТВО
  6. Ну чем плоха идея хранить склад не в отдельной программе с синхронизацией туда-сюда, а в базе данных моего сайта и управлять облегчённой админкой? В первом случае - это занесение всех товаров в базу с разбивкой по категориям, во втором - база уже есть. Возможно, эта тема заинтересует других участников и они пойдут по моему же пути.
  7. Мысль была в tpl-файле яваскриптом сделать, но т.к. перезагрузки страницы не происходит, при увеличении-уменьшении без перезагрузки, может произойти конфликт, мне так кажется.
  8. Переделал. Теперь сохраняет только при нажатии на enter (код 13). У меня ещё вопрос. Подскажите, как при увеличении количества товара отправлять один запрос, а при уменьшении - второй. Надо сравнивать введённое в input число в админке с variant->stock или же вставить SELECT в UPDATE и написать условие типа UPDATE s_variants SET stock=99, datechanged=NOW() WHERE id=123 AND (SELECT stock FROM s_variants WHERE id=12345 LIMIT 1) < 99 LIMIT 1 ? Суть такая: надо записывать в одно поле дату при уменьшении товара на складе и во второе поле при увеличении кол-ва товаров на складе.
  9. Понятия не имею, почему ваш код не работает. Мой сработал, когда я подставил амперсант (&$v)
  10. Помогла такая конструкция foreach($variant as &$v){ if($v == '∞' || $v == '') $v = null; }
  11. Нашёл такую конструкцию. $variant->infinity Видимо, она и передаёт значение null в БД.
  12. Не понимаю, как сохраняется "бесконечное количество" товара через админку.
  13. Простите, это где? Ну бывают случаи, когда не помнишь, какую скидку кому обещал.
  14. echo $this->db->placehold("?%", $variant); выведет stock='9' Мне же нужно без кавычек в случае, если числа нет, или значение пустое.
  15. Во второй строчке была опечатка, это я сразу заметил, но $variant->stock=null; не работает.
  16. В Симпле запросы к БД формируются функцией placehold в виде $query = $this->db->placehold("UPDATE __variants SET ?% WHERE id=? LIMIT 1", $variant, intval($id)); Если $variant содержит название поля и число, запрос выполняется правильный UPDATE s_variants SET stock=10000 WHERE id=999 LIMIT 1 Но если содержит название поля и null вместо числа, в бд передаётся 'null' в кавычках, которое затем превращается в 0 (ноль) в базе. Не пойму, как передать значение без кавычек.
  17. В админке Симплы есть замечательная функция - заказы. Легко добавить товар, доставку, легко применить скидку, ну а дальше-то что? 1. Как вывести на печать в виде накладной? 2. Как округлить сумму до сотен? 3. Есть группы покупателей, допустим, "клиент", "постоянный клиент (-5%)", "оптовик (-15%)" - как в админ-заказе это использовать?
  18. Вы не поняли. Старая функция update_variant осталась для старой админки, новая update_stock - для новой и место для вставки этой функции всего одно. Я теперь думаю, как записывать в БД количество продаж в месяц и как формировать заказы в админке (корзина для админки с последующей печатью накладной)
  19. Работает, дату изменения при изменении количества через новую админку записывает
  20. Зачем мучаться? Просто написал другую функцию public function update_stock($id, $variant) { $query = $this->db->placehold("UPDATE __variants SET ?% , `stockchanged` = NOW() WHERE id=? LIMIT 1", $variant, intval($id)); $this->db->query($query); return $id; }
  21. И ещё вопрос. Функции update_variants передаются параметры, которые она подставляет в sql запрос. Сама функция public function update_variant($id, $variant) { $query = $this->db->placehold("UPDATE __variants SET ?% WHERE id=? LIMIT 1", $variant, intval($id)); $this->db->query($query); return $id; } Svariant, как я понял, массив. Как эту функцию переписать, чтобы при нахождении в $variant только stock добавлять в SQL фразу , `stockchanged` = NOW() ?
×
×
  • Создать...