2012-12-13 3 views
1

Я довольно новичок в OOP и PDO и не смог понять, как показать результаты MYSQL по страницам (например, 10 на страницу). Что было бы лучшим способом сделать это?PHP + MYSQL Pages - OOP и PDO

public function getResults() { 
    try { 

     $con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
     $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     $sql = "SELECT * FROM table ORDER BY id DESC LIMIT 10"; 
     $result = $con->query($sql); 

     while($row = $result->fetch(PDO::FETCH_ASSOC)) { 
     $msg_id = $row['id']; 
     echo '<div id="results">' .$msg_id. '</div>'; 
     } 

     $con = null; 

    }catch(PDOException $e) { 

    echo $e->getMessage(); 

    } 

} 

} 
+1

Вы должны искать 'pagination', это немного широка и это не связано с PDO или ООП. – jeroen

+0

Попытайтесь добавить дополнительные параметры к функции 'getResults()', а дополнительные параметры будут '$ start',' $ count' – Deepak

+0

Возможный дубликат [PHP PDO bindValue в LIMIT] (http://stackoverflow.com/questions/2269840/PHP-PDO-bindvalue-в-пределе) – Barmar

ответ

0

Это похоже на хорошее начало. Чтобы получить следующий набор результатов, вы должны использовать это заявление:

SELECT * FROM table ORDER BY id DESC LIMIT 10, 10 

Это вернет вам результаты 11 до 20.

В целом, вы хотели бы иметь параметр GET, что позволяет показать любой набор:

http://mywebsite.com/mypage.php?set=1

вы бы затем построить запрос динамически на основе заданного числа:

$sql = sprintf("SELECT * FROM table ORDER BY id DESC LIMIT %s, 10", $con->quote($_GET['set'] - 1)*10)); 

Часть о цитировании очень важна, так как она защищает вас от SQL-инъекций (вы можете найти ее для получения дополнительной информации).

0

Попробуйте добавить дополнительные параметры функции getResults() и дополнительные параметры были бы $start, $count, а затем использовать эти переменные в запросе

public function getResults($start, $count) { 
    try { 

     $con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
     $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $query = $con->prepare("SELECT * FROM table ORDER BY id DESC LIMIT :start, :count"); 
     $query->bindValue(':start', $start); 
     $query->bindValue(':count', $count); 
     $query->execute(); 

     while($row = $query->fetch(PDO::FETCH_ASSOC)) { 
      $msg_id = $row['id']; 
      echo '<div id="results">' .$msg_id. '</div>'; 
     } 

     $con = null; 

    } catch(PDOException $e) { 
     echo $e->getMessage(); 
    } 

} 
0

Это, на мой взгляд, "за то, что он стоит «, это лучший класс разбивки на страницы, с которым я столкнулся. Вы можете реализовать его только с четырьмя строками кодов. Он установит ссылки на страницы сверху и снизу и позволит пользователю выбирать, сколько строк на странице.

Pagination class link