doctorrrrr Опубликовано 22 Марта 2008 Жалоба Поделиться Опубликовано 22 Марта 2008 Вопрос не касается IPB напрямую. Есть таблица (Mysql). В ней три колонки - id, name, rich. PHP-файлом при определенных действиях добавляется в таблицу строка с вышеперечисленными параметрами. 'name' и 'rich' обрабатываются из post-формы, с этим все ОК. Проблема в выдаче 'id'. Каждая новая создаваемая строка должна идти с id+1. Т.е. первая строка, ей автоматом должно присваиваться значение 'id' = 1. Следующей созданной строке - 2, следующей - 3, и т.д. Вопрос - как это реализовать средствами php? Спасибо заранее. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
metrim80 Опубликовано 22 Марта 2008 Жалоба Поделиться Опубликовано 22 Марта 2008 Проблема в выдаче 'id'. Каждая новая создаваемая строка должна идти с id+1. Т.е. первая строка, ей автоматом должно присваиваться значение 'id' = 1. Следующей созданной строке - 2, следующей - 3, и т.д. Вопрос - как это реализовать средствами php? Спасибо заранее. Вообще это делается не средствами РНРДля этого полю 'id' надо присвоить параметр "auto_increment" Тогда новому создаваемому полю присвоится id+1 Если есть желание - не вопрос. Извратись и вытащи запросом поле id (SELECT max(id) FROM ...) и прибавь к нему 1А вообще с помощью РНР обычно присваивается системное время индексному полю Но в абсолютном большинстве случаев все используют "auto_increment" Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 22 Марта 2008 Жалоба Поделиться Опубликовано 22 Марта 2008 А вообще с помощью РНР обычно присваивается системное время индексному полюЭто как? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 22 Марта 2008 Жалоба Поделиться Опубликовано 22 Марта 2008 А вообще с помощью РНР обычно присваивается системное время индексному полюЭто как?Это в смысле забить на автоинкремент по id, а записывать в таблицу time=time() и сортировать по нему при выборке. metrim80, так конечно можно делать, но это может плохо кончиться при большом количестве посетителей, с временем коллизии могут случиться намного более вероятно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 22 Марта 2008 Жалоба Поделиться Опубликовано 22 Марта 2008 Ооо, мусье знает толк в извращениях... Пойду-ка я отсюда. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 22 Марта 2008 Жалоба Поделиться Опубликовано 22 Марта 2008 Ооо, мусье знает толк в извращениях... Пойду-ка я отсюда.Ага, ты не представляешь сколько чуши пишут в книжках для начинающих, а народ на это ведётся Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 22 Марта 2008 Жалоба Поделиться Опубликовано 22 Марта 2008 Да уж, лучше рэп читать, чем такие книжки. Афтаров на кол, книжки фпечь. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
metrim80 Опубликовано 22 Марта 2008 Жалоба Поделиться Опубликовано 22 Марта 2008 А вообще с помощью РНР обычно присваивается системное время индексному полюЭто как?Это в смысле забить на автоинкремент по id, а записывать в таблицу time=time() и сортировать по нему при выборке. metrim80, так конечно можно делать, но это может плохо кончиться при большом количестве посетителей, с временем коллизии могут случиться намного более вероятно. Угу.Но всё же если желание присваивать ID именно с помощью PHP, то вариант с time() на порядок менее проблематиченчем вытаскивание запросом последнего id Ну а в системах с малой интенсивностью пополнения данных, вариант с time() проблем не создастну а time() я испоьлзовал еще когда ваял портальчики на текстовых файлах-таблицах. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
doctorrrrr Опубликовано 23 Марта 2008 Автор Жалоба Поделиться Опубликовано 23 Марта 2008 Мгм.Ну, если на примере, как это реализовано, скажем, в IPB?Допустим, при регистрации юзер получает Id, на единицу больше, чем id последнего юзера. Т.е. юзер, зарегившийся сразу после админа, получает id=2, следующий - 3, и т.д. Так же с топик айди. Вот что-то в этом роде меня и интересует. Буду рыть тогда наверное в сторону auto_increment. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Док Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Тоже тут все искал,что бы при удаление Id удаленного давался новому участникуНо так и не чего не нашел.Нашел вот эту темкуhttp://www.invisionmodding.com/index.php?s...delete+inactiveУдалил пользователей ненужных,но в таблице ibf_members_converge стоит "auto_increment" и там не меняеться не чегоПишет к примеру пользователе 500,а следущий "auto_increment" 620 будит идти и не как нельзя изменить это.Попробовал сделать этот запрос SELECT id FROM ibf_members WHERE last_activity < (NOW()-5184000)выдало всех пользователей Id и где пропуски дапустим идет 11 и сразус 15,то поменял их по очереди по порядку.Все поменялись но и сообщения получились авторы другиеПоменял все иды сообщений,вроде все стало совпадать,но ibf_members_converge так и осталось следущий пользователь будит с 620 идом.Чето там похимичил и изминил,что следущий будит идти с ид 501Но получилась таблица ibf_members_converge пуста и все предыдущие пользователи 500 не могут зайти на форумХорошо хоть перед этим всем, бекап сделал Пришлось востанавливать и работа пошла на смарку вся Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Пришлось востанавливать и работа пошла на смарку вся Можно при регистрации новых пользователей добавить проверку незанятых айдишников, и если есть такой, прописывать его принудительно. Но делать этого не следует. При удалении пользователя могли остаться "хвосты", и при получении чужого номера новым пользователем, эти "хвосты" ему унаследуются.Не проверял, удаляются ли ПМ-ки при удалении пользователя, или остаются висеть в базе... Сообщения вроде бы пересчитываются на гостевой "ноль"... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Док Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Я сам заходил под ником удоляющиго и удолял ПМ все и его сообщения есле были.Просто поставил мод Move Inactive Members и он выбрал всех по последниму посещению и перевел их в другую группу,а пока его настраевал им отправил раза три письма в ПМ автоматом этот мод.Кто зашел,то тех перевело автоматом в пользователи опять,а кто не зашел,то сперва удалил их содержимое,а потом и самих.Но у меня их не много было штук 10-15.Забаялся ,что ПМ остануться в БД после удаления,вот и решил их сразу удалитьМожно будит попробовать при следущем удаление и посматреть остаеться или нет FatCatА вот посматрел,что ид идет не попарядку и теперь же получаеться там есть дыры или я ошибаюсь ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Есть дырки и что? Боян, в поиске десяток тем про это. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Док Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Я уже почти все просматрел эти темы А сейчас мысль осенила,про эти дырки,это же наверное плохо или без разницы Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Для форума и MySQL это пофигу. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Дырки в id'шниках это просто ужасно!!! Они заховают ваш моск и моск пользователей. Спасайтесь! Удаляйте форумы! Сжигайте сервера! Через дырки в матрице поимеют вас во все дырки! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Док Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Мне вот просто интересно с форумом покапаться и изучить его Но есле бы он считал как положенно без дыр,то был бы счаслив вообще Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Nonamers Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 >Мне вот просто интересно с форумом покапаться и изучить еготут изучать надо не его, а MySQL + PHP Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Но есле бы он считал как положенно без дыр,то был бы счаслив вообщевообще положено считать в двоичной системе... 01001101 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 Прочел в посты в теме хотел про автоинкермент вякнуть и про индексное поле, но не буду.Просто поржу Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Док Опубликовано 23 Марта 2008 Жалоба Поделиться Опубликовано 23 Марта 2008 >Мне вот просто интересно с форумом покапаться и изучить еготут изучать надо не его, а MySQL + PHPЯ его быстрей так пайму и научюсь методом тыка,чем по умному Вот репу 4.6.2 методом тыка,а всетаки сделал и она работает,даже коды подставлял методом тыка,но как не странно работает все .Это молодым нужно учить MySQL + PHP,а я все по старинки,ломиком ,да мантировкой И так я многому научился,владея 5 месецев форумом,а раньше в клавишах путался на компе,а сейчас мод любой могу поставить себе.Главное что бы он пашел,а то как репу ставил месяц Ладно, да простят меня модеры за флуд А вот кто просто в староне смееться,то зря.Лудше бы какуюнибуть программу написали,типа Репы 4.6.2,а то у меня там с профилем не совсем гладко,а коды замучался подставлять уже Но есле бы он считал как положенно без дыр,то был бы счаслив вообщевообще положено считать в двоичной системе... 01001101Есле бы я понимал о чем это вы.Вот есле бы как перебрать на машине движок,то я бы вам расказал,а тут очень сложно все,даже незнаю,что такое синтаксы.Когда мне пишет у вас ошибка в вашем синтаксе.Есле бы сказали,сделай так и так,вот такой код и у вас будит считать,как положено,то я бы так и сделал Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 24 Марта 2008 Жалоба Поделиться Опубликовано 24 Марта 2008 Это в смысле забить на автоинкремент по id, а записывать в таблицу time=time() и сортировать по нему при выборке.Это не хороший подход т.к. секунда - это достаточно долгое время для запросов и одновременно два запроса могут создать строку в таблице с одинаковым временем, что приведёт к ошибке дублирования констрэйнта. Угу.Но всё же если желание присваивать ID именно с помощью PHP, то вариант с time() на порядок менее проблематиченчем вытаскивание запросом последнего idзапрос не нужен, чтобы узнать инкрементный id. Его возвращает метод get_insert_id() драйвера IPB вызванный сразу же после инсерта в таблицу с автоинкрементом. А что касается дырок в id.. надоело уже об этом говорить. Фпоиск! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.