All pastes #635258 Raw Edit

Stuff

public text v1 · immutable
#635258 ·published 2007-07-26 23:07 UTC
rendered paste body
function pager($query, $start = 0, $limit = 25) {
		if (!is_numeric($start)) {
			$start = 0;
		}
		if (!is_numeric($limit)) {
			$limit = 25;
		}
		//SQL_CALC_FOUND_ROWS
		if (strpos (strtoupper($query), 'SQL_CALC_FOUND_ROWS') === false) {
			$pattern = '/^SELECT (.*?) FROM/i';
			$replacement = 'SELECT SQL_CALC_FOUND_ROWS $1 FROM ';
			$query = preg_replace($pattern, $replacement, $query);
		}
		$rows = $this->get_results_assoc($query." LIMIT $start,$limit");
		$total = $this->get_var("SELECT FOUND_ROWS()");
		$get = $_GET;
		$pages = ceil($total / $limit);
		if ($pages > 1) {
			$next = '';
			$prev = '';
			ob_start();
			?>Page:<select onChange="document.location=this.options[this.selectedIndex].value;"><?php
			for ($i=0;$i<$pages;$i++) {
				?><option value="<?php
					$get['start'] = $i * $limit;
					$get['limit'] = $limit;
					echo $_SERVER['PHP_SELF'].'?'.http_build_query($get);
				?>"<?php
					if ($_GET['start'] == $get['start']) {
						echo ' selected';
						if ((($i+1) * $limit) < $total) {
							$get['start'] = (($i+1) * $limit);
							$next = '<a href="'.$_SERVER['PHP_SELF'].'?'.http_build_query($get).'">[next]</a>';
						}
						if (($i-1) * $limit >= 0) {
							$get['start'] = (($i-1) * $limit);
							$prev = '<a href="'.$_SERVER['PHP_SELF'].'?'.http_build_query($get).'">[prev]</a>';
						}
					}
				?>><?php
					echo ($i+1);
				?></option><?php
			}
			?></select><br /><?php
			if (!$prev) {
				$prev = '<span style="color: #999;">[prev]</span>';
			}
			if (!$next) {
				$next = '<span style="color: #999;">[next]</span>';
			}

			echo $prev.' '.$next.'<br />';
			$nav = ob_get_clean();
		}
		return array('nav' => $nav, 'rows' => $rows);


		/*
		list($total) = $this->get_row("SELECT COUNT(*) FROM users");
		$users = $this->get_results_assoc("SELECT * FROM users ORDER BY admin DESC, uname");
		foreach ($users as $user) {
			echo $user['uname'].'<br>';
		}
		*/
	}