Forum Webscript.Ru

Программирование => PHP => Тема начата: cosss от 31 Января 2004, 09:52:51

Название: последняя строка в табл
Отправлено: cosss от 31 Января 2004, 09:52:51
как мне до нее добраться, пробовал mysql_insert_id()
но видно это совсем не то что надо... всегда 0 возвращает...
Название: последняя строка в табл
Отправлено: Макс от 31 Января 2004, 14:42:57
cosss
учи теорию. Таблица это множество записей, а множества по определению неупорядочены. То есть в таблице нет первой, второй, последней записи.
Название: последняя строка в табл
Отправлено: FreeSpace от 31 Января 2004, 16:17:17
А чтобы упорядочить это множество, надо почитать про оператор ORDER BY в официальной документации (http://www.mysql.com/doc/ru/SELECT.html).

PS: Размещения одинаковых сообщений в разных разделах форума - это кросспостинг. А кросспостинг запрещен на всех цивилизованных форумах, в том числе и на этом.
Название: последняя строка в табл
Отправлено: cosss от 31 Января 2004, 18:29:27
FreeSpace
За кросспостинг извиняюсь, как сортировать табл. я знаю... Мне надо достать последнюю строку в таблице. Последнюю, в смысле при последнем INSERT запросе.
Название: последняя строка в табл
Отправлено: FreeSpace от 31 Января 2004, 20:09:17
cosss
В таком случае, нужно было завдавать вопрос "Как достать последнюю добавленную в таблицу запись?".
Тебе может помочь только mysql_insert_id и то при условии, что эта функция вызывается сразу после того, как был выполнен запрос INSERT.
Цитировать
Цитата из мана:
mysql_insert_id() returns 0 if the previous query does not generate an AUTO_INCREMENT value. If you need to save the value for later, be sure to call mysql_insert_id() immediately after the query that generates the value.

Если же ты хочешь просто так, без всяких инсертов, взять и узнать, какая запись была добавлена последней, то ИМХО это невозможно.
Выход в таком случае простой - изменить структуру базы данных.
Добавить например поле timestamp, в котором хранить время добавления записи, а потом получать последнюю запись так:
SELECT * FROM table ORDER BY timestamp DESC LIMIT 1
Название: последняя строка в табл
Отправлено: cosss от 31 Января 2004, 20:19:46
Чьерт побьери, это не входило в мои планы... Хотя с этой штукой у меня даже код уменьшится, пасиб.
Название: последняя строка в табл
Отправлено: Макс от 31 Января 2004, 20:49:27
вообще-то timestamp обновляется и при редактировании записи.
Так что могут быть баги, если записи редактируются
Название: последняя строка в табл
Отправлено: FreeSpace от 31 Января 2004, 23:10:21
Прошу прощения за неточность, я имел в виду не тип поля, его имя. Тип - INT.
Название: последняя строка в табл
Отправлено: cosss от 01 Февраля 2004, 01:12:59
Балин, че-то я туплю... Это ж ведь новости... Последняя по дате новость и будет та последняя которая мне нужна... Просто обратная сортировка по дате и LIMIT 1
Название: последняя строка в табл
Отправлено: Меняздесьдавнонет от 01 Февраля 2004, 10:28:57
всегда приятно, когда человек уходит с форума с правильным ответом и умножившимися знаниями.
при этом он не очень кочевряжится и настаивает на ответе именно в своей формулировке.
И при этом не находятся чудики, не будем показывать пальцем - кто, которые начинают отвечать на неправильный вопрос, вместо того, чтобы объяснить человеку, в чем он неправ и как сделать правильно.

cosss, чисто уточнить.
Ты до конца понял смый первый ответ Макса?
Что в базе нет первых и последних записей?

И что в случае новостей их надо сортировать именно по дате, а не по айди?
Название: последняя строка в табл
Отправлено: cosss от 04 Февраля 2004, 10:15:30
RomikChef
Да, я заметил как-то, что строки в таблице совсем не отсортированы, или отсортированы так как хочет мускуль. Но вот я задумался, а если я зохочу редактировать последнюю вообще затронутую хоть как-то запись, будь то UPDATE или INSERT, неужели это невозможно?
Название: последняя строка в табл
Отправлено: Меняздесьдавнонет от 04 Февраля 2004, 11:46:59
нет.
все критерии соритровки ты должен задавать сам.
принципиально ведь последняя добавленная не отличается от записи с самым большим числом в поле зарплата.
есть поле, по которому можно отсортировать - имеешь доступ.
непозаботился о таком поле - никаких "первых" и "последних"
Название: последняя строка в табл
Отправлено: cosss от 04 Февраля 2004, 12:47:42
А таймстамп меняется при UPDATE? Сорри не могу щас проверить.
Название: последняя строка в табл
Отправлено: Меняздесьдавнонет от 04 Февраля 2004, 13:13:11
сорри - это ты праввильно написал ;-)
меняется
но когда сможешь - обязательно почитай.

вкратце - таймстамп надо использовать ТОЛЬКО как меркер именно изменения записи. а не маркер создания записи или для хранения времени.
Название: Это снова я с тупыми вопросами
Отправлено: it4all от 04 Февраля 2004, 19:02:05
Я залез на этот топик,с единственной целью - спросить
можно ли мне еще задавать несколько вопросов сообществу этого форума? Если да то как,это зделать,
воспользоватся чужой темой или заново создать новую.

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

Если вы меня пошлете на хутор за новой коллекцией бабочек, то значит мне туда и дорога.
Название: последняя строка в табл
Отправлено: FreeSpace от 04 Февраля 2004, 19:11:45
it4all
Если твой вопрос подпадает под тему "последняя строка в таблице", то ты не просто можешь, ты должен задать его в этой теме, а не создавать новую.
Если же тема вопроса другая - создавай отдельную тему. По-моему это очевидно.
Название: последняя строка в табл
Отправлено: Меняздесьдавнонет от 04 Февраля 2004, 19:38:00
я думаю, что ради нескольких вопросов сообществу нало создавать новую тему по любому.