这是我的引擎,
求哪位高手可以告诉我怎么加才会有分页?<?php
include 'database.php';function search_results($search) {
  $returned_results = array();
  $where = "";
  
  $search = preg_split('/[\s]+/', $search);
  $total_keywords = count($search);
  
  foreach($search as $key=>$keyword) {
    $where .= " `keywords` LIKE '%$keyword%' ";
if ($key != ($total_keywords - 1)) {
  $where .= " AND ";
}
  }
      
  $results = "SELECT `tittle`, `description`, `link` FROM `search` 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(
                         'tittle' => $results_row['tittle'],
                         'description' => $results_row['description'],
                         'link' => $results_row['link']
      );
}
    return $returned_results;
  
  }
  
}
?>

解决方案 »

  1.   

    SELECT `tittle`, `description`, `link` FROM `search` WHERE $where LIMIT $s, 10就是从 $s行起取得10行记录
    $s/10  就可以当做第几页
      

  2.   

    我大部分都不明白也不知道什么代码可以配合这引擎!
    可以给我|<< prev 1 2 3 4 5 6 7 8 9 10 next >>|好像这样的分页代码配合这引擎吗?
      

  3.   

    <?php
    include 'database.php';function search_results($search) {
      $returned_results = array();
      $where = "";
       
      $search = preg_split('/[\s]+/', $search);
      $total_keywords = count($search);
       
      foreach($search as $key=>$keyword) {
      $where .= " `keywords` LIKE '%$keyword%' ";
    if ($key != ($total_keywords - 1)) {
    $where .= " AND ";
    }
      }
       
    //唯一的改变就是下面
    // $pageNum  这是分页,比如第 1,2,3页,这个值由url传递的GET参数确定,默认是1;
     if( is_numeric( $_GET['pageNum'] ) && $_GET['pageNum'] >0 )
          $pageNum = $_GET['pageNum'];
      
    // $fooNum  表示截取数据从哪一行开始,这个是从0开始,就像数组一样所以还要减1;
    // $listNum 表示一页显示多少数据,默认10行,你自己改
    $listNum = 10;
    $fooNum = ( ( $pageNum-1) * $listNum ) - 1;
          
      $results = "SELECT `tittle`, `description`, `link` FROM `search` WHERE $where LIMIT $fooNum ,$listNum";
    // 结束,再要输出分页HTML的话  $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(
      'tittle' => $results_row['tittle'],
      'description' => $results_row['description'],
      'link' => $results_row['link']
      );
    }
      return $returned_results;
       
      }
       
    }
    ?>
    // 没看到你要在哪开始输出,url路径你要自己改
    <?php
    $prew = $pageNum>1 ? $pageNum-1 : 1;echo <<<html
      <a href="search.php?pageNum={$prew}">next</a>
    html; for ($i = 1; $i>10; $i++ )
     {
       echo <<<html
        <a href="search.php?pageNum={$i}">$i</a>
    html;
     }
    $next = $pageNum + 1;echo <<<html
      <a href="search.php?pageNum={$next}">next</a>
    html;?>
      

  4.   

    为什么不会显示数据资料呢? 跪求高手帮忙 (急要)!!!
    下面就是我的显示主页
    <?php include 'function.php'; ?>
    <form id="form1" name="form1" method="post" action="">
      <label for="textfield"></label>
      <input type="text" name="keywords" id="keywords" value="<?php echo $_POST['keywords']; ?>" />
      <label for="Submit"></label>
      <input type="submit" name="Submit" value="Search" id="Search" />
    </form>
    <?php
    if (isset($_POST['keywords'])) {
      $suffix = "";
      $search = mysql_real_escape_string(htmlentities(trim($_POST['keywords'])));
      $errors = array();
      
      if (empty($search)){
        $results[] = 'Please Type Your Search Words!';
      } else if (strlen($search)<0) {
        $errors[] = 'Your Word Minimun 1 Characters!';
      } else if (search_results($search) === false) {
        $errors[] = 'Your search for <b>'.$search.'</b> no results';
      }  if (empty($errors)) {
        $results = search_results($search);
        $results_num = count($results);
                                                                                                        
        $suffix = ($results_num !=1) ? 's' : '';
        
        echo '<p>Your search for <strong>', $search, '</strong> returned <strong>', $results_num, '</strong> result', $suffix, '</p>';
    ?>
    <?php   
    $prew = $pageNum>1 ? $pageNum-1 : 1;echo <<<html
      <a href="search.php?pageNum={$prew}">next</a>
    html; for ($i = 1; $i>10; $i++ )
     {
       echo <<<html
        <a href="search.php?pageNum={$i}">$i</a>
    html;
     }
    $next = $pageNum + 1;echo <<<html
      <a href="search.php?pageNum={$next}">next</a>
    html; 
        foreach($results as $result) {
          echo '<p> <strong>', $result['tittle'], '</strong> <br /> ', $result['description'], '... <br /> <a href="', $result['link'], '">', $result['link'], '</a> </p>';
        }  } else {
        foreach($errors as $error) {
      echo $error, '</br>';
    }
      } 
      
    }
    ?>
      

  5.   

    echo <<<html
      <a href="search.php?pageNum={$next}">next</a>
    html; 
        foreach($results as $result) {
          echo '<p> <strong>'. $result['tittle']. '</strong> <br /> '. $result['description']. '... <br /> <a href="'.$result['link']. '">'. $result['link']. '</a> </p>';
        }  } else {
        foreach($errors as $error) {
          echo $error.'</br>';
        }
      } 
      
    }
    ?>
    连接符号是.号,你的为什么都是逗号?
      

  6.   

    我也试过这办法,但是不知道还有什么漏洞! 请仔细看看!
    这是主页
    <?php include 'function.php'; ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>search engine</title>
    </head><body><form id="form1" name="form1" method="post" action="">
      <label for="textfield"></label>
      <input type="text" name="keywords" id="keywords" value="<?php echo $_POST['keywords']; ?>" />
      <label for="Submit"></label>
      <input type="submit" name="Submit" value="Search" id="Search" />
    </form><?php
    if (isset($_POST['keywords'])) {
      $suffix = "";
      $search = mysql_real_escape_string(htmlentities(trim($_POST['keywords'])));
      $errors = array();
      
      if (empty($search)){
        $results[] = 'Please Type Your Search Words!';
      } else if (strlen($search)<0) {
        $errors[] = 'Your Word Minimun 1 Characters!';
      } else if (search_results($search) === false) {
        $errors[] = 'Your search for <b>'.$search.'</b> no results';
      }  if (empty($errors)) {
        $results = search_results($search);
        $results_num = count($results);
                                                                                                        
        $suffix = ($results_num !=1) ? 's' : '';
        
        echo '<p>Your search for <strong>', $search, '</strong> returned <strong>', $results_num, '</strong> result', $suffix, '</p>';
    ?>
    <?php  
    $prew = $pageNum>1 ? $pageNum-1 : 1;echo <<<html
      <a href="search.php?pageNum={$prew}">next</a>
    html; for ($i = 1; $i>10; $i++ )
     {
       echo <<<html
        <a href="search.php?pageNum={$i}">$i</a>
    html;
     }
    $next = $pageNum + 1;echo <<<html
      <a href="search.php?pageNum={$next}">next</a>
    html;  
      foreach($results as $result) {
      echo '<p> <strong>'. $result['tittle']. '</strong> <br /> '. $result['description']. '... <br /> <a href="'.$result['link']. '">'. $result['link']. '</a> </p>';
      }  } else {
      foreach($errors as $error) {
      echo $error.'</br>';
      }
      }  
       
    }
    ?></body>
    </html>
    这是我刚试过的引擎!
    <?php
    include 'database.php';function search_results($search) {
      $returned_results = array();
      $where = "";
       
      $search = preg_split('/[\s]+/', $search);
      $total_keywords = count($search);
       
      foreach($search as $key=>$keyword) {
      $where .= " `keywords` LIKE '%$keyword%' ";
    if ($key != ($total_keywords - 1)) {
    $where .= " AND ";
    }
      }
       
     if( is_numeric( $_GET['pageNum'] ) && $_GET['pageNum'] >0 )
          $pageNum = $_GET['pageNum'];
      
    $listNum = 10;
    $fooNum = ( ( $pageNum-1) * $listNum ) - 1;
          
      $results = "SELECT `tittle`, `description`, `link` FROM `search` WHERE $where LIMIT $fooNum ,$listNum";  $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(
      'tittle' => $results_row['tittle'],
      'description' => $results_row['description'],
      'link' => $results_row['link']
      );
    }
      return $returned_results;
       
      }
       
    }
    ?>
    有哪位大大知道什么方法可以帮帮忙解决问题?
      

  7.   

        echo '<p>Your search for <strong>', $search, '</strong> returned <strong>', $results_num, '</strong> result', $suffix, '</p>';还有逗号。另:你打开错误提示,看是什么错误不行么?
      

  8.   

      while ($results_row = mysql_fetch_assoc($results)) {
      $returned_results[] = array(
      'tittle' => $results_row['tittle'],
      'description' => $results_row['description'],
      'link' => $results_row['link']
      );
    }
      return $returned_results;
       
      }
    return $returned_results; 改成直接输出 echo $returned_results 再看看
      

  9.   

    啊抱歉 $returned_results是数组来着,要用print_r()输出才行
      

  10.   

    在 mysql_query()后面的随便哪个地方加上个 echo mysql_error();
    也可能句法正确但没匹配到数据,慢慢调试吧你才入门三天就能这样很了不起了
      

  11.   

    我试了你教我的代码,之后就出这
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-11 ,10' at line 1
    要怎么办呢?
    另: 谢谢 你能这么指导我!
      

  12.   

    啊!是我的代码没写完整, $pageNum没写默认值1
    请在 function.php那修改下代码
     if( is_numeric( $_GET['pageNum'] ) && $_GET['pageNum'] >0 )
          $pageNum = $_GET['pageNum'];
          else
             $pageNum = 1;

      
    $listNum = 10;
    $fooNum = ( ( $pageNum-1) * $listNum ) - 1;
      

  13.   

     if( is_numeric( $_GET['pageNum'] ) && $_GET['pageNum'] >0 )
          $pageNum = $_GET['pageNum'];
          else
             $pageNum = 1; 

      
    $listNum = 10;
    $fooNum = ( ( $pageNum-1) * $listNum ) - 1;csdn的过滤不专业啊
      

  14.   

    学三天PHP 就弄分页...你大跃进得太快了。不是亩产1000公斤是亩产5000公斤...
      

  15.   

    放到myAdmin里去执行打印出来的sql 好了,大概是没有能匹配的数据
      

  16.   

    我是用mysql workbench软件输入数据库里,再说我用原本的引擎都能搜索到资料,但是就是不知道弄分页后就搜索不了资料!~~~~
      

  17.   

    没输出总该有错误吧
    我把你的贴的代码粘贴到eclipse上看了下,我用的定界符输出形式
    请确保所有 html; 后面不允许有任何字符包括空格
    再就没有发现什么错误,只能说有php的错误提示才能给你参谋
      

  18.   

    你开启的错误提示吗
    请把这行代码粘贴到你的页面最顶端
     ini_set('display_errors','On');  error_reporting(E_ALL); 程序能执行下去,就说明不是说明大问题,很轻松就可以解决
      

  19.   


    <?phpclass mysql
    {
    function __construct()
    {
    $this->conn = mysql_connect("主机","用户","密码");
    $this->query("SET NAMES 'UTF8'");
    }
    function query($sqlstr)
    {
    return mysql_query($sqlstr,$this->conn);
    }
    function select($sqlstr)
    {
    $query = $this->query($sqlstr);
    while($row = mysql_fetch_array($query,1))
    {
    $rows[] = $row;
    }
    return $rows;
    }
    function __destruct()
    {
    mysql_close($this->conn);
    }
    }$db = new mysql();$numResult = $db->select("SELECT COUNT(*) AS num FROM 表");
    $allNum = $numResult[0]['num'];
    $pageNum= 10;
    $pageAll= ceil($allNum/$pageNum);
    $pageNow= $_GET['page'] ? $_GET['page'] : 0;
    for($i=0;$i<$pageAll;$i++){
       echo '第'.$i.'页';
    }$dataResult = $db->select("SELECT * FROM 表 WHERE 条件 LINIT $pageNow,$pageNum");
    foreach($dataResult as $result)
    {
        echo $result['字段'];
    }?>参考一下