90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			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");
 | |
| ?>
 | 
