Paginanavigatie
Frederic - 13/03/2005 14:55
PHP ver gevorderde
Ik ben bezig aan een navigatiescript, en heb lange tijd met dit gewerkt:
<?php
$sql = "SELECT * FROM gastenboek ORDER BY id DESC";
$query = mysql_query($sql) or die(mysql_error());
$rtel = mysql_num_rows($query);
if ($rtel < 1) {
echo "<div class=\"normaal\">Nog niets hier!</div>";
} else {
$max = 8;
$rtel/=$max;
if (empty($navigatiepagina)) $navigatiepagina=1;
$van=($navigatiepagina-1)*$max;
if ($navigatiepagina > ceil($rtel)) $navigatiepagina=1;
for ($i = 1; $i <= ceil($rtel); $i++) {
if ($navigatiepagina == $i)
$navigatiepaginas[$i] = "<b>$i</b>";
else
$navigatiepaginas[$i] = "<a href=\"?Pagina=Gastenboek&navigatiepagina=$i\">$i</a>";
}
$navigatiepaginas= implode(" | ", $navigatiepaginas);
$vorige = ($navigatiepagina-1) ? "<a href=\"?Pagina=Gastenboek&navigatiepagina=" . ($navigatiepagina - 1)
. "\">< Vorige</a>" : "";
$volgende = ($navigatiepagina-ceil($rtel)) ? "<a href=\"?Pagina=Gastenboek&navigatiepagina=" .
($navigatiepagina + 1) . "\">Volgende ></a>" : "";
if ($vorige && $volgende) {
$navigatie = ("<div class=\"normaal\">".$vorige." | ".$navigatiepaginas." | ".$volgende."</div>");
} else {
$navigatie = ("<div class=\"normaal\">".$vorige." | ".$navigatiepaginas." | ".$volgende."</div>");
}
}
?>
<?php
$sql = "SELECT * FROM gastenboek ORDER BY id DESC" ;
if ( $rtel < 1 ) {
echo "<div class=\" normaal\" >Nog niets hier!</div>" ;
} else {
$max = 8 ;
$rtel /= $max ;
if ( empty ( $navigatiepagina ) ) $navigatiepagina = 1 ; $van = ( $navigatiepagina - 1 ) * $max ;
if ( $navigatiepagina > ceil ( $rtel ) ) $navigatiepagina = 1 ; for ( $i = 1 ; $i <= ceil ( $rtel ) ; $i ++ ) { if ( $navigatiepagina == $i )
$navigatiepaginas [ $i ] = "<b>$i </b>" ;
else
$navigatiepaginas [ $i ] = "<a href=\" ?Pagina=Gastenboek&navigatiepagina=$i \" >$i </a>" ;
}
$navigatiepaginas = implode ( " | " , $navigatiepaginas ) ; $vorige = ( $navigatiepagina - 1 ) ? "<a href=\" ?Pagina=Gastenboek&navigatiepagina=" . ( $navigatiepagina - 1 )
. "\" >< Vorige</a>" : "" ;
$volgende = ( $navigatiepagina - ceil ( $rtel ) ) ?
"<a href=\" ?Pagina=Gastenboek&navigatiepagina=" . ( $navigatiepagina + 1 ) . "\" >Volgende ></a>" : "" ;
if ( $vorige && $volgende ) {
$navigatie = ( "<div class=\" normaal\" >" . $vorige . " | " . $navigatiepaginas . " | " . $volgende . "</div>" ) ;
} else {
$navigatie = ( "<div class=\" normaal\" >" . $vorige . " | " . $navigatiepaginas . " | " . $volgende . "</div>" ) ;
}
}
?>
Nu, ik zou het graag willen omvormen naar de navigatie zoals op SM(ja hoor, ik zal credits vermelden ) maar ik er iemand die me een beetje op weg kan helpen? (ik heb al bij scripts&tuts gekeken maar niets echts nuttigs gevonden)
9 antwoorden
Gesponsorde links
Thomas - 30/11/1999 00:00
Moderator
Niets nuttigs gevonden rnrn[url=httpwww.sitemasters.bepagina=tutorialstutorials&cat=4&id=198]Tijd voor een nieuwe bril [url]
Frederic - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
PHP ver gevorderde
inderdaad, volgende week!rnHoe weet jij dat zo goedrnMjah hoe maak je daar nu een dropdownbox vanrnWant dat is in tekstweergavernmaw ik weet wel hoe alles in mysql te zettne, maar niet hoe het te maken dat ik er buttons krijg, en een dropdownbox die ook aangeeft waar de bezoeker isrnDit heb ik dus al, maar de output lukt me nietrn[code]include connect.php;rn$res1 = mysql_query(SELECT COUNT(id) FROM gastenboek) or die(res1. mysql_error());rn$items_totaal = mysql_result($res1, 0);rnmysql_free_result($res1);rn$max = 8;rn$aantal_paginas = ceil($items_totaal $max);rn$huidige_pagina = 0;rnif(isset($_GET['navigatiepagina']) && is_numeric($_GET['navigatiepagina']) && $_GET['navigatiepagina'] 0 && $_GET['navigatiepagina'] $max) {rn $huidige_pagina = $_GET['navigatiepagina'];rn}rn$offset = $huidige_pagina $max;rn$res2 = mysql_query(SELECT FROM gastenboek ORDER BY id DESC LIMIT .rn$offset.,.$max)rn or die(res2. mysql_error());[code]
Thomas - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
Moderator
Voor een dropdown-box hoef je maar 2 dingen te wetenrn- het aantal pagina'srn- de huidige paginarnrnDe rest is gewoon een kwestie van met een for-lus door de pagina's heenlopen rnrn[code]form name=nav action== $_SERVER['PHP_SELF'] method=postrnselect name=nav_selectrnphprnfor($i=0; $i $aantal_paginas; $i++) {rnrnoption value== $i = ($i == $huidige_pagina) selected=selected = ($i + 1) optionrnphprn}rnrnselectrnform[code]rnrnLet erop dat pagina 0 als pagina 1 wordt weergegeven - pagina 0 staat een beetje raar.rnrnJe kan er voor kiezen om een gaan knop te maken (zoals op het forum) of een submit-on-change constructie met JavaScript.
Frederic - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
PHP ver gevorderde
Hmm, als ikrn[code]$totaal_aantal = mysql_result($sql1, 1);[code] doe, dan klopt het toch wel weer hernToch klopt er ergens iets nietrn[code]phprninclude connect.php;rn$sql1 = mysql_query(SELECT COUNT(id) FROM gastenboek) or die(SQL1. mysql_error());rn$totaal_aantal = mysql_result($sql1, 0);rnmysql_free_result($sql1);rn$aantal_items_per_pagina = 8;rn$aantal_paginas = ceil($totaal_aantal $aantal_items_per_pagina);rn$huidige_pagina = 0;rnif(isset($_GET['navigatiepagina']) && is_numeric($_GET['navigatiepagina']) && $_GET['navigatiepagina'] 0 && $_GET['navigatiepagina'] $max) {rn $huidige_pagina = $_GET['navigatiepagina'];rn}rn$offset = $huidige_pagina $aantal_items_per_pagina;rn$SQL2 = mysql_query(SELECT FROM gastenboek ORDER BY id DESC LIMIT .rn$offset.,.$aantal_items_per_pagina) or die(SQL2. mysql_error());rnrnform name=nav action== $_SERVER['PHP_SELF'] method=postrnselect name=nav_selectrnphprnfor($i=0; $i $aantal_paginas; $i++) {rnrnoption value== $i = ($i == $huidige_pagina) selected=selected = ($i + 1) optionrnphprn}rnrnselectrnform[code] rnAls ik nu surf naar index.phpnavigatiepagina=5, dan wordt optie 5 niet gelecteerd (maar wel 11 = hoogste)
Thomas - 30/11/1999 00:00
Moderator
Mja, dat is wel iets wat je zelf op kan lossen he rnJe selected pagina gaat ergens niet goed.
Frederic - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
PHP ver gevorderde
Ik heb alles aan het werken gekregen, vraag me nu alleen nog af hoe het te regelen dat als ie op de eerste pagina is dat er geen terug buttons moeten zijn, en dat als hij op de laatste is dat er geen volgende moeten zijn
Thomas - 30/11/1999 00:00
Moderator
Daar heb je if-statements voor.
Frederic - 30/11/1999 00:00
PHP ver gevorderde
Joepie na lang prullen heb ik eindelijk het gewenste effect!!rn[code]phprninclude_once connect.php;rnfunction correctURL($negeren) {rn $querystring = ; de querystringrn if(sizeof($_GET) 1 !in_array($negeren, array_keys($_GET))) {rn meer queryvariabelen te onthouden dan enkel $_GET[$nav_var]rn foreach($_GET as $k = $v) {rn if($k != $negeren) {rn $querystring .= $k.=.$v.&;rn }rn }rn }rn return $querystring;rn}rnrnrnfunction navigatie($op, $max)rn{rnglobal $aantal_items_per_pagina;rnglobal $offset;rnglobal $huidige_pagina;rn$sql1 = mysql_query(SELECT COUNT(id) FROM .$op.) or die(SQL1. mysql_error());rn$totaal_aantal = mysql_result($sql1, 0);rnmysql_free_result($sql1);rn$aantal_items_per_pagina = $max;rn$aantal_paginas = ceil($totaal_aantal $aantal_items_per_pagina);rn$aantal_paginas+=1;rn$huidige_pagina = 0;rnif(isset($_GET['navigatiepagina']) && is_numeric($_GET['navigatiepagina']) && $_GET['navigatiepagina'] 0 && $_GET['navigatiepagina'] $aantal_paginas) {rn$huidige_pagina = $_GET['navigatiepagina'];rn$huidige_pagina-=1;rn}rn$offset = $huidige_pagina $aantal_items_per_pagina;rn$plaats = $_SERVER['PHP_SELF'].correctURL(navigatiepagina);rnrnrnform name=navigatie action= echo $_SERVER['PHP_SELF'] ; method=postrnphp if ($huidige_pagina != 0)rn{rnrninput name=button type=button class=navigatie onClick=window.location=' echo $plaats ;navigatiepagina=1' value= rninput name=button type=button class=navigatie onClick=window.location=' echo $plaats ;navigatiepagina= echo $huidige_pagina ;' value= rnphprn}rnrnselect onChange=window.location=''+this.form.elements['navigatiebox'].value; name=navigatieboxrnphprnfor($i=1; $i $aantal_paginas; $i++) {rnrnoption value= echo $plaats ;navigatiepagina= echo $i ;= ($i - 1 == $huidige_pagina) selected=selected echo $i ;optionrnrn}rnrnselectrnphprnif ($huidige_pagina != $aantal_paginas - 2)rn{rnrninput name=button type=button class=navigatie onClick=window.location=' echo $plaats ;navigatiepagina= echo $huidige_pagina + 2 ;' value= rninput name=button type=button class=navigatie onClick=window.location=' echo $plaats ;navigatiepagina= echo $aantal_paginas - 1 ;' value= rnphprn}rnrnformrnphprn}rn[code] rn[b]MAAR[b] ik heb nu wel rare omwegen gebruikt, nu vraag ik me af is er geen efficientere manier om dit te scripten
Frederic - 30/11/1999 00:00
PHP ver gevorderde
En hier ben ik weer, met het laatste probleem (ik beloof het -))rnDit keer heb ik gepoogd om er een 'aantal' van te laten maken, zodat de bezoeker in een dropdownbox zijn aantallen kan selecteren maar die box werkt gewoon niet! Dit is de codernrn[code]rnphprn include_once connect.php;rn rn rn rn function correctURL($negeren) {rn $querystring = ;rn if(sizeof($_GET) 1 !in_array($negeren, array_keys($_GET))) {rn $_GET[$nav_var]rn foreach($_GET as $k = $v) {rn if($k != $negeren) {rn $querystring .= $k.=.$v.&;rn }rn }rn }rn return $querystring;rn }rn rn rn rn rn function navigatie($op, $max)rn {rn if (isset($_GET['aantal']) && is_numeric($_GET['aantal']))rn {rn $max = $_GET['aantal'];rn }rn global $aantal_items_per_pagina;rn global $offset;rn global $huidige_pagina;rn global $aantal_paginas;rn $sql1 = mysql_query(SELECT COUNT(id) FROM .$op.) or die(SQL1. mysql_error());rn $totaal_aantal = mysql_result($sql1, 0);rn mysql_free_result($sql1);rn $aantal_items_per_pagina = $max;rn $aantal_paginas = ceil($totaal_aantal $aantal_items_per_pagina);rn $aantal_paginas+=1;rn $huidige_pagina = 0;rn if(isset($_GET['navigatiepagina']) && is_numeric($_GET['navigatiepagina']) && $_GET['navigatiepagina'] 0 && $_GET['navigatiepagina'] $aantal_paginas) {rn $huidige_pagina = $_GET['navigatiepagina'];rn $huidige_pagina-=1;rn }rn $offset = $huidige_pagina $aantal_items_per_pagina;rn global $max;rn }rn rn rn rn rn rn function navigatietonen()rn {rn global $aantal_items_per_pagina;rn global $offset;rn global $max;rn global $huidige_pagina;rn global $aantal_paginas;rn $plaats = $_SERVER['PHP_SELF'].correctURL(navigatiepagina);rn rn form name=navigatie action= echo $_SERVER['PHP_SELF'] ; method=postrn php if ($huidige_pagina != 0)rn {rn rn input name=button type=button class=navigatie onClick=window.location=' echo $plaats ;navigatiepagina=1' value= rn input name=button type=button class=navigatie onClick=window.location=' echo $plaats ;navigatiepagina= echo $huidige_pagina ;' value= rn phprn }rn rn select onChange=window.location=''+this.form.elements['navigatiebox'].value; name=navigatieboxrn phprn for($i=1; $i $aantal_paginas; $i++) {rn rn option value= echo $plaats ;navigatiepagina= echo $i ;= ($i - 1 == $huidige_pagina) selected=selected echo $i ;optionrn rn }rn rn selectrn phprn if ($huidige_pagina != $aantal_paginas - 2)rn {rn rn input name=button type=button class=navigatie onClick=window.location=' echo $plaats ;navigatiepagina= echo $huidige_pagina + 2 ;' value= rn input name=button type=button class=navigatie onClick=window.location=' echo $plaats ;navigatiepagina= echo $aantal_paginas - 1 ;' value= rn phprn }rn $plaats2 = $_SERVER['PHP_SELF'].correctURL(navigatiepagina).correctURL(aantal);rn rn formrn select name=aantal class=button onChange=window.location=''+this.form.elements['aantal'].value; style=font-family Tahoma; color #000080 size=1rn option- Aantal -optionrn option value= echo $plaats2 ;aantal=8= ($max == 8) selected=selected 8 berichtenoptionrn option value= echo $plaats2 ;aantal=10= ($max == 10) selected=selected 10 berichtenoptionrn option value= echo $plaats2 ;aantal=12= ($max == 12) selected=selected 12 berichtenoptionrn option value= echo $plaats2 ;aantal=15= ($max == 15) selected=selected 15 berichtenoptionrn option value= echo $plaats2 ;aantal=20= ($max == 20) selected=selected 20 berichtenoptionrn selectrn phprn }rn rn[code]rnrnOverigens vraag ik me af of ik alle globals echt wel nodig heb, en ofdat er nergens onnodige dingen gedaan zijn Thanks!
Gesponsorde links
Dit onderwerp is gesloten .