The infinite page scroll you have seen on the social networking sites
– Facebook, Twitter or on e-commerce websites where the new content is
automatically loaded when scrolling down to the web page.
For implementing this functionality I am jQuery to detect page scroll
when the user reaches the end of the web page then send an AJAX request
to load new content.
Count the total number of rows and fetch first 3 records from MySQL Database table and create a layout.
Created two hidden fields –
Completed Code
From here fetch next 3 records from
Return a HTML string.
Completed Code
For finding whether scrollbar reaches to bottom or not using following method return value –
If
Completed Code
It will automatically load up content whenever the user reaches the bottom of the web page while the page scroll.
If you found this tutorial helpful then don't forget to share.
1. Table structure
I am usingposts
table.CREATE TABLE `posts` ( `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, `title` varchar(100) NOT NULL, `description` text NOT NULL, `link` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
2. Configuration
Create a new config.php file.
Completed Code
<?php $host = "localhost"; /* Host name */ $user = "root"; /* User */ $password = ""; /* Password */ $dbname = "tutorial"; /* Database name */ $con = mysqli_connect($host, $user, $password,$dbname); // Check connection if (!$con) { die("Connection failed: " . mysqli_connect_error()); }
3. HTML & PHP
I set the number of rows to fetch at a time to 3($rowperpage=3)
.Count the total number of rows and fetch first 3 records from MySQL Database table and create a layout.
Created two hidden fields –
- The
<input id='row'>
store current row position. - The
<input id='allcount'>
store total number of rows.
Completed Code
<div class="container"> <?php include "config.php"; // Row per page $rowperpage = 3; // counting total number of posts $allcount_query = "SELECT count(*) as allcount FROM posts"; $allcount_result = mysqli_query($con,$allcount_query); $allcount_fetch = mysqli_fetch_array($allcount_result); $allcount = $allcount_fetch['allcount']; // select first 3 posts $query = "select * from posts order by id asc limit 0,$rowperpage "; $result = mysqli_query($con,$query); while($row = mysqli_fetch_array($result)){ $id = $row['id']; $title = $row['title']; $content = $row['description']; $shortcontent = substr($content, 0, 160)."..."; $link = $row['link']; ?> <div class="post" id="post_<?php echo $id; ?>"> <h1><?php echo $title; ?></h1> <p> <?php echo $shortcontent; ?> </p> <a href="'.$link.'" target="_blank" class="more">More</a> </div> <?php } ?> <input type="hidden" id="row" value="0"> <input type="hidden" id="all" value="<?php echo $allcount; ?>"> </div>
4. PHP
Create a newfetch_data.php
file. Using this file when sending AJAX request from jQuery.From here fetch next 3 records from
posts
table according to $_POST['row']
value.Return a HTML string.
Completed Code
<?php // configuration include 'config.php'; $row = $_POST['row']; $rowperpage = 3; // selecting posts $query = 'SELECT * FROM posts limit '.$row.','.$rowperpage; $result = mysqli_query($con,$query); $html = ''; while($row = mysqli_fetch_array($result)){ $id = $row['id']; $title = $row['title']; $content = $row['description']; $shortcontent = substr($content, 0, 160)."..."; $link = $row['link']; // Creating HTML structure $html .= '<div id="post_'.$id.'" class="post">'; $html .= '<h1>'.$title.'</h1>'; $html .= '<p>'.$shortcontent.'</p>'; $html .= '<a href="'.$link.'" target="_blank" class="more">More</a>'; $html .= '</div>'; } echo $html;
5. CSS
.container{ width: 55%; margin: 0 auto; border: 0px solid black; padding: 10px 0px; } /* post */ .post{ width: 97%; min-height: 200px; padding: 5px; border: 1px solid gray; margin-bottom: 15px; } .post h1{ letter-spacing: 1px; font-weight: normal; font-family: sans-serif; } .post p{ letter-spacing: 1px; text-overflow: ellipsis; line-height: 25px; } /* more link */ .more{ color: blue; text-decoration: none; letter-spacing: 1px; font-size: 16px; }
6. jQuery
Addscroll
event handler on the window
to detect page scroll.For finding whether scrollbar reaches to bottom or not using following method return value –
- $(window).scrollTop() – This gives number of pixels the user has scroll the webpage.
- $(document).height() – Return height of browser viewport.
- $(window).height() – Return height of HTML document.
$(document).height() - $(window).height()
.var position = $(window).scrollTop(); var bottom = $(document).height() - $(window).height();
If
position == bottom
then finds next row value and if it is not greater than allcount
value then send AJAX request where pass row value as data
and on successful callback append response.Completed Code
$(document).ready(function(){ $(window).scroll(function(){ var position = $(window).scrollTop(); var bottom = $(document).height() - $(window).height(); if( position == bottom ){ var row = Number($('#row').val()); var allcount = Number($('#all').val()); var rowperpage = 3; row = row + rowperpage; if(row <= allcount){ $('#row').val(row); $.ajax({ url: 'fetch_details.php', type: 'post', data: {row:row}, success: function(response){ $(".post:last").after(response).show().fadeIn("slow"); } }); } } }); });
8. Conclusion
This is another type of pagination where the user doesn’t have to press any key or a button to load new content.It will automatically load up content whenever the user reaches the bottom of the web page while the page scroll.
If you found this tutorial helpful then don't forget to share.
0 Comments:
Post a Comment