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
## 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 .= '&'.$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 ? '&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">«««</a>'."\n" : '<span style="color:#ccc;" title="prev page">«««</span>'."\n";
$str .= ' <span style="color:#ccc;">--</span> '."\n";
$str .= ($pg < $tp) ? '<a href="'.$_SERVER['PHP_SELF'].'?pg='.($pg + 1).$mpp_c.$qs.'" title="next page">»»»</a>'."\n" : '<span style="color:#ccc;" title="next page">»»»</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&mpp='.$value.$qs.'" > '.$key.'</option>'."\n";
}
return $str . "</select>\n</form>\n";
}
#--> building page nummers
function build_pagenumbers($pg, $mpp, $tp, $ddb, $qs)
{
$mpp_c = $ddb ? '&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> '."\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> \n";
else
$str .= '<a href="'.$_SERVER['PHP_SELF'].'?pg='.$i.$mpp_c.$qs.'" title="page '.$i.'">'.$i.'</a> '."\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