2012-05-22 3 views
1

Привет друзья Я хочу знать, как добавить разбивку на страницы в поисковой системе. Я пробовал столько раз, чтобы добавить разбивку на страницы в поисковой системе, но каждый раз, когда я терпел неудачу. Есть ли кто-нибудь, кто изменить мой следующий код для добавления постраничной:поисковая система и pagination

index.php

<?php include 'func.inc.php'; ?> 

<html> 

<head> 
<title>Search</title> 
</head> 

<body> 

<h2> Search </h2> 

<form action="" method="POST"> 
     <p> 
      <input type="text" autocomplete="off" name="keywords" /> <input type="submit" value="Search" /> 
     </p> 
</form> 
<?php 
if (isset($_POST['keywords'])) { 
$suffix = ""; 
$keywords = mysql_real_escape_string (htmlentities (trim($_POST['keywords']))); 

    $errors = array(); 

    if (empty($keywords)) { 
     $errors[] = 'Please enter a search term'; 
    } else if (strlen($keywords)<3) { 
     $errors[] = 'Your search term must be three or more character'; 
    } else if (search_results($keywords) === false) { 
     $errors[] = 'Your search for ' .$keywords. ' returned no result'; 
    } 

    if (empty($errors)) { 
     $results = search_results ($keywords); 
     $results_num = count ($results); 

     $suffix = ($results_num !=1) ? 's' : ''; 

     echo '<p> Your search for <strong>', $keywords,'</strong> returned <strong>',$results_num,'</strong> result',$suffix,'</p>'; 
     foreach($results as $result) { 
      echo '<p><strong><a href="',$result['url'],'">', $result['title'],'</a></strong> <br>', $result['description'],'...<br>', $result['url'],'</p>'; 
      } 

    } else { 
    foreach ($errors as $error) { 
     echo $error, '</br>'; 
    } 
     } 

    } 

?> 


</body> 
</html> 

func.inc.php

<?php 
include 'db.inc.php'; 

function search_results($keywords) { 
    $returned_results = array(); 
    $where =""; 

    $keywords = preg_split('/[\s]+/', $keywords); 
    $total_keywords = count($keywords); 

    foreach ($keywords as $key=>$keyword) { 
     $where .="`keywords` LIKE '%$keyword%'"; 
     if ($key != ($total_keywords - 1)) { 
     $where .= "AND"; 
     } 
    } 

    $results = "SELECT `title`, LEFT(`description`, 70) as `description`, `url` FROM `articles` WHERE $where"; 
    $results_num = ($results = mysql_query($results)) ? mysql_num_rows($results): 0; 

    if ($results_num === 0) { 
    return false; 
    } else { 

    while ($results_row = mysql_fetch_assoc($results)) { 
     $returned_results[] = array(
        'title' => $results_row['title'], 
        'description' => $results_row['title'], 
        'url' => $results_row['url'] 


     ); 
    } 

    return $returned_results; 
} 
} 

?> 

И у меня есть еще один вопрос, чтобы сделать кнопку закрытия в верхней части Div для закрытия.

ответ

3

Я бы изменить сигнатуру функции, чтобы указать номер страницы и количество результатов на странице:

function search_results($keywords,$pagenum,$resultsperpage) { 

, а затем внести изменения в SQL вытащить только результаты для данной страницы:

$startresult=($pagenum-1)*$resultsperpage; 
$results = "SELECT `title`, LEFT(`description`, 70) as `description`, `url` FROM `articles` WHERE $where LIMIT $startresult,$resultsperpage"; 

(предполагая, что вы бы нумерацию страниц вам, начиная с 1)

Тогда все, что вам понадобится список ссылок, чтобы позволить пользователям выбрать свою страницу. Обычно я использую переменную GET (searchpage.php?p=1), поэтому вам придется санировать ее так же, как вы это сделали с поисковыми запросами.

0

Пожалуйста, не помню Любит

<?php 
    include 'func.php'; 
    include 'config.inc.php'; 
    ?> 

    <form action="" method="POST"> 
      <p> 
       <input type="text" autocomplete="off" name="keywords" > <input type="submit" value="Search" /> 
      </p> 
    </form> 
    <?php 

    $suffix = ""; 
    $v=''; 

    if(isset($_POST['keywords'])){$v=$_POST['keywords'];} 
    else{ 
     if(isset($_GET['q'])){$v=$_GET['q'];} 

     } 

    $keywords = mysql_real_escape_string (htmlentities (trim($v))); 

     $errors = array(); 

     if (empty($keywords)) { 
      $errors[] = 'Please enter a search term'; 
     } else if (strlen($keywords)<3) { 
      $errors[] = 'Your search term must be three or more character'; 
     } else if (search_results($keywords) === false) { 
      $errors[] = 'Your search for ' .$keywords. ' returned no result'; 
     } 
     if (!($errors)) { 
      $results = search_results($keywords); 

      $results_num = count ($results); 
      $suffix = ($results_num !=1) ? 's' : ''; 

      echo '<p> Your search for <strong>', $keywords,'</strong> returned <strong>',$results_num,'</strong> result',$nom,'</p>'; 

      foreach($results as $result) { 

       echo '<p><strong><a href="',$result['message'],'">', $result['name'],'</a></strong> <br>', $result['id'],'...<br>', $result['message'],'</p>'; 

        } 

    if($pages>=1 && $page<=$pages){ 
    for($x=1;$x<=$pages;$x++){ 

    echo ($x==$page) ? '<strong><a href="?page='.$x.'&q='.$v.'" >'.$x.'</a></strong> ' : '<a href="?page='.$x.'&q='.$v.'" >'.$x.'</a> '; 
    } 
    } 
     } else { 
     foreach ($errors as $error) { 
      echo $error, '</br>'; 
     } 
      } 
    ?> 

func.in.php

<?php 

    function search_results($keywords) { 
    global $page,$start,$pages_query,$per_page,$pages,$returned_results,$total_keywords,$nom; 
     $returned_results = array(); 
     $where =""; 

     $keywords = preg_split('/[\s]+/', $keywords); 
     $total_keywords = count($keywords); 

     foreach ($keywords as $key=>$keyword) { 
      $where .="`message` LIKE '%$keyword%'"; 
      if ($key != ($total_keywords - 1)) { 
      $where .= "AND"; 
      } 
     } 


    $per_page=6; 
    $pages_query = mysql_query(' SELECT COUNT(`id`) FROM `paginate` ') or die(mysql_error()); 

    //$pages=ceil(mysql_result($pages_query,0)/$per_page); 

     $resultt = "SELECT * FROM paginate WHERE $where "; 
     $queryt =mysql_query($resultt) ; 
     $nom=mysql_num_rows($queryt); 
    $pages=ceil($nom/$per_page);  


    $page= (isset($_GET['page'])) ? (int)$_GET['page'] :1; 

    $start=($page - 1) * $per_page; 


     $results = "SELECT * FROM paginate WHERE $where LIMIT $start,$per_page "; 
     $results_num = ($results = mysql_query($results)) ? mysql_num_rows($results): 0; 



     if ($results_num === 0) { 
     return false; 
     } else { 

     while ($results_row = mysql_fetch_assoc($results)) { 
      $returned_results[] = array(
         'id' => $results_row['id'], 
         'name' => $results_row['name'], 
         'message' => $results_row['message'] 


      ); 
     } 

     return $returned_results; 
    } 
    } 

    ?> 
Смежные вопросы