2012-07-21 6 views
0

개인 웹 사이트를 만들고 있습니다. 블로그에 붙어 있습니다. 나는 페이지 당 5를 보여 주며, MySQL 테이블에있는 ID에 중단이 없으면 괜찮습니다.
그러나 블로그를 삭제할 수있는 기능이 있습니다. 모든 루프가 누락 된 ID를 포함하고 아무 것도 표시하지 않으므로 페이지 당 3 또는 4 개 밖에 없습니다. enter image description here행이 건너 뛰면 존재하지 않습니다. MySQL/PHP

내가 모든 코드를 보여 않을거야

(ID = 10 블로그가 삭제되었다)하지만, 여기에 몇 가지 있습니다.

$i = $blog_count-(($currentpage*$maxperpage)-$maxperpage); 
while ($i >$blog_count-(($currentpage*$maxperpage)-$maxperpage)-$maxperpage){ 
//render the blogs 
$i--; 
} 

$ blog_count는 테이블에있는 행 수와 같습니다. 나는 $ maxid 인 또 다른 변수를 가지고있다. 단순히 가장 큰 ID 번호입니다.

도움을 주시면 감사하겠습니다. 나는이 일을하는 법을 알아야한다는 느낌이 들지만 나는 혼란 스럽다.

편집 : 나는

$start = $currentpage*$maxperpage-$maxperpage; 
$query = "SELECT * FROM blogs ORDER BY id DESC LIMIT $start,$maxperpage"; 
$result=mysql_query($query) or die(mysql_error()); 
while ($blog = mysql_fetch_array($result)) 

에 내 코드를 변경 그리고 그것은 작동합니다. 고마워. 내가 제안

+0

현재 블로그 기사를 검색 할 수있는 SQL 쿼리는 무엇입니까? PHP에서 수행중인 작업 (존재하는 행을 건너 뛰는 작업)은 SQL 쿼리에서 확실히 수행 할 수 있습니다. – jolivier

+0

MySQL의 'limit' 절에 대해 알고 계십니까? – codingbiz

+0

게시 한 코드가 과도한 것처럼 보입니다. : s – craig1231

답변

0

확인 2 가지 ...

반환 된 결과의 양을 제한 할 MySQL의 LIMIT 절을 사용.

SELECT * FROM `table1` LIMIT 10; 

또는 행이 "삭제"하는 경우 itll는 여전히 데이터베이스에 있어야하므로, 결정 deleted 같은 다른 필드를 사용

하지만 활성화되지.

1

데이터베이스를 제대로 사용하지 않는 것 같습니다.

데이터베이스가 필요에 따라 필터링되고 정렬 된 행 모음을 반환하도록해야합니다. 일반적인 블로그 시나리오 (기사가 비공개/공개되지 않을 수있는 곳)에서는 데이터베이스에 활성 기사 모음을 날짜순으로 반환하도록 요청합니다. 기본적인 SQL을 읽고 스스로 호의를 베풀고 괜찮은 ORM (원시 SQL에서 당신을 격리시키는 쿼리를 쉽게 수행 할 수있는 데이터베이스 추상화 계층)을 사용하십시오.

이미 언급했듯이 페이지 매김을 수행하려는 경우 LIMIT을 사용하여 행의 하위 집합을 가져올 수 있습니다.

+0

날짜별로 정렬하는 것을 생각하고 있었지만, ID로 정렬하는 것이 더 쉽거나 똑같을 것이라고 생각했습니다. 정보 주셔서 감사합니다 –

0

다른 사람들이 언급했듯이 블로그 게시물의 임의 ID 필드에 의존해서는 안됩니다. 게시물을 데이터베이스에서 정렬 된 순서로 가져온 다음 루프로 출력하십시오. 여기에 당신이 시작하는 데 도움이되는 몇 가지 예제 코드입니다 :

$results = $connection->query("SELECT * FROM Posts LIMIT 5, 5 ORDER BY id DESC"); 
while ($row = $result->fetch_assoc()) 
{ 
//Pull data from the row and display it 
} 

그래서,이 코드에 관계없이 게시물이 삭제 된 것을의 데이터베이스에서 10 번째 포스트에 6을 가져옵니다. LIMIT의 첫 번째 매개 변수는 건너 뛸 행 수입니다 (첫 페이지의 경우 0, 두 번째 경우는 5 등). 두 번째 매개 변수는 최대 결과 수입니다 (이 값을 항상 5로 지정하려는 경우).

관련 문제