Формирование Номера Заказ

Видимо уже мозги поплыли вечером. Искал и не нашел. Даниил, не подскажете, где формируется номер заказа. Хочу его переделать, избавиться от простой порядковости.

Смотрите fn_update_order (app/functions/fn.cart.php). Но там не все так просто с порядковостью, как кажется

[quote name=‘eComLabs’ timestamp=‘1439532833’ post=‘226730’]

Смотрите fn_update_order (app/functions/fn.cart.php). Но там не все так просто с порядковостью, как кажется

[/quote]



да уж, навертели там. Номер заказ - это просто автоинкрементное поле в базе. Это плохо :(

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

[quote name=‘densvi’ timestamp=‘1439553243’ post=‘226780’]

да уж, навертели там. Номер заказ - это просто автоинкрементное поле в базе. Это плохо :(

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

[/quote]



А вы хотите усложнить жизнь клиенту, чтобы он говорил fb-gb-2013?



Вот куда хуже с 2-я витринами там номера вперемешку, 2015 заказ одной витрины, 2016 другой и т.д. то есть нет отдельной нумерации.

Вопрос “Зачем” оставим за скобками.



Попробовал изменить в [color=#282828][font=arial, verdana, tahoma, sans-serif] fn_update_order (app/functions/fn.cart.php) после заведения в базу нового заказа, т.е. после строки [/font][/color]



[color=#282828][font=arial, verdana, tahoma, sans-serif]<br /> $order_id = db_query("INSERT INTO ?:orders ?e", $order);<br /> [/font][/color]



номер заказа, т.е. поле order_id на произвольное число запросом UPDATE, например, на 98765. Изменил, но заказ как-то криво формируется, то вообще ошибка, то еще что. Ну это ладно.



Самое главное, что когда я убрал все свои добавления, удалил в админке заказ 98765, то новый заказ прекрасно сформировался с номером большим на 1 чем моё то произвольное число, т.е. заказ стал 98766. Как так?



В настройках в админке в “[color=#333333]Начальный номер заказа” [/color]так и остался стоять прежний номер заказа, допустим 300.



Когда я в этой настройке в админке изменил начальный номер заказ, допустим на 400, то мой следующий заказ с таким номером и сформировался.



Теперь вопрос. Как так происходит? Номер заказ где-то хранится для автоинкремента при добавлении заказа???

Если вы сделаете дамп таблицы, то увидите там параметр AUTO_INCREMENT у order_id.



http://www.mysql.ru/docs/man/example-AUTO_INCREMENT.html



Относительно него айдишник следующего заказа и формируется. В настройках даже если вы укажите значение меньше этого номера, то это не сработает

т.е. вручную переопределить этот самый номер, кроме как увеличить, его нельзя?

[quote name='densvi' timestamp='1439812591' post='226964']

т.е. вручную переопределить этот самый номер, кроме как увеличить, его нельзя?

[/quote]



Да, из админки нельзя меньший указать. Можно табличку подкорректировать и вернуть старый номер, но тогда заказы с айдишником более [color=#282828][font=arial, verdana, tahoma, sans-serif]98765 лучше удалить[/font][/color]

[quote name=‘densvi’ timestamp=‘1439812591’ post=‘226964’]

т.е. вручную переопределить этот самый номер, кроме как увеличить, его нельзя?

[/quote]



Откройте phpmyadmin , зайдите в таблицу cscart_orders , там есть вкладочка “Операции”, там есть поле “AUTO_INCREMENT”

Я немножко не про это. Мысль была, чтобы номер заказа формировать по принципу:

DDMMHHMM

деньмесяцчасминуты

[quote name='densvi' timestamp='1439825572' post='226998']

Я немножко не про это. Мысль была, чтобы номер заказа формировать по принципу:

DDMMHHMM

деньмесяцчасминуты

[/quote]



Лучше тогда дефолтный айдишник не трогать, а сделать альтеранативный айдишник и заменять его при отображении

[quote name='densvi' timestamp='1439825572' post='226998']

Я немножко не про это. Мысль была, чтобы номер заказа формировать по принципу:

DDMMHHMM

деньмесяцчасминуты

[/quote]



Нет, это плохая идея.



У заказа есть timestamp , можете его любить и жаловать, вывести где нить в любом формате времени