Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

44K
23 декабря 2010 года
vadim525
41 / / 09.03.2010
Всем доброго времени суток.

А проблема такая.
На mysql реализована корзина покупателя.
На страницу basket передаю add товара через Get в url.
на странице basket этот add проверяю на наличие в базе.

Одна из проверок заключается в следующем:
делаю запрос к таблице с товаром (tovar)
$result = mysql_query ( "SELECT `id` FROM `tovar`");

дальше получаю кол-во строк из этой таблицы
$num_rows = mysql_num_rows($result);

и затем если
if ($add <= $num_rows)
провожу добавление в таблицу ,которая является "корзиной" этот товар и сессию.

Так вот, проблема такова.
Допустим у меня в таблице tovar 100 строк и id идут по порядку. Если я удалю из таблицы 10 строк, а потом добавлю ещё 10 строк, то id товара уже запишутся от 100 т.е будет 101,102,103.........110, хотя строк будет также 100.

И проверка уже не пройдёт (((, товар с id 102 уже не добавится.

Возможно сделать так, что бы после удаления строк, id продолжали вставляться по порядку. Т.е если было 100 строк, удалил 10, то при добавлении новых строк, id начинался бы с 91 а не с 101???
244
23 декабря 2010 года
UAS
2.0K / / 19.07.2006
Товарищ, вы определенный извращенец в программном смысле (без обид, но ваше решение образец индус-кода), который поленился почитать ман по MySQL и найти там в описании такую вещь, как WHERE.
SELECT `id` FROM `tovar` WHERE `id` = $add
Далее уже проверяете, есть ли наличие записи или нет. Если id нет, то и кол-во выбранных записей равно нулю.

$result = mysql_query ( "SELECT `id` FROM `tovar`"); - данной командой вы вообще дико нагружаете СУБД + канал передачи данных от субд до скрипта + выделяете слишком много лишней памяти. Уж хотя бы COUNT(`id`) был бы и то разумнее на порядки.
44K
23 декабря 2010 года
vadim525
41 / / 09.03.2010
Спасибо за ответ,
Но мне больше интересен такой момент:
( с муслулом работаю через phpmyadmin ), есть таблица с товаром (tovar),
пример таблицы:
поля: id, goods, у поля id стоит AUTO_INCREMENT,
вопрос: возможно ли сделать так что: после удалении 10 строк (при условии сто в таблице их 100, и последний id == 100), значение id записывалось бы 91, а не 101???
11
23 декабря 2010 года
oxotnik333
2.9K / / 03.08.2007
Цитата: vadim525

поля: id, goods, у поля id стоит AUTO_INCREMENT,
вопрос: возможно ли сделать так что: после удалении 10 строк (при условии сто в таблице их 100, и последний id == 100), значение id записывалось бы 91, а не 101???


Сделать то можно, для этого надо написать свой триггер на вставку и генератор чисел. Но это опять индусизм. Какова его цель?
Может случится ситуация: был товар к примеру "Гандоны" с id = 88 его удалили, и ввели "Пластырь" (с тем же id) а где то забыли в связанных таблицах удалить, в результате вся структура полетит к черту, покупатель заказавший в свое время гандоны получит по почте пластырь, и будет долго думать чего ему заматывать.

44K
23 декабря 2010 года
vadim525
41 / / 09.03.2010
Цитата: UAS
Уж хотя бы COUNT(`id`) был бы и то разумнее на порядки.



Кстати спасибо COUNT, в мане по этому поводу написано??, не видел
P.S. почитаю повнимательнее.

Где узнать какую функцию использовать лучше??

44K
23 декабря 2010 года
vadim525
41 / / 09.03.2010
Цитата: oxotnik333
в свое время гандоны получит по почте пластырь, и будет долго думать чего ему заматывать.



Да ладно, у нас все сообразительные )))

Спасибо за ответ, я понял

244
23 декабря 2010 года
UAS
2.0K / / 19.07.2006
Цитата:
Где узнать какую функцию использовать лучше??

Это опыт показывает и степень разумности мозга.
Не делайте бред, который описали выше. Я вам дам вполне адекватный совет, как правильно делать. Иначе по вашему реализуете щас триггеры, хранимые процедуры и прочее, в итоге получится вообще УГ.

8
23 декабря 2010 года
mfender
3.5K / / 15.06.2005
а что за фетиш юзать идентификаторы удалённых рядов? религия новая?

UPD: вот представляю ситуацию: удалил я допустим страну с oid=90 и title=Sweden. И зае…ил с тем же oid страну Буркина-Фасо. А в поисковиках уже на Sweden индексировался какой-нибудь country90.htm. Прёт человек по этому адресу, и мало того что не попадает на Sweden или хотя бы на warning "Pardon. Etogo porcha tut boshe nemae", а попадает тупо на Буркина-Фасо. Неприятность, однако…
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог