2009-05-13 6 views
0

PHP와 MySQL을 사용하여 간단한 뉴스 시스템을 만들고 싶습니다. 지금은 제대로 작동하는 게시물과 시스템을 가지고 있지만 문제가 하나뿐입니다. 대신 최신 뉴스 10 개를 보여주고 싶습니다. 그것은 가장 오래된 10 개의 뉴스를 보여줍니다.

제 질문은 : MySQL이 테이블의 맨 아래에서 결과를 반환하도록하는 방법이 있습니까? 아니면 처음에 게시물 수를 얻은 다음 마지막 10 개로 제한해야합니까? 여기

은 삽입 (제목과 텍스트는 탈출 시간이 시간(), 포스터는 아직 수행되지이다)이다MySQL이 테이블을 뒤로 돌려 줌

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


그리고 그것을 가져 오지 수 (addnews 에코 IT) :

$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']); 
} 

짧게 : 데이터베이스를 거꾸로 읽으려고합니다. 가능합니까?

+0

음 ... 주문 하시겠습니까? – Matt

답변

11

ORDER BY 절을 확인하십시오. 열을 기준으로 행을 오름차순 또는 내림차순으로 정렬 할 수 있습니다. 다음 쿼리는 10 개의 뉴스 항목을 시간순으로 내림차순으로 정렬하여 반환합니다.

SELECT * FROM news ORDER BY time DESC LIMIT 10 
+0

완벽하게 작동합니다. – user106546

2

간단합니다. SQL에 "ORDER BY"절을 추가하십시오.

SELECT * FROM news ORDER BY time DESC LIMIT 10 
+0

나중에 '시간'을 편집하면 ID 분류에 최신 뉴스 메시지가 표시되지 않습니다 ... – Ropstah

1

작성한 날짜순으로 정렬하려면 쿼리를 수정해야합니다.

SELECT * FROM news order by time DESC LIMIT 10 

과 같은 것이 좋습니다. Order by 절을 지정하지 않으면 결과가 반환되는 순서가 보장되지 않는다는 점에 유의해야한다고 생각합니다. 바로 지금, 당신은 오름차순으로 삽입 될 때까지 명령을 내리게됩니다. 그러나 항상 그렇다고 가정 할 수는 없습니다.

SELECT * FROM new ORDER BY id DESC LIMIT 10 
+1

테이블에 ID 열이 있다면 실제로 ID (오름차순) 암시 적 order by 절로. 하지만 그래, 그럴 필요 없어. – Jeff

0

은 ORDER BY 절을 사용하여 해당 ID를 가정

+0

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. – Jon

+0

_precisely_는 질문에 대한 답변을 제공합니다. –

+0

* 해결책을 구현하는 방법에 대한 설명이 없으면 ... – Jon

0

간단히 주문할 수 없습니까? 시간 기준 하한 10 미만?

+0

입력하는 데 걸리는 시간에 다섯 개의 다른 게시물과 세 개의 범프가 나타납니다. – Nate

+0

나는 그것이 나의 첫 번째 게시물이었던 것을 알고있다. 그리고 나는 대답을 얻는 속도에 충격을 받았다. – user106546

0

사용

SELECT * FROM news ORDER BY time DESC LIMIT 10 
0

또한 내가 믿는

SELECT TOP 10 FROM news ORDER BY time DESC 

를 사용할 수 있습니다. 하지만 'top'절이 SQL Server인지는 확실하지 않습니다.