2010-04-26 4 views
0

이봐, 버튼을 클릭하면 페이지 매김 결과를 필터링하는 버튼 (링크)을 추가하고 싶습니다.이 페이지 네이션에 필터 버튼을 어떻게 추가합니까?

나는 (일반 및 프로그래밍) PHP에 새로 온 사람과 '자동차'와 내 매김 스크립트에서이 MySQL의 쿼리를 업데이트 클릭하면, 여기에 본 같은 버튼을 추가하고 싶습니다 : 당신으로

카테고리 자동차가 하드 코드 된 것을 볼 수 있습니다. 동적 인 것이 좋기 때문에 링크를 클릭하면 id 나 클래스가 쿼리의 카테고리 부분에 무엇이든 배치됩니다.

1 :

$record_count = mysql_num_rows(mysql_query("SELECT * FROM explore WHERE category='automotive'")); 

2 :

$get = mysql_query("SELECT * FROM explore WHERE category='automotive' LIMIT $start, $per_page"); 

이것은 내가 사용하고 전체 현재 PHP 페이지 매김 스크립트입니다 :

<?php 

    //connecting to the database 
    $error = "Could not connect to the database"; 
    mysql_connect('localhost','root','root') or die($error); 
    mysql_select_db('ajax_demo') or die($error); 

    //max displayed per page 
    $per_page = 2; 

    //get start variable 
    $start = $_GET['start']; 

    //count records 
    $record_count = mysql_num_rows(mysql_query("SELECT * FROM explore WHERE category='automotive'")); 

    //count max pages 
    $max_pages = $record_count/$per_page; //may come out as decimal 

    if (!$start) 
     $start = 0; 

    //display data 
    $get = mysql_query("SELECT * FROM explore WHERE category='automotive' LIMIT $start, $per_page"); 
    while ($row = mysql_fetch_assoc($get)) 
    { 
    // get data 
    $name = $row['id']; 
    $age = $row['site_name']; 

    echo $name." (".$age.")<br />"; 

    } 

    //setup prev and next variables 
    $prev = $start - $per_page; 
    $next = $start + $per_page; 

    //show prev button 
    if (!($start<=0)) 
      echo "<a href='pagi_test.php?start=$prev'>Prev</a> "; 

    //show page numbers 

    //set variable for first page 
    $i=1; 

    for ($x=0;$x<$record_count;$x=$x+$per_page) 
    { 
    if ($start!=$x) 
     echo " <a href='pagi_test.php?start=$x'>$i</a> "; 
    else 
     echo " <a href='pagi_test.php?start=$x'><b>$i</b></a> "; 
    $i++; 
    } 

    //show next button 
    if (!($start>=$record_count-$per_page)) 
      echo " <a href='pagi_test.php?start=$next'>Next</a>"; 

    ?> 

답변

0

예 2 링크/카테고리 :

<a href='script.php?category=automotive'>automotive</a> <a href='script.php?category=sports'>sports</a> 

내부이 script.php :

$category = mysql_real_escape_string($_GET['category']); 
$record_count = mysql_num_rows(mysql_query("SELECT * FROM explore WHERE category='$category'")); 
... 
$get = mysql_query("SELECT * FROM explore WHERE category='$category' LIMIT $start, $per_page"); 
+0

이런 종류의 작품들. 첫 번째 페이지로 이동하지만 [2]와 같은 다른 페이지 번호를 클릭하면 아무 것도 표시되지 않습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? – ClarkSKent

+0

nvm, 항목을 클릭하면 URL 뒤에 category = $ category &를 추가했습니다. 도와 주셔서 감사합니다! – ClarkSKent

0

편집 : 난 단지 그가 프로그래밍 새로운이었다 알리는 OP에 대한 응답으로이 응답을 기록했다. 좋은 위생은 태초에 매우 쉽게 습득되어 버릇이되거나, 나중에는 습관을 만들기가 매우 어렵습니다.

http://us2.php.net/manual/en/security.database.sql-injection.php

또한 데이터베이스 보안에 대한이 문서를 참조하십시오.

$start = mysql_real_escape_string($_GET['start']); 
settype($start, 'integer'); 
$category = mysql_real_escape_string($_GET['category']); 
$record_count = mysql_num_rows(mysql_query("SELECT * FROM explore WHERE category='%s'", $category)); 
... 
$get = mysql_query("SELECT * FROM explore WHERE category='%s' LIMIT %d, %d", $category, $start, $per_page); 

실용적인 경우에도 추가 보안 코드를 작성하는 것이 좋습니다. 데이터베이스의 기본 보안 규칙은 다음과 같습니다. 사용자 입력을 신뢰하지 말고 항상 생성 된 출력을 확인하십시오. 입력은 쿼리 문자열에서 발생하고 데이터베이스에 대해 실행되므로 필터링해야합니다.

+0

정보를 제공해 주셔서 감사 드리며,이를 명심하십시오. – ClarkSKent

+0

항상 보안 정보를 공유하게되어 기쁘게 생각하며 몇 년 동안 나를 압도합니다. 한 사람이 두통을 피하도록 도울 수 있다면, 나는 성공적이었습니다. – Gabriel

관련 문제