Pagination and search are essential features in web development, especially when displaying large sets of data. By combining the lightweight SQLite database with PHP, you can build a fast and efficient system for these tasks. This article walks you through the process using clear code examples.
First, you need to create a SQLite database and a table to store user data. Here's an example SQL command to create a basic users table:
CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER );
Now, let’s dive into the PHP code that handles user input, constructs the SQL query, and displays results:
// Get current page number and search keyword $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; // Calculate the offset for pagination $offset = ($page - 1) * 10; // Build SQL query $sql = "SELECT * FROM users"; if ($keyword) { $sql .= " WHERE name LIKE '%$keyword%'"; } $sql .= " LIMIT 10 OFFSET $offset"; // Execute the query $result = $conn->query($sql); // Display query results if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "ID: " . $row['id'] . ", Name: " . $row['name'] . ", Age: " . $row['age']; echo "<br>"; } } else { echo "No matching results found."; } // Calculate total pages $total = $conn->query("SELECT COUNT(*) FROM users")->fetch_row()[0]; $totalPages = ceil($total / 10); // Output pagination links for ($i = 1; $i <= $totalPages; $i++) { echo "<a href='?page=$i'>$i</a> "; }
To allow users to input keywords and search, add the following simple HTML form to your frontend:
<form action="" method="GET"> <input type="text" name="keyword"> <input type="submit" value="Search"> </form>
This PHP and SQLite solution provides a basic yet functional framework for pagination and search. For more advanced applications, consider implementing the following improvements:
This guide is ideal for small-scale projects, prototypes, or learning environments. It serves as a solid foundation that can be expanded with more complex logic as needed.