![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 4 Dołączył: 14.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem paginację do skryptu AMXBans. Problem polega na tym, że wyświetla się 10 stron, i gdy dojdę do 10, nie mogę otworzyć 11, bo nie wyświetlają się kolejne. Co zrobić, aby po dojściu do 10 strony automatycznie pokazywały się strony z przedziału 6-14?
Kod: Kod <?php
/** * PHPSense Pagination Class * * PHP tutorials and scripts * * @package PHPSense * @author Jatinder Singh Thind * @copyright Copyright (c) 2006, Jatinder Singh Thind * @link http://www.phpsense.com */ // ------------------------------------------------------------------------ class PS_Pagination { var $php_self; var $rows_per_site = 50; //Number of records to display per site var $total_rows = 0; //Total number of rows returned by the query var $links_per_site = 7; //Number of links to display per site var $append = ""; //Paremeters to append to pagination links var $sql = ""; var $debug = false; var $conn = false; var $site = 1; var $max_sites = 0; var $offset = 0; /** * Constructor * * @param resource $connection Mysql connection link * @param string $sql SQL query to paginate. Example : SELECT * FROM users * @param integer $rows_per_site Number of records to display per site. Defaults to 10 * @param integer $links_per_site Number of links to display per site. Defaults to 5 * @param string $append Parameters to be appended to pagination links */ function PS_Pagination($connection, $sql, $rows_per_site = 10, $links_per_site = 5, $append = "") { $this->conn = $connection; $this->sql = $sql; $this->rows_per_site = (int)$rows_per_site; if (intval($links_per_site ) > 0) { $this->links_per_site = (int)$links_per_site; } else { $this->links_per_site = 5; } $this->append = $append; $this->php_self = htmlspecialchars($_SERVER['PHP_SELF'] ); if (isset($_GET['site'] )) { $this->site = intval($_GET['site'] ); } } /** * Executes the SQL query and initializes internal variables * * @access public * @return resource */ function paginate() { //Check for valid mysql connection if (! $this->conn || ! is_resource($this->conn )) { if ($this->debug) echo "MySQL connection missing<br />"; return false; } //Find total number of rows $all_rs = @mysql_query($this->sql ); if (! $all_rs) { if ($this->debug) echo "SQL query failed. Check your query.<br /><br />Error Returned: " . mysql_error(); return false; } $this->total_rows = mysql_num_rows($all_rs ); @mysql_close($all_rs ); //Return FALSE if no rows found if ($this->total_rows == 0) { if ($this->debug) echo "Query returned zero rows."; return FALSE; } //Max number of sites $this->max_sites = ceil($this->total_rows / $this->rows_per_site ); if ($this->links_per_site > $this->max_sites) { $this->links_per_site = $this->max_sites; } //Check the site value just in case someone is trying to input an aribitrary value if ($this->site > $this->max_sites || $this->site <= 0) { $this->site = 1; } //Calculate Offset $this->offset = $this->rows_per_site * ($this->site - 1); //Fetch the required result set $rs = @mysql_query($this->sql . " LIMIT {$this->offset}, {$this->rows_per_site}" ); if (! $rs) { if ($this->debug) echo "Pagination query failed. Check your query.<br /><br />Error Returned: " . mysql_error(); return false; } return $rs; } /** * Display the link to the first site * * @access public * @param string $tag Text string to be displayed as the link. Defaults to 'First' * @return string */ function renderFirst($tag = 'Pierwsza') { if ($this->total_rows == 0) return FALSE; if ($this->site == 1) { return "$tag"; } else { return '<a href="' . $this->php_self . '?site=1&' . $this->append . '">' . $tag . '</a> '; } } /** * Display the link to the last site * * @access public * @param string $tag Text string to be displayed as the link. Defaults to 'Last' * @return string */ function renderLast($tag = 'Ostatnia') { if ($this->total_rows == 0) return FALSE; if ($this->site == $this->max_sites) { return ''; } else { return '<span class="site_link"> <a href="' . $this->php_self . '?site=' . $this->max_sites . '&' . $this->append . '">' . $this->max_sites . '</a></span>'; } } /** * Display the next link * * @access public * @param string $tag Text string to be displayed as the link. Defaults to '>>' * @return string */ function renderNext($tag = '...') { if ($this->total_rows == 0) return FALSE; if ($this->site < $this->max_sites) { return '<span class="site_link">'. $tag .'</span>'; } else { return ''; } } /** * Display the previous link * * @access public * @param string $tag Text string to be displayed as the link. Defaults to '<<' * @return string */ function renderPrev($tag = '<<') { if ($this->total_rows == 0) return FALSE; } /** * Display the site links * * @access public * @return string */ function renderNav($prefix = '<span class="site_link">', $suffix = '</span>') { if ($this->total_rows == 0) return FALSE; $batch = ceil($this->site / $this->links_per_site ); $end = $batch * $this->links_per_site; if ($end == $this->site) { //$end = $end + $this->links_per_site - 1; //$end = $end + ceil($this->links_per_site/2); } if ($end > $this->max_sites) { $end = $this->max_sites; } $start = $end - $this->links_per_site + 1; $links = ''; for($i = $start; $i <= $end; $i ++) { if ($i == $this->site) { $links .= $prefix . "$i" . $suffix; } else { $links .= '' . $prefix . '<a href="' . $this->php_self . '?site=' . $i . '&' . $this->append . '">' . $i . '</a>' . $suffix . ' '; } } return $links; } /** * Display full pagination navigation * * @access public * @return string */ function renderFullNav() { return $this->renderFirst() . ' ' . $this->renderPrev() . ' ' . $this->renderNav() . ' ' . $this->renderNext() . ' ' . $this->renderLast(); } /** * Set debug mode * * @access public * @param bool $debug Set to TRUE to enable debug messages * @return void */ function setDebug($debug) { $this->debug = $debug; } } ?> |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
W zasadzie masz dwie opcje:
1. Nauczyć się PHP i samemu poprawić gotowca 2. Stworzyć odpowiedni temat w dziale Giełda, gdzie ktoś za pewną sumę pieniędzy zrobi to za Ciebie Ten post edytował CuteOne 29.10.2012, 00:41:37 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 4 Dołączył: 14.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Było też trzecie wyjście, użyć innej klasy paginacji, dokładnie zebry.
Mimo wszystko dzięki za pomoc, a temat powinien pójść do zamknięcia. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 16:47 |