php-crud/tutorial.php
2020-01-02 23:21:46 +07:00

90 lines
2.9 KiB
PHP

<?php
require_once('database.php'); //connect to your database in this file
define("NUMBER_PER_PAGE", 5); //number of records per page of the search results
/****
* Purpose: paginate a result set
* Precondition: current page, total records, extra variables to pass in the page string
* Postcondition: pagination is displayed
****/
function pagination($current_page_number, $total_records_found, $query_string = null)
{
$page = 1;
echo "Page: ";
for ($total_pages = ($total_records_found/NUMBER_PER_PAGE); $total_pages > 0; $total_pages--)
{
if ($page != $current_page_number)
echo "<a href=\"?page=$page" . (($query_string) ? "&$query_string" : "") . "\">";
echo "$page ";
if ($page != $current_page_number)
echo "</a>";
$page++;
}
}
echo "<h2>Search Members</h2>
<form action='{$_SERVER['PHP_SELF']}' method='post'>
<p>ID: <input type='text' name='id' /></p>
<p>Username: <input type='text' name='username' /></p>
<p>Email: <input type='text' name='email' /></p>
<p align='center'>
<input type='submit' name='submit' value='Search' />
</p>
</form>";
/**
* Display Search Results Below Here
**/
//load the current paginated page number
$page = ($_GET['page']) ? $_GET['page'] : 1;
$start = ($page-1) * NUMBER_PER_PAGE;
/**
* if we used the search form use those variables, otherwise look for
* variables passed in the URL because someone clicked on a page number
**/
$id = ($_POST['id']) ? $_POST['id'] : $_GET['id'];
$username = ($_POST['username']) ? $_POST['username'] : $_GET['username'];
$email = ($_POST['email']) ? $_POST['email'] : $_GET['email'];
$sql = "SELECT * FROM members WHERE 1=1";
if ($id)
$sql .= " AND id='" . mysql_real_escape_string($id) . "'";
if ($username)
$sql .= " AND username='" . mysql_real_escape_string($username) . "'";
if ($email)
$sql .= " AND email='" . mysql_real_escape_string($email) . "'";
//this return the total number of records returned by our query
$total_records = mysql_num_rows(mysql_query($sql));
//now we limit our query to the number of results we want per page
$sql .= " LIMIT $start, " . NUMBER_PER_PAGE;
/**
* Next we display our pagination at the top of our search results
* and we include the search words filled into our form so we can pass
* this information to the page numbers. That way as they click from page
* to page the query will pull up the correct results
**/
pagination($page, $total_records, "id=$id&username=$username&email=$email");
$loop = mysql_query($sql)
or die ('cannot run the query because: ' . mysql_error());
while ($record = mysql_fetch_assoc($loop))
echo "<br/>{$record['id']}) " . stripslashes($record['username']) . " - {$record['email']}";
echo "<center>" . number_format($total_records) . " search results found</center>";
pagination($page, $total_records, "id=$id&username=$username&email=$email");
?>