Заставить MySQL вернуть таблицу назад - PullRequest
0 голосов
/ 13 мая 2009

Я хочу сделать простую систему новостей, использующую PHP и MySQL, сейчас у меня есть рабочая почта и система чтения, но есть только одна проблема, я хочу, чтобы она показывала 10 последних новостей, но вместо этого она отображала 10 самых старых новостей. ,

Мой вопрос: есть ли способ заставить MySQL возвращать результаты из нижней части таблицы, или мне нужно сначала получить количество постов, а затем ограничить его до последних 10?

Вот вставка (заголовок и текст экранированы, а время - время (), плакат еще не готов):

mysql_query("INSERT INTO news (title, poster, text, time) VALUES ('$newstitle', '1', '$newstext', '$time')") or die(mysql_error());


И чтобы извлечь его (addnews повторяет его):

$myqr = mysql_query('SELECT * FROM news LIMIT 10') or die("Error running news query: ". mysql_error());
while($myres = mysql_fetch_array($myqr))
{
addnews($myres['id'], $myres['title'], "admin", date('l jS F Y - H:i:s', $myres['time']), $myres['text']);
}

Итак, коротко: я хочу прочитать базу данных задом наперед, это возможно?

Ответы [ 8 ]

11 голосов
/ 13 мая 2009

Ознакомьтесь с предложением ORDER BY . Позволяет сортировать строки по столбцу в порядке возрастания или убывания. Следующий запрос вернет 10 новостей, отсортированных по времени в порядке убывания.

SELECT * FROM news ORDER BY time DESC LIMIT 10
2 голосов
/ 13 мая 2009

Просто, просто добавьте предложение "ORDER BY" к вашему SQL, например,

SELECT * FROM news ORDER BY time DESC LIMIT 10
1 голос
/ 13 мая 2009

вам нужно изменить запрос для сортировки по дате его создания. что-то вроде

SELECT * FROM news  order by time DESC LIMIT 10

должно работать на вас. Я думаю, что стоит отметить, что если вы не укажете пункт Order by, порядок, в котором возвращаются результаты, не гарантируется. Прямо сейчас, вы получаете их заказ к тому времени, когда они были вставлены по возрастанию, однако вы не можете с уверенностью предположить, что так будет всегда.

0 голосов
/ 13 мая 2009

Вы также можете использовать

SELECT TOP 10 FROM news ORDER BY time DESC

Я верю. Однако не уверен, что предложение top относится только к SQL Server.

0 голосов
/ 13 мая 2009

использование

SELECT * FROM news ORDER BY time DESC LIMIT 10
0 голосов
/ 13 мая 2009

Не могли бы вы просто заказать по времени по убыванию до LIMIT 10?

0 голосов
/ 13 мая 2009

Используйте предложение ORDER BY.

0 голосов
/ 13 мая 2009

Предполагая, что id является первичным ключом:

SELECT * FROM new ORDER BY id DESC LIMIT 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...