2012-05-30 5 views
1

Сначала я сделал простую гостевую книгу, теперь хочу, чтобы последний комментарий появился на первом месте на сайте. Мой план состоял в том, чтобы сортировать строки из базы данных в порядке убывания, по дате или по идентификатору. Вот фрагмент кода:MySQL, ЗАКАЗАТЬ Не работает

mysql_query("SELECT * FROM `guestbook` ORDER BY `Date` DESC") or die("Mysql error: " . mysql_error()); 

Этот код не вызывает каких-либо ошибок, но комментарии отображаются как в первый раз. Я тоже скопировал код из phpMyAdmin, но результат тот же. Тип идентификатора - это, конечно, INT с auto_increment, а тип Date - VARCHAR (я сохранил дату и время в одной переменной).

Пожалуйста, помогите.

ответ

1

Надеюсь, вы знаете, что есть прекрасно используемое поле DATETIME или даже TIMESTAMP, которое возвращает отформатированные даты?

Это в стороне, это почти наверняка вызвано тем, что у вас есть формат, отличный от big-endian, для ваших дат.

Попробуйте ORDER BY id DESC вместо этого - это будет намного быстрее, поскольку это уникальный (предпочтительно первичный) ключ.

+0

Я пробовал это раньше ... Я не могу объяснить, почему этот код не работает ...:/спасибо! – Nino

+0

Прошу прощения, но «это не работает» не является полезным заявлением. Что происходит? –

+0

Прошу прощения ... Комментарии отображаются как первый раз, так же как и предложение в моем вопросе :( – Nino

1

Изменить столбец Date будет DATETIME тип колонки, и он будет сортировать правильно.

Сортировка по VARCHAR будет зависеть от формата, который вы сохранили.

+0

Я изменил это раньше, но тогда я становлюсь только нулями: 00/00/00 - 00:00:00 – Nino

+0

Даты, которые вы сохранили, должны быть в неправильном формате для прямого преобразования в DATETIME. Возможно, вам потребуется немного более привлекательный процесс для обновления таблицы - возможно, разбор поля VARCHAR и вставка правильно отформатированного DATETIME в новый столбец. После этого удалите текущий столбец Date и переименуйте новый, который вы только что создали, который имеет в нем правильные данные DATETIME.Вам также потребуется обновить любой код, который вставляет эти записи, чтобы использовать правильный формат DATETIME. Функция NOW() в MySQL упрощает вставку текущего времени. –

+0

Хорошо, спасибо, я попробую это через несколько часов, в 5 утра по утрам в Хорватии ... С наилучшими пожеланиями – Nino

1

Попробуйте это: SELECT * FROM guestbook ORDER BY DESC ID

вместо вашей даты, если вы хотите, чтобы ваш заказ дата правильно Убедитесь, что дата тип данных даты и времени.

С наилучшими пожеланиями

+0

Я пробовал это, но без особых усилий: (но спасибо за ответ! – Nino

+0

пожалуйста, разместите определение столбца .. :) – BizApps

+0

ALTER TABLE 'гостевая книга' ИЗМЕНИТЬ' ID' 'ID 'INT (3) NOT NULL AUTO_INCREMENT – Nino

Смежные вопросы