2016-04-14 42 views
0

搜索特定课程后,结果将正确显示,但是一旦我更改了页面,它就会恢复为显示所有可用结果。我如何保留搜索字词结果?PHP分页删除搜索词并恢复显示所有结果,修复?

下面的代码

<?php 

$con = mysqli_connect("localhost", "root", "root", "courses"); 

// $total = mysqli_query($con, "SELECT count(title) as total")->fetch()['total']); 


if(isset($_GET['searchword'])){ 
$searchword = $_GET['searchword']; 
} 
else { 
$searchword = ""; 
} 

$result = mysqli_query($con, "SELECT count(title) FROM course WHERE title LIKE '$searchword%'"); 
$row = mysqli_fetch_row($result); 

// Total rows. 
$rowstotal = $row[0]; 

//pages 
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; 
$perPage = isset($_GET['per-page']) && $_GET['per-page'] <= 100 ? (int)$_GET['per-page'] : 10; 

$start = ($page > 1) ? ($page * $perPage) - $perPage : 0; 

$pages = $rowstotal/$perPage; 

$sql = "SELECT * FROM course WHERE title LIKE '%$searchword%' ORDER BY title ASC LIMIT {$start},{$perPage}"; 

$query = mysqli_query($con, $sql); 

$resultsText = "$rowstotal results"; 

$resultsList = ''; 

while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 
    $courseId = $row["id"]; 
    $courseAward = $row["award"]; 
    $courseName = $row["title"]; 
    $courseDetails = $row["summary"]; 
    $resultsList .= '<a href="course-page.php?id='.$courseId.'">'.$courseAward.' '.$courseName.'</a> <br>'.$courseDetails.'<br/>'; 
} 

mysqli_close($con); 

?> 







    <!DOCTYPE html> 
    <html lang="en"> 
    <head> 
    <title>Courses</title> 
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
    </head> 
    <body> 

    <nav class="navbar navbar-default navbar-static-top navbar-inverse"> 
     <div class="container"> 
     <div class="navbar-header"> 
      <a class="navbar-brand" href="#"> 
      <img alt="Napier" src=""> 
      </a> 
     </div> 
     </div> 
    </nav> 

    <div class="container"> 

     <!-- Search --> 
     <form method="GET"> 
      <input type="text" class="form-control" name="searchword" placeholder="Search" value="<?php echo $searchword ?>" style="width:30%;"><br> 
     </form> 

     <!-- Results --> 
     <div class="results"> 
      <p></p> 
      <p>Showing <?php echo $perPage; ?> of <?php echo $resultsText; ?></p> 
      <p id="content"><?php echo $resultsList; ?></p> 
     </div> 
     <div class="pagination"> 
      <?php for($x = 1; $x <= $pages; $x++): ?> 
       <a href="?page=<?php echo $x; ?>&per-page=<?php echo $perPage; ?>"<?php if($page === $x) { echo ' class="selected"'; } ?>><?php echo $x; ?></a> 
      <?php endfor; ?> 
     </div> 


    </div> 

    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.3.min.js"></script> 

    </body> 
</html> 
+1

你需要搜索词解析到其他页面,无论是在他的网址或通过会话。 – 2016-04-14 22:36:05

回答

3

你的网页链接不保留searchword参数。更改此:

<a href="?page=<?php echo $x; ?>&per-page=<?php echo $perPage; ?>"<?php if($page === $x) { echo ' class="selected"'; } ?>><?php echo $x; ?></a> 

这样:

<a href="?page=<?php echo $x; ?>&per-page=<?php echo $perPage; ?>&searchword=<?php echo $searchword; ?>"<?php if($page === $x) { echo ' class="selected"'; } ?>><?php echo $x; ?></a> 
+1

也可能注意到你的代码易受跨站脚本攻击。 – Chris