Reputation: 105
How do I ensure that my page could store up to 3 results that I've gotten from database per page? I will be retrieving some values from the previous page via the html link, and using it to retrieve results from the database. Then from the results, I hope to make them into pages so that won't have to scroll long. And on each page that is on, it would be disabled.
<?php
if (isset($_GET["w1"]) && isset($_GET["w2"])) {
$lt = $_GET["w1"];
$ln = $_GET["w2"];
$GLOBALS['id']= "";
}
$servername = "localhost";
$username = "root";
$password = "";
try {
$conn = new PDO("mysql:host=$servername;dbname=dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
echo "Connection failed: " . $e->getMessage();
}
function getAddress($lt, $ln) {
$result = json_decode(file_get_contents("https://maps.google.com/maps/api/geocode/json?key=". API_KEY ."&latlng=$lt,$ln"));
if ($result->status == 'OK') {
return $result->results[0]->formatted_address;
}
return 'Error';
}
try{
$db = $conn->prepare("Select ID from Table");
$db->execute();
echo "<div class='row'>";
while($row=$db->fetch(PDO::FETCH_OBJ)) {
$GLOBALS['id'] = $row->ID;
echo "<div class='col-sm-6 col-md-4'>";
echo "<h4 class='media-heading'>", $GLOBALS['id'] ,"</h4>";
echo "<span class='fa fa-map-pin'></span> ", getAddress($lt,$ln);
echo "</div>";
}
echo "</div>";
} catch (PDOException $e) {
echo "Error: ".$e;
}
?>
<!--Pagination-->
<div class="row">
<div class="col-xs-12">
<nav aria-label="Page navigation" class="text-center">
<ul class="pagination pagination-lrr">
<li>
<a href="#" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li class="active"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
Upvotes: 1
Views: 2640
Reputation: 10346
You'll have to modify your code a bit by adding 2 variables:
Next step would be to use the LIMIT option for the SQL query.
LIMIT start, amount
We will calculate the starting point using the currentPage & perpage variable.
$currentPage = (!isset($_GET['current_page']) || (int)$_GET['current_page'] == 0) ? 1 : $_GET['current_page'];
$perpage = 3; //or whatever you'd like
$limit = $perpage;
$start = ($currentPage-1)*$perpage;
$db = $conn->prepare("Select ID from Table LIMIT $start, $limit");
So for page 1:
start = (1-1)*3 = 0
limit = 3
Which means: get the first 3 items.
For page 2:
start = (2-1)*3 = 3
limit = 3
Which means: count 3 items and then get the 3 after to them
Upvotes: 2