2016-08-21 5 views
0

Я довольно новичок в PHP. Я играю с подключением к базе данных sqlite, и я сделал это успешно. По какой-то причине моя разбивка на страницы не работает.Pagination in Php SQLITE

Значение $page не будет превышать 2. Может ли кто-нибудь помочь мне, я уверен, что это, вероятно, простая ошибка. (Таким образом, в настоящее время это не изменится с первой страницы к следующему.

A screenshot of the database (as it is currently)

<?php 
    try 
    { 
    //open the database 
    $db = new PDO('sqlite:client.db'); 

    //create the database 
    $db->exec("CREATE TABLE IF NOT EXISTS Client (id INTEGER PRIMARY KEY AUTOINCREMENT, first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(50), gender VARCHAR(50))"); 

$page = 1; 
if(!empty($_GET['page'])) { 
    $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT); 
    if(false === $page) { 
     $page = 1; 
    } 
} 

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    //something posted 

    if (isset($_POST['Previous'])) { 
     print 'current value of $page = ' . $page; 
     print "<br>"; 
     if($page <= 0) { 
      $page = 1; 
     }else { 
      $page = $page - 1; 
     } 
    } else if(isset($_POST['Next'])) { 
     print 'current value of $page = ' . $page; 
     print "<br>"; 
     $page = $page + 1; 
    } 
} 





// set the number of items to display per page 
$limit = 10; 

// build query 
$offset = ($page - 1) * $limit; 
if($offset <= 0) { 
    $offset = 0; 
} 
print '$page = ' . $page; 
print "<br>"; 
print '$offset = ' . $offset; 
    //now output the data to a simple html table... 
    print "<table border=1>"; 
    print "<tr><td>Id</td><td>First Name</td><td>Last Name</td><td>Age</td><td>Gender</td></tr>"; 
    $sql = "SELECT * FROM Client LIMIT " . $offset . "," . $limit; 

    $result = $db->query($sql); 
    //$rows = count($result); 
    //print $rows; 
    //checks if table has data 
    //$count = $result->fetchColumn(); 

    foreach($result as $row) 
    { 
     print "<tr><td>".$row['id']."</td>"; 
     print "<td>".$row['first_name']."</td>"; 
     print "<td>".$row['last_name']."</td>"; 
     print "<td>".$row['email']."</td>"; 
     print "<td>".$row['gender']."</td></tr>"; 
    } 


    print "</table>"; 
    print "<br>"; 
    //print "<button type=\"button\" name=\"button\"><< Previous </button>"; 
    //print "<button type=\"button\" name=\"button\">Next >></button>"; 
    print "<form class=\"\" action=\"\" method=\"post\">"; 
    print "<button type=\"submit\" name=\"Previous\">Previous</button>"; 
    print "<br><br><button type=\"submit\" name=\"Next\">Next</button>"; 
    print "</form>"; 

    // close the database connection 
    $db = NULL; 
    } 
    catch(PDOException $e) 
    { 
    print 'Exception : '.$e->getMessage(); 
    } 
?> 
+0

Вы отправляете переменную '$ page' в качестве параметра URL-адреса действия формы? Это должно быть на нем, так как именно там вы ожидаете найти его в следующий раз, когда будет отправлена ​​форма. т. е. '$ _GET ['page]' задается из параметров запроса URL. –

+0

Привет, Райан, Спасибо за ваш ответ. Я такой новичок в PHP, что не знаю, как это сделать. Я буквально только начинаю, но имею опыт работы на других языках программирования, любые советы или помощь будут оценены – InfiniteLoop

+0

'

ответ

1

Все заслуга Райана-Винсент помог мне решить эту проблему.

В принципе, я все работает, но имеет неправильный атрибут для действия формы.

Это единственное, что я изменил, и он отлично работал (это тег формы открытия в html, обратите внимание, что параметр url страницы получает свое значение из переменной страницы php.

print "<form class=\"\" action=\"?page=$page \" method=\"POST\">"; 

Надеюсь, что это поможет другим новичкам php.