@phpclubru

Страница 721 из 956
Юрий
18.12.2018
21:58:11
думай дальше ...
ну так вот сформировал я 8ми $tmp_order_id значный пин заказа потом провери есть ли этот пин в БД при помощи SELECT * FROM orders WHERE order_id='$tmp_order_id'

если вернуло 0 строк - то вставляем этот заказ в БД - если нет - то генерируем новый пин и снова проверяем

sergey
18.12.2018
22:00:36
лучше попытаться сразу вставить, а поле сделать уникальным

Google
sergey
18.12.2018
22:00:40
если получилось - то ок

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

Юрий
18.12.2018
22:01:44


но этот вариант что на картинке самый лучший!

спасибо за ссылку!

sergey
18.12.2018
22:03:01
зачем усложнять

можно и транзакции

но инсерт в уникальное поле сработает и на myisam

и врядли когдато както поведет себя не так, как ожидается

dypa
18.12.2018
22:04:05
sergey
18.12.2018
22:04:11
=((

уже все?

Google
Юрий
18.12.2018
22:04:31
у меня уникальным явл order_id

sergey
18.12.2018
22:04:41
забудь, его уже нет
Блин, ты меня расстроил

dypa
18.12.2018
22:05:34
но этот вариант что на картинке самый лучший!
explain сделай для таблицы с 50% заполнением и not null не забудь, радость поубавится

Блин, ты меня расстроил
вроде уже год как отпилили, но туда ему и дорога

sergey
18.12.2018
22:06:55
вроде уже год как отпилили, но туда ему и дорога
а как же копировать таблицы (Файлами) на включенном майскуле на другой сервер? =)

причем на другой включенный сервер )

Но вообще да, туда ему и дорога. Недавно тут пришлось выкурить возможности майскуля по json полям и виртуальным полям. Развивается всё

sergey
18.12.2018
22:10:06
а как же запустить сайт прямо на хостовой машине )

в прод

Юрий
18.12.2018
22:18:07


такое поле вы же имели ввиду когда говорили про УНИКАЛЬНОЕ?

sergey
18.12.2018
22:19:20
да

их может быть 2 или 102

id надо сделать автоинкремент

Юрий
18.12.2018
22:20:26
id надо сделать автоинкремент
именно так и есть id - AI

order_id - unique

sergey
18.12.2018
22:22:06
да. вот так прямо можешь пытаться вставить новый заказ с сгенерированым order_id . Если не получилось (не вернул insert_id, но вернул ошибку), перегенерируешь order_id. И так while пока не получишь insert_id

это будет работать довольно быстро

Юрий
18.12.2018
22:23:16
это будет работать довольно быстро
я именно так и планировал сделать!

Google
Юрий
18.12.2018
22:23:23
спасибо за помощь!

57-59-53-44

вот в таком формте будут order_id

sergey
18.12.2018
22:24:13
лучше храни числом, а разбивай при отображении

числом уник ищется быстрее

Юрий
18.12.2018
22:24:48
ок!!

лучше храни числом, а разбивай при отображении
а может кто-то подсказать как отформатировать номер 99999999 до формата 99-99-99-99?

sergey
18.12.2018
22:34:22
я так не помню. Если у тебя заведомо известное количество цифр в числе, можешь сделать так $tmp=(string)$digit; $formated=$tmp{0}.$tmp{1}."-".$tmp{2}.$tmp{3}."-"

и так далее

но так вроде делают только придурки как я

и на счет синтаксиса (string)$digit; я не уверен

Юрий
18.12.2018
23:59:32
function format_order_pin($pin, $options=[2,'-']) { $pin_length = strlen($pin); $dev = $options[0]; $delim = $options[1]; $ci = $pin_length / $dev; $start = 0; $tmp=[]; for ($i=0; $i < $ci; $i++) { $tmp[$i] = substr($pin, $start, 2); $start +=$dev; } $ret = implode($delim, $tmp); return $ret; }

вот и функцию написал что из числа 99999999 делает число в формате 99-99-99-99



еще хотел спросить в каком виде лучше хранить в таблице orders информацию о товарах в заказе (СТОИМОСТЬ, кол-во, название товара, код товара, изображние).. я скланяюсь что это должен быть массив в виде строки JSON

еще хотел спросить.. я тут написал ЦМС скрипт онлайн магазина.. лайт версия и его время выполнения 0.1 секунда в среднем..это же быстро?

и это на моем планшеье с intel Atom z8350

Nibbler
19.12.2018
01:16:37
остановись.

прекратите херней страдать.

задкчка из второго класса.

Google
Nibbler
19.12.2018
01:18:03
делаешь два поля.

uuid & id где id показываешь клиенту uuid индификатор заказа в бд.

клиент счастлив, что у него простое число. бд что uuid

заказ можно json, можно набором записей в бд..

Юрий
19.12.2018
01:21:08
давай ссылку на гит.
чуток позже дам ! спасибо!

Nibbler
19.12.2018
01:25:32
это хэш

Pavel
19.12.2018
01:25:41
Нет есть просто функция получения uuid

Nibbler
19.12.2018
01:25:42
загугли uuid php

Pavel
19.12.2018
01:26:07
http://php.net/manual/ru/function.uniqid.php

Юрий
19.12.2018
01:26:35
спасибо ребята! вы меня хорошо просвятили!

Nibbler
19.12.2018
01:32:22
присылай гит еще не так просвятим

Юрий
19.12.2018
02:51:19
uniqidReal() из этого поста более прав вариант! ее и буду исп http://php.net/manual/ru/function.uniqid.php#120123

Valerii
19.12.2018
05:26:50
Читал Вашу ночную переписку: а не лучше ли было привязать номер заказа по типу: дата(можно даже в обратном порудке применить)+минуты+секунды... И хрен кто сможет подкопатся сколько заказов. В той же 1с создаётся дата и номер накладной на тот день... И максимум что можно понять сколько в один день...

Valerii
19.12.2018
05:40:07
ммм..... ну так себе а если в одну секунду пришло 2 заказа?
Контрольная цыфра в виде номера заказа?

Nibbler
19.12.2018
05:40:36
Контрольная цыфра в виде номера заказа?
штэ? номер заказа из номера заказа?

зачем столько геммороя?

uuid + id(autoincrement)

Google
Nibbler
19.12.2018
07:28:45
dypa
19.12.2018
07:40:36
ага.
и в чем же тогда проблема? ;)

Nibbler
19.12.2018
07:42:35
и в чем же тогда проблема? ;)
какой у тебя ник хороший.

ну подумай если у тебя номер заказа составной из времени заказа.

Valerii
19.12.2018
07:44:42
ага.
Ну на краняк добавить проверку одного поля? Вместо горожения нечитабельных id....

Valerii
19.12.2018
07:45:47
нечитабельный id это 1
Ну как раз проверка последней записи имею ввиду.. На случай двойного заполнения?

Nibbler
19.12.2018
07:46:09
давайте алгоритм разберем не против?

Сколько у вас опыт?

dypa
19.12.2018
07:48:04
ну подумай если у тебя номер заказа составной из времени заказа.
а что мне то думать?! ) для одного клиента вполне уникально datetime заказа

Nibbler
19.12.2018
07:48:16
Алго предложенный вами: 1. Получаем время заказа г/м/д ч:м:с 2. Генерим уник для заказа из шаг1 3. Проверяем есть ли такая метка в БД (+1 запрос) 4. Если есть повторяем операцию с шага 1 5. Если нет то пишем. (тут есть вероятность что после шага 3 уже в БД записал кто-то с такой меткой.)

Страница 721 из 956