Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Последний product_id сброс


wowez

Recommended Posts

Здравствуйте вопрос в том, что у меня последний id реального продукта 698, - далее я добавлял товары с админки штук 10-15, и вот в итоге последний id стал 718, - далее я удалил эти 10-15 товаров, но id далее так же и добавляется 719, 720, 721 и т.д. как сбросить что бы товары так и добавлялись с реального id.

 

Простите конечно но даже не пойму как искать  и "сброс product_id" u reset product_id не дает корректной информации

 

Помогите пожалуйста, добрый человек.

Надіслати
Поділитися на інших сайтах


А с чем именно связано неудобство использования? Если вам при этом не удобно, значит вы что-то делаете не так, потому что все правильно и работает как надо. Напишите в чем именно заключается задача, может поможем советом.

 

А вообще ваша проблема связана с использованием атрибута auto_increment. Для его сброса нужно выполнить запрос:

ALTER TABLE <имя таблицы> AUTO_INCREMENT = 718
Змінено користувачем halfhope
Надіслати
Поділитися на інших сайтах

ALTER TABLE <имя таблицы> AUTO_INCREMENT = 718

 

Простите но какой таблицы ? это те или какая из них?

 

oc_product_attribute

oc_product_description

oc_product_discount

oc_product_filter

oc_product_image

oc_product_option

oc_product_option_value

oc_product_recurring

oc_product_related

oc_product_reward

oc_product_special

oc_product_to_category

oc_product_to_download

oc_product_to_layout

oc_product_to_store

 

 

А так необходимо что бы когда удалил допустим 43 товара на разных позициях, и причем с админки (это для заказчика), а у последнего товара по id, самый большой какой уже есть номер, и когда снова добавляешь товар отсчет шел с последнего существующего id а не со значения AUTO_INCREMENT.

 

И маленько поясню задачу (пожелания заказчика) и ох как и задам вопросик?

в прилагаемой картинке вот так сделано мною - всё работает.

adm.png

 

в списке продуктов менеджер и хозяин 2-х небольших магазинов что бы могли ориентироваться легкопри добавлении изменениии и удалениии товаров.

Задача такая что бы добавлялся товар заполнением только наименованием товара (бывает так надо), и товар выводится на сайт под номером котрый совпадает с product_id - ну он и есть.

Я вставил $product_id в вывод $text_model  на сайте в карточке товара, все выводится - работает

 

site.png

 

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

 

 search.png

 

А надо. Вотэто вопрос уже другой, а пока остается тот же, 

как сделать, что бы отсчет шел с последнего существующего id а не со значения AUTO_INCREMENT.

Надіслати
Поділитися на інших сайтах


У вас неправильный подход к решению первой проблемы, отсюда вытекает вторая проблема с автоинкркментируемым полем. Решите первую правильно и не нужно будет с инкрементируемым полем бороться, с ним все четко, работает как надо. Это мое мнение.

Надіслати
Поділитися на інших сайтах

product_id - по своей сути нарастающий счетчик товара, с уникальными значениями

он используется для идентификации, этакий своеобразный паспорт

 

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

Надіслати
Поділитися на інших сайтах

Ещё раз, суть такова (пожелания заказчика), вот есть 685 товаров и последний id - 685, я удаляю с конца 35 товаров и последний товар теперь имеет id-650, теперь добавляю товар и он получает id-686, а надо что бы получил id-651.

Так хочет заказчик ибо сам будет добавлять и удалять товары из админки, и хочет получать корректную нумерацию товаров отсчитывая от последнего существующего максимального id (так им проще так хотят и что бы вручную типо не проставлять), а получает сейчас значение из  инкрементируемого поля  для них это получается непонятный номер нового товара. Как быть.

 

как сделать, что бы отсчет шел с последнего существующего id а не со значения AUTO_INCREMENT

Надіслати
Поділитися на інших сайтах


 

 

Так хочет заказчик ибо сам будет добавлять и удалять товары из админки

Странные вопросы как для исполнителя 

 

 

 

как сделать, что бы отсчет шел с последнего существующего id а не со значения AUTO_INCREMENT

Красиво, производительно и правильно - никак 

 

Для это используйте дополнительные поля в которые можно вводить id товара и не придумывайте велосипед 

Надіслати
Поділитися на інших сайтах

а в середине ваш заказчик товар удалит, например с id-600 - что тогда?

id во всех товарах переименовывать?

 

счетчик потому и сделан нарастающим, чтобы не было путаницы в БД

 

заказчику сказать что это изюм и он не продается что это приведет к сбою данных в БД и так делать нельзя

Надіслати
Поділитися на інших сайтах

а в середине ваш заказчик товар удалит, например с id-600 - что тогда?

id во всех товарах переименовывать?

 

счетчик потому и сделан нарастающим, чтобы не было путаницы в БД

 

заказчику сказать что это изюм и он не продается что это приведет к сбою данных в БД и так делать нельзя

 

 

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

Надіслати
Поділитися на інших сайтах


нумерация и так корректная.

заказчик хочет унитаз прибитый к потолку.

если он продолжает настаивать на своем бреде - шли его в лес.

Надіслати
Поділитися на інших сайтах

Вам уже 2 раза сказали, что Вы не правильно начали решать задачу. К Id продукта подвязываются еще кучка таблиц в БД. Удалив продукт, вы не удалите скидки, картинки, сео-урл, фильтра, акции и т.д. А добавив новый товар, получите набор атрибутов и всего остального к старому. К чему это приведет? - К путанице в последствии. Поэтому не заморачивайте себе голову, а делайте, как подсказано - новую колонку в таблице продуктов, которую и инкрементируйте сами, ловя из БД ее максимальное значение, а потом уже используйте там, где удобно. А к стандартам лезть не стоит.

Надіслати
Поділитися на інших сайтах


..Удалив продукт, вы не удалите скидки, картинки, сео-урл, фильтра, акции и т.д. А добавив новый товар, получите набор атрибутов и всего остального к старому. К чему это приведет? - К путанице в последствии.

если таблицы стандартные - все эти связи удаляются вместе с удалением самого товара (см. deleteProduct() в admin\model\catalog\product.php

 

а вот всякое-нестандартное в этой ситуации под вопросом, все будет зависеть от грамотности разработчиков различных модулей

если толковые - учтут удаление связей при удалении товара

 

а если нет - как раз и будут проблемы

хочет ТС получить возможные проблемы в будущем - пусть делает как chukcha выше написал, решение вполне подходящее

Надіслати
Поділитися на інших сайтах

OC не умеет каскадно удалять данные  нет у него FOREIGN KEY Constraint

 

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

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

 

Поэтому притча

 

Родился мальчик, а у него вместо пупка гайка.

Приходит он к бабке поветухе и говорит: Слышь бабуль вот все дети как дети, а у меня гайка вместо пупка. Что делать?
- Это длинная история. Пойдешь за тридевять земель в тридевятое царство, будешь идти тридцать три года три дня и три месяца. Сносишь трое железных сопогов, сломаешь трое железных посохов. Придешь туда, увидишь дуб на дубе будет ларец, в ларце будет заяц в зайце будет утка в утке будет яйцо и в яйце найдешь то, что тебе надо.

 

Ну и пошел мальчик за тридевять земель в тридевятое царство, шел тридцать три года три дня и три месяца. Сносил трое железных сапогов, сломал трое железных посохов. Пришел туда, дуб завалил, ларец сломал зайца убил, утку убил яйцо ломает а там гаечный ключ внутри.

 

Он гайку на пупке откручивает, у него жопа отваливается.
Мораль: Не ищи на жопу приключений.

Надіслати
Поділитися на інших сайтах

ТС'у все и так говорят - не трогай

 

если при удалении товара (при стандартном инкременте) где-то останутся связи/данные о этом товаре - это полбеды

но вот когда инкремент гуляет туда-сюда - ни к чему хорошему такие "хвосты" не приведут при совпадении id

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.