Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Помогите разобраться с БД
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2007 Откуда: Воронеж
Помог: 0 раз(а)
С Новым Годом!
Помогите разобраться с такой проблемой. Написал скрипт (я очень начинающий). Писал читая самоучитель...
Скрипт - доска объявлений, каждое объявление имеет свой id и отдельную страницу.
Проблема вот в чем. Я поставил для поля id "auto_increment", что не совсем удобно.
Может ли кто-то подсказать как сделать так, чтобы поле id (это первичный ключ) не увеличивалось каждый раз на единицу, а сначала проверяло с 1. Если есть 1- идем дальше, нету 2, значит присваиваем объявлению 2, а те, что больше - не трогаем. Будет все 100-200 заняты, значит увеличиваем на единицу. ???
evgenijj
Отправлено: 03 Января, 2007 - 00:14:05
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Седой пишет:
Может ли кто-то подсказать как сделать так, чтобы поле id (это первичный ключ) не увеличивалось каждый раз на единицу, а сначала проверяло с 1. Если есть 1- идем дальше, нету 2, значит присваиваем объявлению 2, а те, что больше - не трогаем. Будет все 100-200 заняты, значит увеличиваем на единицу. ???
$next_id - ID, который тебе надо вставить в следующий запрос (INSERT).
ЗЫ: сор, ниче умнее в голову не пришло, у меня уже утро...
Седой
Отправлено: 05 Января, 2007 - 17:33:28
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2007 Откуда: Воронеж
Помог: 0 раз(а)
Огромное спасибо, суть понятна.
Седой
Отправлено: 13 Января, 2007 - 16:35:50
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2007 Откуда: Воронеж
Помог: 0 раз(а)
Не работает такой код.
Может не правильно объяснил...
Если есть id=1, id=2 , id=5, id=8, id=10, id=11, id=12.
Как сделать так чтобы скрипт проверял порядок присвоенных id?
К примеру следующая запись должна иметь id=3, потом id=4, потом id=6...
А потом когда id=1 , будет удален, то скрипт определит это и запишет новую запись с ключем id=1/
f0rm4t
Отправлено: 13 Января, 2007 - 22:31:11
Посетитель
Покинул форум
Сообщений всего: 433
Дата рег-ции: Июнь 2006
Помог: -1 раз(а)
В цикле проверяй наличие записей с такими идентификаторами. Довольно ресурсоемкий способ (в плане времени)...
Stamm
Отправлено: 14 Января, 2007 - 17:09:24
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Нояб. 2006
Помог: 0 раз(а)
Седой Очень плохая идея. А зачем вам это надо?? Лишнее мозгоё...во.
Пусть MySQL сам вставляет номер.
А если вдруг пользователь зашёл на вашу "доску" и поместил в закладки одно объявление с id=1.Потом вы удалили этот номер и записали новый объявление с id=1. Пользователь зайдёт и увидит совсем другое объявление. Что ни есть хорошо.
Да и существует вероятность перезаписи обявления. Представьте ситуации, два пользователся добавляют объявления. И одновременно добавляют это объявление. Скрипт у первого пользователя определяет номер 1, но перед добавлением записи в БД, запускается скрипт добавления второго пользователя. И у него тоже определяется номер 1. Объявление первого будет утеряно. Правда вероятность это очень мала, но всё же зачем делать за MySQL его работу??
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Я поставил для поля id "auto_increment", что не совсем удобно.
А в чём выражается неудобство?
----- Truly yours, Sasha.
Седой
Отправлено: 17 Января, 2007 - 20:03:59
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2007 Откуда: Воронеж
Помог: 0 раз(а)
valenok пишет:
Я поставил для поля id "auto_increment", что не совсем удобно.
А в чём выражается неудобство?
Неудобство выражается в том, что объявления через два месяца удаляются, а иногда и раньше.
Когда заходит пользователь, то ему все равно под каким id он видит объявление, а вот роботы будут постоянно натыкаться на ошибку 404.
Сейчас уже нет объявлений от 0 до 300, дальше будет еще хуже. А ведь эти триста были закешированы поисковиками и потом на их месте оказалась 404. \n\n(Добавление)
Stamm пишет:
Седой Очень плохая идея. А зачем вам это надо?? Лишнее мозгоё...во.
Это просто необходимо для того, чтобы доска была популярной.
Пусть MySQL сам вставляет номер.
Кроме auto_increment есть вариант?
А если вдруг пользователь зашёл на вашу "доску" и поместил в закладки одно объявление с id=1.Потом вы удалили этот номер и записали новый объявление с id=1. Пользователь зайдёт и увидит совсем другое объявление. Что ни есть хорошо.
Объявление и так будет удалено, они ведь не вечные. Если пользователь попадет на 404 будет еще хуже.
Да и существует вероятность перезаписи обявления. Представьте ситуации, два пользователся добавляют объявления. И одновременно добавляют это объявление. Скрипт у первого пользователя определяет номер 1, но перед добавлением записи в БД, запускается скрипт добавления второго пользователя. И у него тоже определяется номер 1. Объявление первого будет утеряно.
Это исключено. Такое возможно только при обновлении БД, но такой команды в скрипте нет.
Хотя ситуация щепетильная, спасибо.
Правда вероятность это очень мала, но всё же зачем делать за MySQL его работу??
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.