2016-07-05 9 views
-2

Я пытаюсь реализовать разбиение на страницы с использованием PHP и MySQL, используя следующий код.Как реализовать разбиение на страницы с использованием PHP и MYSQL

я принял помощь от интернета и изменил код, но не в состоянии получить значение переменной страницы так код не работает эффективно

Можете ли вы предложить мне, где ошибка в программе или как я могу получить значение переменной страницы. Программа просто реализует разбиение на страницы с использованием PHP и MYSQL db. код выглядит следующим образом.

<html> 

<head> 
    <title>Paging Using PHP</title> 
</head> 

<body> 
    <?php 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = 'root123'; 

    $rec_limit = 10; 
    $conn = mysql_connect($dbhost, $dbuser, $dbpass); 

    if(! $conn) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db('test_db'); 

    /* Get total number of records */ 
    $sql = "SELECT count(cinno) FROM register_data "; 
    $retval = mysql_query($sql, $conn); 

    if(! $retval) { 
     die('Could not get data: ' . mysql_error()); 
    } 
    $row = mysql_fetch_array($retval, MYSQL_NUM); 
    $rec_count = $row[0]; 

    if(isset($_GET{'page'})) { 
     $page = $_GET{'page'} + 1; 
     $offset = $rec_limit * $page ; 
    }else { 
     $page = 0; 
     $offset = 0; 
    } 

    $left_rec = $rec_count - ($page * $rec_limit); 
    $sql = "SELECT cinno ". 
     "FROM register_data ". 
     "LIMIT $offset, $rec_limit"; 

    $retval = mysql_query($sql, $conn); 

    if(! $retval) { 
     die('Could not get data: ' . mysql_error()); 
    } 

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { 
     echo "Cin No :{$row['cinno']} <br> "; 

    } 

     echo "$page"; 
    if($page > 0) { 
     $last = $page - 2; 
     echo "<a href = \"$_PHP_SELF?page = $last\">Last 10 Records</a> |"; 
     echo "<a href = \"$_PHP_SELF?page = $page\">Next 10 Records</a>"; 
    }else if($page == 0) { 
     echo "<a href = \"$_PHP_SELF?page = $page\">Next 10 Records</a>"; 
    }else if($left_rec < $rec_limit) { 
     $last = $page - 2; 
     echo "<a href = \"$_PHP_SELF?page = $last\">Last 10 Records</a>"; 
    } 

    mysql_close($conn); 
    ?> 

    </body> 
</html> 
+0

удалите пробелы в 'page = $ page' в своем URL-адресе. Кто-то еще, вероятно, скажет вам не использовать mysql, а mysqli. Слушай их. – Solarflare

+0

Вы отметили вопрос с помощью тегов 'php-5.5',' php-5.6' и 'php-7', поэтому имейте в виду, что функции' mysql_xxx() ', которые вы используете в вашем коде, устарели в версии 5.5 и 5.6, и полностью удалены из языка в PHP 7.0. Вам нужно будет узнать о библиотеке PDO вместо этого и переписать свой код, используя это. – Simba

+0

Кроме того, '$ _GET {'page'}' - неправильный синтаксис. '$ _GET' - это массив, поэтому используются квадратные скобки, а не фигурные скобки. – Simba

ответ

0

$_PHP_SELF звучит неправильно; Вы должны использовать $_SERVER['PHP_SELF'] или в в строках ${_SERVER['PHP_SELF']}

1

Я cheked последнее условие страницы, находя $total_page, а затем сравнивая $page == $total_page. $left_rec метод не подходит все время.

// $left_rec = $rec_count - ($page * $rec_limit); not always give correct result 
     $total_page = ceil($rec_count/$rec_limit); 

ceil() функция PHP, которая возвращает следующий высокое integer значение по округлению. для получения более подробной информации читайте http://php.net/manual/en/function.ceil.php

Также у вас есть пробелы в запросе строки Вот почему вы не можете получить значение страницы и вам не нужно использовать $_PHP_SELF вы можете просто написать

echo "<a href = '?page=$page'>Next 10 Records</a>"; or echo "<a href = 'index.php?page=$page'>Next 10 Records</a>"; if the code is in index.php 

// использовать полный код этого

<html> 

<head> 
    <title>Paging Using PHP</title> 
</head> 
<body> 
    <?php 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = 'root123'; 
    $rec_limit = 10; 
    $conn = mysql_connect($dbhost, $dbuser, $dbpass); 

    if(!$conn) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db('test_db'); 

    /* Get total number of records */ 
    $sql = "SELECT count(cinno) FROM register_data"; 
    $retval = mysql_query($sql, $conn); 

    if(!$retval) { 
     die('Could not get data: ' . mysql_error()); 
    } 
    $row = mysql_fetch_array($retval, MYSQL_NUM); 
    $rec_count = $row[0]; 

    if(isset($_GET['page'])) { 
       $page = $_GET['page']; 
     $offset = $rec_limit * ($page - 1); 
    }else { 
     $page = 1; 
     $offset = 0; 
    } 

     // $left_rec = $rec_count - ($page * $rec_limit); not always give correct result 
     $total_page = ceil($rec_count/$rec_limit); 
     $sql = "select cinno from register_data LIMIT $offset, $rec_limit"; 
    $retval = mysql_query($sql, $conn); 

    if(! $retval) { 
     die('Could not get data2: ' . mysql_error()); 
    } 

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { 
     echo "Cin No :{$row['cinno']} <br> "; 

    } 

     if($page >1 && $page != $total_page) { 
      $last = $page - 1; 
      $page++;    
      echo "<a href = '?page=$last'>Last 10 Records</a> |"; 
      echo "<a href = '?page=$page'>Next 10 Records</a>"; 
     }else if($page == 1) { 
      $page++; 
      echo "<a href = '?page=$page'>Next 10 Records</a>"; 
     }elseif($page == $total_page){ 
       $last = $page - 1; 
       echo "<a href = '?page=$last'>Last 10 Records</a>"; 
      } 



    mysql_close($conn); 
    ?> 

    </body> 
</html> 

Также используйте MySQLi или PDO (более безопасный);

+0

@adesh singh Попробуйте это и дайте мне знать, что это работает или нет – user1234