Scripts

Pagina Nummers - Plug and Play - rc2

Een zeer makkelijk te implemeteren Pagina nummer script met de mogelijkheid om functies uit of in te schakelen bij het aanroepen van de functie. * Trekt het juiste aantal rows uit de database (returned in assoc een array) * Returned Pagina nummers (kan gedisabled worden) * Returned Prev / Next (kan gedisabled worden * Returned Dropdownbox voor het berichten per pagina (kan gedisabled worden) * Returned gebruikte variablen (kan gedisabled worden) Uitleg van de functie : Het makkelijkste is om um op deze manier aan te roepen. Je kan met de booleans functies uitschakelen zodat ie die dingen niet worden parsed en gereturned. 1 is returnen 0 is niet. Alles word in een array gereturned. $page_nummers = page_nummers(mysql table(input), sql_query(geen limit erachter zetten), page numbers(1/0), prev/next(1/0), dropdownbox(1,0), database data(1/0), used vars(1/0)); Voorbeeld van het ingebruik nemen : De volledige array die gereturned word (als alles op 1 staat): Het enigste wat je hoeft te doen is zorgen dat je een connectie naar je database hebt, voer hem je $mysql_table en een $sql query en hang de functie aan een variable. Kies wat je wil hebben door de booleans goed te zetten en hij is klaar voor gebruik. Ik heb um nog niet uitvoerig getest. Maar de tests die ik ermee gedaan heb kwamen zonder problemen uit de bus. Download hier Enjoy

pagina-nummers-plug-and-play-rc2
##    index.php (voorbeeld)    ###

<?php
#-->	setting enviroment (just for development)
error_reporting(E_ALL);
ini_set("display_errors", 1);


#-->	even zelf invullen
$mysql['host']  = "localhost";    #-->   localhost is meetstal goed
$mysql['user']  = "";                #-->   user om te connecten met mysql
$mysql['pass']  = "";                #-->   pass om te connecten met mysql
$mysql['db']    = "";                 #-->   database die je wil selecteren
$mysql['table'] = "";                 #-->   table die je wil gaan gebruiken


#-->	je query ( this is just an example - !!! GEEN LIMIT GEBRUIKEN HIER !!! )
$sql = "SELECT * FROM `".$mysql['table']."` ORDER BY `id` DESC";


#-->	loading file
require('pagenummers.php');


#-->	connecten met mysql en db selecteren
@mysql_connect($mysql['host'], $mysql['user'], $mysql['pass']) or die(mysql_error());	
mysql_select_db($mysql['db']) or die(mysql_error());


#-->	assigning pagenumbers
$page_nummers = page_nummers($mysql['table'], $sql, 1, 1, 1, 1, 0);


#-->	to see what it returns (debugging only)
//	view_array($page_nummers);


?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Page Numbers met dropdownbox</title>
<link rel="stylesheet" type="text/css" href="style.css">
<SCRIPT type="text/javascript" language="JavaScript">
<!--
function openURI(){
	var control = document.form.documentkeuze;
	if (control.options[control.selectedIndex].value != ' ') {
		location.href = control.options[control.selectedIndex].value;
	}
}
-->
</SCRIPT>
</head>
<body>
<center>
<table width="500" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="top" align="left">
<?php

	echo $page_nummers['page_numbers'];
	echo '<br><br>';
	echo $page_nummers['prev_next'];

?>
</td>
<td class="top" align="right">
<?php 

	echo $page_nummers['drop_down'];

?>
</td>
</tr>
</table>
<hr>
<br>
<?php

	#-->	uit de database getrokken data echo-en
	foreach ($page_nummers['db_data'] as $var)
	{ 
		echo ucfirst($var['message'])."<br>\n";
	}

?>
<br>
<hr>
<div class="bottom">
<?php 

	echo $page_nummers['prev_next'];

?>
</div>
</center>
<br>
<br>
</body>
</html>



##    pagenummers.php    ##

<?php

#-->	Main functie ( mysql_table, pagina_nummers, prev_next, dropdownbox, database_data, return_vars )
function page_nummers($mysql_table, $sql, $pgn, $p_n, $ddb, $dbd, $r_v)
{
	$msg 				 = "Currently disabled";
	$arr['vars']		 = make_vars($mysql_table);
	$arr['page_numbers'] = !$pgn ? $msg : build_pagenumbers($arr['vars']['pg'],  $arr['vars']['mpp'], $arr['vars']['tp'], $ddb, $arr['vars']['qs']);
	$arr['prev_next']	 = !$p_n ? $msg : build_prev_next  ($arr['vars']['pg'],  $arr['vars']['mpp'], $arr['vars']['tp'], $ddb, $arr['vars']['qs']);
	$arr['drop_down']	 = !$ddb ? $msg : build_drop_down  ($arr['vars']['mpp'], $arr['vars']['tm'],  $arr['vars']['qs']);
	$arr['db_data']		 = !$dbd ? $msg : fetch_data       ($arr['vars']['ofs'], $arr['vars']['mpp'], $mysql_table, $sql);
	if(!$r_v)			 unset($arr['vars']);

	return $arr;
}



#-->	checking and making some vars	
function make_vars($mysql_table)
{
	#-->	kijken of er (geldige) userinput in de url staat
	$vars['qs'] = query_string();
	$vars['pg'] = isset($_GET['pg']) && is_numeric($_GET['pg'])? $_GET['pg'] : 1;
	$vars['mpp'] = isset($_GET['mpp']) && is_numeric($_GET['mpp']) ? $_GET['mpp'] : 25;

	#-->	tellen van de records in de database
	$res = @mysql_query("SELECT count(*) FROM ".$mysql_table) or die(mysql_error());
	$vars['tm'] = @mysql_result($res, 0, 0) or die(mysql_error());

	#-->	aantal pagina nummers uitrekenen en offset voor de limit query bepalen	
	$vars['tp'] = ceil($vars['tm'] / $vars['mpp']);
	$vars['ofs'] = ($vars['pg'] -1) * $vars['mpp'];

	return $vars;
}



#-->	checking custom $_GET and building string of it
function query_string()
{
	$qs = '';
	foreach($_GET as $key => $value) {
		if($key != 'pg' && $key != 'mpp') {
			$qs .= '&amp;'.$key.'='.$value;
		}
	}
	return $qs;
}	



#-->	functie voor de previous en next knoppen voor de page nummers
function build_prev_next($pg, $mpp, $tp, $ddb, $qs)
{
	$mpp_c = $ddb ? '&amp;mpp='.$mpp : '';
	$str = '';
	if ($tp > 1) { 
		$str .= '<small>'."\n";
		$str .= ($pg > 1) ? '<a href="'.$_SERVER['PHP_SELF'].'?pg='.($pg - 1).$mpp_c.$qs.'" title="prev page">&laquo;&laquo;&laquo;</a>'."\n" : '<span style="color:#ccc;" title="prev page">&laquo;&laquo;&laquo;</span>'."\n";
		$str .= '&nbsp;<span style="color:#ccc;">--</span>&nbsp;'."\n";
		$str .= ($pg < $tp) ? '<a href="'.$_SERVER['PHP_SELF'].'?pg='.($pg + 1).$mpp_c.$qs.'" title="next page">&raquo;&raquo;&raquo;</a>'."\n" : '<span style="color:#ccc;" title="next page">&raquo;&raquo;&raquo;</span>'."\n";
		$str .= '</small>'."\n";
	}  
	return $str;
}



#-->	array met de options voor de dropdownbox
function build_drop_down($mpp, $tm, $qs)
{
	$str = "<form name=\"form\" style=\"margin:0px;\">\nBerichten per Pagina : \n<select name=\"documentkeuze\" onchange=\"openURI()\">\n";
	$arr = array(	$mpp.' '=> $mpp,
					'---'	=> $mpp,
					'10' 	=> '10',
					'25' 	=> '25',
					'50' 	=> '50',
					'75' 	=> '75',
					'100' 	=> '100',
					'125' 	=> '125',
					'150' 	=> '150',
					'all' 	=> $tm);
					
	foreach($arr as $key => $value)
	{
		$str .= '<option value="'.$_SERVER['PHP_SELF'].'?pg=1&amp;mpp='.$value.$qs.'" >&nbsp;'.$key.'</option>'."\n";
	}

	return $str . "</select>\n</form>\n";
}



#-->	building page nummers
function build_pagenumbers($pg, $mpp, $tp, $ddb, $qs)
{
	$mpp_c = $ddb ? '&amp;mpp='.$mpp : '';
	if($tp > 1) {
		if($tp > 7) {
			$start = $pg - 3;  
			$end = $pg + 3;  

			while($start < 1)	{  $start++;  $end++;  }	# geen page-nummers lager dan 1
			while($end > $tp)	{  $start--;  $end--;  }	# niet meer page-nummers dan het aantal totalPages dan dat we hebben

			if($pg > 4)
				$str_start = '<a href="'.$_SERVER['PHP_SELF'].'?pg=1'.$mpp_c.$qs.'" title="first page (1)">...</a>&nbsp;'."\n";
			if($pg < $tp - 3) 
				$str_end = '<a href="'.$_SERVER['PHP_SELF'].'?pg='.$tp.$mpp_c.$qs.'" title="last page ('.$tp.')">...</a>'."\n";
		}
		else  {
			$start = 1;
			$end = $tp;
		}
		
		$str = "\n";  

		for ($i = $start; $i <= $end; $i++)
		{   
			if($pg == $i)
				$str .= "<b>".$i."</b>&nbsp;\n";
			else 
				$str .= '<a href="'.$_SERVER['PHP_SELF'].'?pg='.$i.$mpp_c.$qs.'" title="page '.$i.'">'.$i.'</a>&nbsp;'."\n";
		}

		return "Pagina:\n<br>".(isset($str_start) ? $str_start : "") . $str . (isset($str_end) ? $str_end : "");   
	}
	else
		return '<span style="color:#ccc">no page numbers yet</span>';
}



#-->	data uit de database trekken (alleen het aantal records dat we nodig hebben)
function fetch_data($ofs, $mpp, $mysql_table, $sql)
{
	$res= @mysql_query($sql." LIMIT ".$ofs.",".$mpp) or die(mysql_error());

	if(mysql_num_rows($res)) {
		while($data = mysql_fetch_assoc($res)) {
			$arr[] = $data;
		}
		return $arr;
	}
	else
		return "Geen records gevonden";
}



#-->	to see what it returns (debugging only)
function view_array($page_nummers)
{
	$page_nummers['page_numbers'] = htmlentities($page_nummers['page_numbers']);
	$page_nummers['drop_down']    = htmlentities($page_nummers['drop_down']); 
	$page_nummers['prev_next']    = htmlentities($page_nummers['prev_next']); 

	echo '<pre>';
	print_r($page_nummers);
	echo '<pre>';
	exit;
}


?>

Reacties

0
Nog geen reacties.