2015-01-21 3 views
0

조건 (조건에 따라)을 사용자가 배열 형태로 가져 와서 테이블에 인쇄했습니다. 하지만 배열에 최대 500 개의 데이터가 저장되어있을 때 페이지 당 인쇄 할 수 있습니다. 페이지 당 10 개의 항목이있는 데이터를 분할하여 인쇄 할 수 있습니까? 그렇다면 plz 도와주세요. 여기페이지 번호가있는 다른 페이지로 표 데이터 분할하기

$sql2=mysql_query("SELECT inc_patientName,inc_patientAge FROM incident_main WHERE ((inc_patientWard='$ward') AND(inc_date BETWEEN '$startdate' AND '$enddate'))ORDER BY inc_patientName "); 
$c=mysql_num_rows($sql2); 
while($row=mysql_fetch_array($sql2)){ 
$user[]=$row; 
} 

내가 테이블에 배열을 인쇄 :

<table align="center" border="1" cellpadding="10" cellspacing="1" width="500" class="tblListForm"> 
<tr class="tableheader"> 

<td>Patient Name</td> 
<td>Age</td> 
</tr><?php 

    foreach($user as $item) 
{ 
$inc_patientName=$item['inc_patientName']; 
$inc_patientAge=$item["inc_patientAge"]; 
?> 
<tr> 


<td><?php echo $item["inc_patientName"]; ?></td> 
    <td><?php echo $item["inc_patientAge"]; ?></td> 

</tr> 
<?php 
}?> 
</table> 

답변

1

첫째, 당신은 MySQL을 사용 할 수

이것은 데이터베이스에서 데이터를 가져 오는, 및 배열 사용자 []로 할당하는 내 코드입니다 LIMIT을 사용하여 페이지 매김을 만듭니다.

$page = $_GET["page"]; 
$start = 5 + 50 * ($page - 1); 
$rows = 50; 
$sql = "SELECT ... FROM table WHERE ... LIMIT $start, $rows"; 

이만이 선택 행 6-55 전체 결과에서 $page=1 경우. 실제 경우 $start은 없이 50*($page-1)이어야합니다. 5은 기능 LIMIT의 작동 방식을 보여주었습니다.

그런 다음 $start을 URL에 $_GET 매개 변수로 설정할 수 있습니다. 프런트 엔드에서

, 당신은이 같은 페이지 매김 링크를 만들 수 있습니다

<ul> 
    <li><a href="page.php?page=1">Page 1</li> 
    <li><a href="page.php?page=2">Page 2</li> 
</ul> 

그것은 PHP foreach를 사용하여 만들 수 esay입니다. 페이지를 표시하기 전에 페이지 수를 얻으려면 표에서 한 번 count (*)를 선택한 다음 50으로 나눈 값을 반올림 한 다음 반올림합니다.

그렇지 않으면 데이터베이스에서 500 개 이상의 데이터를 모두 얻고 프런트 엔드에 전달한 다음 플러그인 (예 :)을 사용하여 스타일을 지정합니다.

+0

나는 이것을 사용했지만 여전히 작동하지 않습니다. 문제는 내가 테이블을 클릭 한 다음에 만 diplays.even wen 페이지 1을 클릭 한 후에 버튼이 있다는 것입니다. 다음 페이지를 얻지 못합니다. 버튼을 다시 클릭해야합니다. plz help – jermina

+0

첫 번째 페이지에''을 추가 할 수 있습니다. 그러면 제출할 때 페이지 매개 변수도 다음 페이지로 전송됩니다. 귀하의 테이블에 몇 가지 게시물 인수가 수신 된 것 같아서 내 솔루션이 작동하지 않습니다. 또한 'page.php? page = 1 & param1 = a & param2 = b & param3 = c'처럼 url에 매개 변수를 추가 할 수 있습니다 ... – Bandon

+0

Thanx a ton! ! :) 나는 정말로 매우 감사하고있다! – jermina

0

LIMIT 및 OFFSET을 사용하도록 SQL을 변경하십시오.

먼저 당신은 단지 당신이 필요로 (10)의 다수에 의해 상쇄 사용하는 것이 각각 진행 요청에 그런

SELECT inc_patientName,inc_patientAge FROM incident_main WHERE ((inc_patientWard='$ward') AND(inc_date BETWEEN '$startdate' AND '$enddate'))ORDER BY inc_patientName LIMIT 10 

첫 번째 (10)를 얻을 수 LIMIT를 사용합니다. 10, 20, 30 등이 있습니다. 당신이 찾고있는 무엇

SELECT inc_patientName,inc_patientAge FROM incident_main WHERE ((inc_patientWard='$ward') AND(inc_date BETWEEN '$startdate' AND '$enddate'))ORDER BY inc_patientName LIMIT 10 OFFSET 10 
+0

다음 페이지는 어떻게받을 수 있습니까? – jermina

+0

세션에 OFFSET 값을 저장하거나 @Bandon으로 GET 또는 POST에 값을 보낼 수 있다고 제안했습니다. 그런 다음 새 페이지를 선택할 때마다 데이터베이스에 다시 액세스 할 수 있습니다. – sauv0168

1

매김 데이터베이스에서 반입되고 결과 집합의입니다.

백엔드에 저장된 많은 데이터가 조용한 경우 (몇 MB 정도) 일반적으로 한 번에 모두 가져 오는 것은 좋지 않습니다. 대신 은 처음에 제한된 레코드 집합 (행)을 가져오고 사용자가 다음 페이지로 이동하면 다른 레코드 집합을 가져옵니다.

그래서 대신

SELECT * from student 

같은 일을 당신이

SELECT * FROM student LIMIT start_from, num_rec_per_page; 

This하고 고려해야 할 것은 PHP와 MySQL과 here의 작동 예를 들어 매김에 좋은 튜토리얼입니다.

희망 하시겠습니까?

+0

내가 선택한 3 드롭 다운을 가지고 있고,이 제출 버튼을 누른 후에 출력으로 테이블을 얻습니다. 이제 문제는, 코드를 사용하고 난 후 에코 "".$i.""; 컨트롤이 해당 링크로 이동하지만 테이블이 표시되지 않습니다. 그 대신에 3 번의 드롭 다운리스트가 나타나며, 단지 누르기 버튼을 누르면 다음 페이지 값을 얻게됩니다. – jermina

관련 문제