Jump to content

Recommended Posts

Здравствуйте

Пытаюсь сделать сложный id для заказа

вот например добавляю в тпл

  <?php 
$chars="1234567890";
$max=10;
$size=StrLen($chars)-1;
$password=null;

    while($max--)
    $password.=$chars[rand(0,$size)];

$order_number= $password.$order['order_id'];
$char="-"; 
$order_number_char=preg_replace('/((?:.|\n){4})(?!$)/i','${1}'.$char,$order_number); 

?>

и вывожу уже переменную $order_number_char, но при обновлении страницы этот id меняется естественно

Как можно сделать чтобы он сохранялся?

Share this post


Link to post
Share on other sites

Он вроде в сессии хранится

Share this post


Link to post
Share on other sites

В итоге что сделать то хотите? В базу он все равно в таком виде не влезет int(11) как бы намекает...

Share this post


Link to post
Share on other sites

ну это ясно что тип поля надо поменять на текстовый

проблема в том как это все записать в бд в поле ид заказа

Share this post


Link to post
Share on other sites

не то и не туда. Вообще все мимо.

Share this post


Link to post
Share on other sites

 

проблема в том как это все записать в бд в поле ид заказа

Проблема в том, что вы понятия не имеете, что такое первичный ключ в базе данных. А проблема OpenCart - что он зачем-то смешал понятия предметной области (номер заказа) и системных структур (ключей в таблице) в одном поле.

Share this post


Link to post
Share on other sites

Проблема в том, что вы понятия не имеете, что такое первичный ключ в базе данных. А проблема OpenCart - что он зачем-то смешал понятия предметной области (номер заказа) и системных структур (ключей в таблице) в одном поле.

уважаемый, я семестр в вузе учила sql так что разбираюсь и в запросах и в ключах, пусть я не пользовалась phpmyadmin но все равно

Мне нужна связь с опенкарт, кароч сделаю напишу решение, так как наверняка многим надо, а то что за дела 1 заказ - ид 1, десятый - ид 10, кто хоч подсчитает сколько заказов у клиента в месяц, странно еще что нигде никто не писал решения, хотя темок тьма

Share this post


Link to post
Share on other sites

Ваша досада и обида понятна. Однако учить != понимать.

 

Самое правильное решение - оставить бедный order_id в покое, чтобы не ломать сотни дополнений, которые справедливо надеются видеть в этом поле int, а сделать новое поле order_num, в контроллере заполнять как вам вздумается, выбрасывать на виды, в письмо покупашке и далее по вкусу.

Share this post


Link to post
Share on other sites

..а то что за дела 1 заказ - ид 1, десятый - ид 10, кто хоч подсчитает сколько заказов у клиента в месяц, странно еще что нигде никто не писал решения, хотя темок тьма

не факт! тот же id можно накрутить как угодно - хоть 100500 выставить ;)

 

полностью согласен с tabook - лучше дополнительное поле завести, и уже его обрабатывать по всякому в зависимости от самого id

Share this post


Link to post
Share on other sites

не факт! тот же id можно накрутить как угодно - хоть 100500 выставить ;)

имеете в виду инкремент другой поставить и начинать заказ не с 1?

Share this post


Link to post
Share on other sites

создайте тестовый заказ, потом в базе в таблице order этот самый order_id измените например на 1000 (главное, чтоб номер был больше последнего реального заказа)

при следующем заказе его номер будет 1001 - поле в БД инкрементное

Share this post


Link to post
Share on other sites

Самое правильное решение - оставить бедный order_id в покое, чтобы не ломать сотни дополнений, которые справедливо надеются видеть в этом поле int, а сделать новое поле order_num, в контроллере заполнять как вам вздумается, выбрасывать на виды, в письмо покупашке и далее по вкусу.

+

Share this post


Link to post
Share on other sites

Есть поля invoice_prefix и invoice_no - varchar и int соответственно. Выводить их где понадобится, вместо номера заказа.

Share this post


Link to post
Share on other sites

У меня стоит модуль https://opencartforu...ta-po-shablonu/ который изменяет номер счета (invoice) по шаблону: 
{YY} - год заказа (две цифры)

{YYYY} - год заказа (полный)
{M} - месяц заказа (без ведущего нуля, например 3)
{MM} - месяц заказа (с ведущим нулем, например 03}
{D} - день заказа (без ведущего нуля, например 5),{DD} - день заказа (с ведущим нулем, например 05)
{ORDER_ID} - системный номер заказа
{NUM} - порядковый номер счета, нумерация начинается с 1 согласно настройке ниже

 

В модуле есть так же возможность начинать новую нумерацию:

1. Каждый день

2. Каждый месяц

3. Каждый год

 

Нужно добавить в инвойс возможность включения/выключения страны заказа и уравнять Номер заказа с Номером счета. Чтоб было как-то так:

 

Номер счета:          UA00012320151306

Номер заказа: INV-UA00012320151306

 

Предложения в личку.

Edited by aminco

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.