PHP и MySQL II

Ветер

Guest
PHP и MySQL II

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

ЗЫ: за запись и удаление записей из БД отвечают два разных скрипта. Оба устанавливают, а потом завершают соединение с MySQL через mysql_close().
 

Tigr

Новичок
Ветер что вы имеете ввиду под серединой таблицы?
 

Dallas

Guest
Все зависит от того, по чему ты упорядочиваешь. Тебя, походу, смутило визуальное представление данных. Насколько я понимаю, тебе надо ботать. А вообще - вдумайся в то, что тебе сказал Фанат. Мысли абстрактно.
 

Ветер

Guest
Я имею ввиду... Данные упорядочиваются по времени их занесения в БД... Т.е. 1 марта - первая запись, 2 марта - вторая...3 марта - третья... Если я удаляю запись от 2 марта, а потом вношу запись 4 марта, то она почему то размещается в таблице после 1 марта...

Хотя над словами фаната есть о чем подумать...
 

Фанат

oncle terrible
Команда форума
Ветер, запомни.
Данные упорядочиваются ТОЛЬКО при ЯВНОМ указании - при использовании оператора ORDER BY
во всех других случах данные никак не упорядочиваются
 

_RVK_

Новичок
Ветер переводя то что тебе уже сказали... mysql хранит данные в файлах. При удалении данных, запись не удаляется физически, а помечается как удаленная. При добавлении mysql добавляет новую запись на место удаленной. Поэтому тебе и кажется что данные идут непоппорядку. Что бы упорядочить данные, нужно использовать ORDER BY. Иначе mysql показывает данные как они есть в файле.
 

Ветер

Guest
Но существует же что-то типа внутреннего указателя в БД.. То, что указывается с помощью mysql_data_seek(). А данные в моем скрипте сортируются именно с помощью энтой хреновины...
 

Фанат

oncle terrible
Команда форума
ну и уродство...
каша в голове и уродство...

По порядку.
Но существует же что-то типа внутреннего указателя в БД..
ТЕБЕ УЖЕ ДЕСЯТЬ РАЗ СКАЗАЛИ, ЧТО НЕТ!!!
, что указывается с помощью mysql_data_seek().
mysql_data_seek() работает В ВЫБОРКЕ!
Не во всей базе, а в ВЫБОРКЕ, которую ты получил в запросе!
А выборку ты должен сортировать через ORDER BY!
О чем тебе уже сто раз сказали!
иначе - тебе уже тысячу раз сказали - НИКТО тебе НИКАКОГО порядка не гарантирует!
А данные в моем скрипте сортируются именно с помощью энтой хреновины...
Данные в твоем скрипте сорируются самым идиотским образом, которое только может выдумать человеческое воображение в состоянии белой горячки.

Выкини свою сортировку на помойку и сделай по-человечески.
 

_RVK_

Новичок
Ветер выполняя запрос SELECT ты получешь резултат его в памяти, а не непосредственно в таблице. Соответственно все функции PHP работают с тем что находится в памяти. Не путай таблицы, которые являются обычными файлами, и результаты запросов, которые хранятся в памяти. То что ты получаешь, зависит только от твоего запроса, а не от того как mysql хранит данные. Для того и придуман SQL, ято бы не зависеть от особенностей конкретной СУБД.
 

ForJest

- свежая кровь
Ветер
mysql_data_seek "работает" для данных, которые ты _уже получил_ в ответ на свой запрос. Т.е. если ты их выбрал в каком либо порядке, то этот "внутренний указатель" бегает только по ним. К данным, которые находятся в таблице этот указатель не имеет.
В целом, относительно к твоей задаче. Если ты хочешь чтобы у тебя данные упорядочивались по времени добавления используй ORDER BY.
К примеру, если поле называется date_of_creation
[sql]
SELECT * FROM my_table ORDER BY date_of_creation
[/sql]
 

Ветер

Guest
Всем спасибо... Все заработало... Тему мона закрывать... А ваще конечно теоретических знаний очень сильно не хватает....

-~{}~ 12.08.04 00:23:

А вам, Фанат, нужно быть терпимее к людям... Ты ж тоже родился не гением пхп-кодинга...

И еще раз всем спасибо...
 
Сверху