Перейти к содержанию

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

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

Пытаюсь сделать сложный 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 меняется естественно

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

 

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

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

Поделиться сообщением


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

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

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

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

Поделиться сообщением


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

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

 

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

Поделиться сообщением


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

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

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

 

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

+

Поделиться сообщением


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

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

Поделиться сообщением


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

У меня стоит модуль 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

 

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

Изменено пользователем aminco

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.