The alphabetical pagination searches the records according to the first character in a specific column.
You can either manually fix the characters from A-Z or use the database table column value to create the list.
In this demonstration, I list all available character from a field in the Table and show the total number of records with it. Filter the record whenever a character is being pressed from the list.
You don’t need to add A-Z characters manually the script will get the available characters from the database table and count total records available on that character
In this demonstration, I list all available character from a field in the Table and show the total number of records with it. Filter the record whenever a character is being pressed from the list.
1. Table structure
I am usingusers
table.CREATE TABLE `users` ( `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, `username` varchar(80) NOT NULL, `name` varchar(80) NOT NULL, `email` varchar(80) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
2. Configuration
Create a newconfig.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 and PHP
Show alphabetical list and whenever the user clicked on it then filter the record.- Create list of alphabets
Select the first character from the
name
column in the users
Table and count total records on a character.
On the bases of the result create
<li>
elements and add <a >
where use firstCharacter
to create source.- Alphabetical search
Use
Completed Code$_GET['char']
value to create the SELECT
query and list records.<div id="content"> <?php include("config.php"); ?> <!-- Alphabets Sort --> <ul class="sort"> <?php echo '<li ><a href="index.php" '; if( !isset($_GET['char']) ){ echo ' class="active" '; } echo ' >All</a></li>'; // Select Alphabets and total records $alpha_sql = "select DISTINCT LEFT(name , 1) as firstCharacter, ( select count(*) from users where LEFT(name , 1)= firstCharacter ) AS counter from users order by name asc"; $result_alpha = mysqli_query($con,$alpha_sql); while($row_alpha = mysqli_fetch_array($result_alpha) ){ $firstCharacter = $row_alpha['firstCharacter']; $counter = $row_alpha['counter']; echo '<li ><a href="?char='.$firstCharacter.'" '; if( isset($_GET['char']) && $firstCharacter == $_GET['char'] ){ echo ' class="active" '; } echo ' >'.$firstCharacter.' ('.$counter.')</a></li>'; } ?> </ul><br><br> <table width="100%" id="userstable" border="1" > <tr class="tr_header"> <th>S.no</th> <th>Username</th> <th>Name</th> <th>Email</th> </tr> <?php // selecting rows $sql = "SELECT * FROM users where 1"; if( isset($_GET['char']) ){ $sql .= " and LEFT(name,1)='".$_GET['char']."' "; } $sql .=" ORDER BY name ASC"; $result = mysqli_query($con,$sql); $sno = 1; while($fetch = mysqli_fetch_array($result)){ $name = $fetch['name']; $username = $fetch['username']; $email = $fetch['email']; ?> <tr> <td align='center'><?php echo $sno; ?></td> <td align='center'><?php echo $username; ?></td> <td align='center'><?php echo $name; ?></td> <td align='center'><?php echo $email; ?></td> </tr> <?php $sno ++; } ?> </table> </div>
4. CSS
#userstable{ border-collapse: collapse; max-width: 800px; } /* Numeric */ .sort{ list-style: none; } .sort li{ float: left; border: 1px solid #000; padding: 5px 7px; margin-right: 10px; border-radius: 3px; } .sort li a{ text-decoration: none; color:black; } .active{ color: red !important; }
5. Conclusion
The user can browse the records according to the first character within the specific column.You don’t need to add A-Z characters manually the script will get the available characters from the database table and count total records available on that character
0 Comments:
Post a Comment