Voor discussies rondom phpBB2. phpBB2 wordt niet meer ondersteund en deze berichten kunnen wellicht gedateerd zijn.
Forumregels
Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
-
JdeBoer
- Berichten: 10
- Lid geworden op: 03 okt 2004, 19:21
- Locatie: Woldendorp
-
Contacteer:
Bericht
door JdeBoer » 29 nov 2004, 23:06
Ik heb een script waarin ik een tabel wil verdelen in meerdere pagina's, en er een vorige/volgende-linkje bij zetten, maar moet ook kunnen met behulp van een pagina-nummer aan te klikken.
alleen nu heb ik pagina's van 1 t/m 548, dat neemt nogal veel ruimte in beslag.
nu zou ik het net als op dit forum willen hebben, zoiets als:
Vorige 1, 2, 3 ... 546, 547, 548 Volgende
maar dan moet ik het hele forum eerst uitpluizen...
een hint waar ik het kan vinden mag je ook geven
voorbeeld(en):
http://johndeboer.shyper.com/overig/temp.php
http://johndeboer.shyper.com/nl/FilmArc ... search.php
http://johndeboer.shyper.com/nl/FilmArc ... rchief.php
ik hoop dat ik duidelijk genoeg ben geweest.
mocht er nog wat code nodig zijn dan hoor ik het wel.
alvast bedankt voor je moeite en je tijd!

Laatst gewijzigd door
JdeBoer op 29 nov 2004, 23:55, 2 keer totaal gewijzigd.
-
mosymuis
- Berichten: 6940
- Lid geworden op: 05 feb 2003, 14:00
- Locatie: Amsterdam
-
Contacteer:
Bericht
door mosymuis » 29 nov 2004, 23:46
Kijk eens naar de functie generate_pagination(), in includes/functies.
-
JdeBoer
- Berichten: 10
- Lid geworden op: 03 okt 2004, 19:21
- Locatie: Woldendorp
-
Contacteer:
Bericht
door JdeBoer » 29 nov 2004, 23:53
Ok, bedankt mosymuis!
je hebt me verder geholpen

:thumb:

-
Luuk
- Berichten: 7311
- Lid geworden op: 22 okt 2003, 10:07
- Locatie: Delft
Bericht
door Luuk » 30 nov 2004, 19:28
Let op! Deze functie bekijkt niet of er al een ? staat in de url, als de link die je invoert pagina.php is gaat hij niet werken, hij zet er vanzelf &blaat achter, een & teken kan alleen als achter .php een ? staat.
(Dat was ik zelf namelijk tegen gekomen bij zoiets maken
)
-
JdeBoer
- Berichten: 10
- Lid geworden op: 03 okt 2004, 19:21
- Locatie: Woldendorp
-
Contacteer:
Bericht
door JdeBoer » 01 dec 2004, 00:00
Ik ben bekend met het ? en & 'systeem' bij php e.d.
maar toch bedankt voor de tip Luuk :thumb:
Ik moet sowieso dat 'systeem' gebruiken, want het script moet bepalen aan het pagina-nummer welke records hij moet laten zien in de tabel, en met een dropdown-menuutje (met select) kun je dan bepalen hoeveel records er per pagina getoont moeten worden.
ik had zelf al iets in gedachten als FilmArchief.php?page=...&PAGE_LIMIT=...
en dan de page en PAGE_LIMIT afvangen met $_GET.
Ik bestudeer de functie generate_pagination() van include/functions.php en bekijk of ik er eventueel een eigen functie van kan maken.
het kan denk ik wel in het script zelf blijven, zonder aanroep van nogmaals het script (met $_SERVER['PHP_SELF'] o.i.d.).
-
WebSiteNet
- Berichten: 6524
- Lid geworden op: 20 okt 2003, 16:56
- Locatie: Wieringerwerf
-
Contacteer:
Bericht
door WebSiteNet » 01 dec 2004, 06:32
Ik geef je wat hulp. Dit is een pagina script van mij waar alles in zit. Is wat overzichtelijker, maar wel anders dan die van phpBB.
Code: Selecteer alles
<?
// Hoeveel rijen per pagina?
$per_page = 15;
// De sql query
$sql = "
SELECT *
FROM tabel
ORDER BY date DESC
";
// Hup, resultaat
$result = mysql_query($sql) or die(mysql_error());
// Tel hoeveel rijen in het resultaat zitten
$count = mysql_num_rows($result);
// Werd er in de url de var page mee gegeven? Zo ja, dan is $page die var, zo nee dan is $page 1
$page = (!empty($_GET['page'])) ? $_GET['page'] : 1;
// Ah, een lekker stukje wiskunde. Bereken hoeveel pagina's we hebben en rond
// dat naar boven af zodat halve pagina's (paar rijen) ook mee komen
$count_pages = ceil($count / $per_page);
// Is $page groter dan het aantal pagina's dat we berekend hadden? Zo ja, dan is hij 1.
$page = ($page > $count_pages) ? 1 : $page;
// Is $page kleiner dan 1? Zo ja, maak hem 1.
$page = ($page < 1) ? 1 : $page;
// Defineer een var. Niet echt nuttig
$start = 0;
// Tel bij welke rij we moeten beginnen zodat we het juiste resultaat krijgen.
// Zoek zelf maar uit hoe dit werkt.
$start = ($page * $per_page) - $per_page;
// Deze array gaan we vullen
$pages = array();
// We willen alleen het aantal pagina's zien als we meer dan een is.
if($count_pages > 1)
{
// Maak een loop met het gewenste aantal pagina's
for($i = 1; $i <= $count_pages; $i++)
{
// Als dit nummer de huidige pagina is hoeven we geen link
if($i == $page)
{
$pages[] = '<span style="font-size: 10px; font-weight: 700;">' . $i . '</span>';
}
// Als dit nummer niet de huidige pagina is hoeven we link
else
{
$pages[] = '<a href="page.php?page=' . $i . '" class="small">' . $i . '</a>';
}
}
}
// Zet komma's tussen de links
$pages = implode(', ', $pages);
// Nu weten we waar me moeten beginnen en eindigen.
$sql = "
SELECT *
FROM tabel
ORDER BY date DESC
LIMIT " . $start . ", " . $per_page . "
";
?>
-
mosymuis
- Berichten: 6940
- Lid geworden op: 05 feb 2003, 14:00
- Locatie: Amsterdam
-
Contacteer:
Bericht
door mosymuis » 01 dec 2004, 09:41
Je scriptje houd geen rekening met het weglaten van de middelste pagina's bij een groot aantal pagina's, wat JdeBoer nu juist vroeg.

Als het moet kan ik ook nog wel een home made functie plaatsen die dit wel kan.
-
JdeBoer
- Berichten: 10
- Lid geworden op: 03 okt 2004, 19:21
- Locatie: Woldendorp
-
Contacteer:
Bericht
door JdeBoer » 02 dec 2004, 15:49
Ik heb inmiddels het script voor zover werkende dat de pagina's er allemaal in staan enzo, alleen nog die functie - met die middelste pagina's als puntjes - erin verwerken.
zie
hier maar eens.
als er nog mensen zijn die er belang bij hebben post ik het hier wel ffkes of vragen mij maar...

(P.S. tis wel een aardig groot script!)
alleen zat ik te denken aan nog een dropdownboxje i.p.v. die pagina's zoals op t forum:
<<Vorige [hier dropdownboxje (met selected)] Volgende>>
-
mosymuis
- Berichten: 6940
- Lid geworden op: 05 feb 2003, 14:00
- Locatie: Amsterdam
-
Contacteer:
Bericht
door mosymuis » 02 dec 2004, 17:44
Mijn functie:
Code: Selecteer alles
function pagina_nummering($totaal, $per_pagina, $start, $url)
{
global $config;
if ( $totaal > $per_pagina )
{
// laatste pagina in benummering; nodig voor controles
$laatste = ceil($totaal/$per_pagina);
// corrigeer pagina, als de gekozen pagina illegaal is
if ( $per_pagina * $laatste <= $start )
{
$start = $per_pagina * $laatste - $per_pagina;
}
// de gekozen pagina (in benummering)
$huidig = floor($start/$per_pagina) + 1;
// vorige pagina, volgende pagina (in posts)
$vorige = $per_pagina * $huidig - $per_pagina * 2;
$volgende = $per_pagina * $huidig;
// benummering
$nummers = array();
for ( $i = 1; $i <= $laatste; $i++ )
{
/* parse alleen een nummertje als het totale aantal pagina's klein is,
of als het hij in het eerste blokje staat,
als het in een actief blokje staat,
of als het in het laatste blokje staat */
if ( $laatste <= $config['pagina_nummering_max'] || ( $i <= $config['pagina_nummering_groepjes_einden'] || ($i >= $huidig - $config['pagina_nummering_groepjes_midden'] && $i <= $huidig + $config['pagina_nummering_groepjes_midden']) || ($laatste - $config['pagina_nummering_groepjes_einden']) < $i ) )
{
// de $start waarde in de link
$posts = $per_pagina * ($i-1);
// maak nummertje, al dan niet met link
$nummers[] = $huidig == $i ? '<span style="font-size:120%;font-weight:bold;">['.$i.']</span>' : '<a href="'.$url.'&start='.$posts.'" target="_top">'.$i.'</a>';
// voeg alleen een scheidingsteken toe als dat er nog niet was op dat punt
} elseif ( end($nummers) != $config['pagina_nummering_scheiding'] ) {
$nummers[] = $config['pagina_nummering_scheiding'];
}
}
// eerste, volgende
$pagina_nummering = $huidig == 1 ? '<< <' : '<a href="'.$url.'&start=0" target="_top"><<</a> <a href="'.$url.'&start='.$vorige.'" target="_top"><</a>';
// de nummers
$pagina_nummering .= ' pagina: ' . str_replace(' | '.$config['pagina_nummering_scheiding'].' | ', ' '.$config['pagina_nummering_scheiding'].' ', implode(' | ', $nummers)) . ' ';
// volgende, laatste
$pagina_nummering .= $huidig == $laatste ? '> >>' : '<a href="'.$url.'&start='.$volgende.'" target="_top">></a> <a href="'.$url.'&start='.$posts.'" target="_top">>></a>';
} else {
// er is maar 1 pagina; geen pagina nummering
$pagina_nummering = ' ';
}
return '<span class="mini">' . $pagina_nummering . '</span>';
}
-
JdeBoer
- Berichten: 10
- Lid geworden op: 03 okt 2004, 19:21
- Locatie: Woldendorp
-
Contacteer:
Bericht
door JdeBoer » 04 dec 2004, 01:45
hoe kom je aan ['pagina_nummering_groepjes_einden'] en ['pagina_nummering_groepjes_midden'] ?
dat kan ik nergens terug vinden!
dit heb ik tot zover:
Code: Selecteer alles
#--> setting enviroment
error_reporting(E_ALL);
ini_set("display_errors", 1);
// connect to database
include('include/dbconnect.php');
#--> kijken of er al iets gekozen is in de URI
$PAGE_LIMIT = 50;
$pageNr = isset($_GET['page']) ? $_GET['page'] : 1;
$PAGE_LIMIT = isset($_GET['perpage']) ? $_GET['perpage'] : $PAGE_LIMIT;
#--> tellen van de records in de database
$sql = mysql_query("SELECT count(*) FROM ".$dbtable);
$totalRecords = mysql_result($sql, 0);
#--> aantal pagina nummers uitrekenen en offset voor de limit query bepalen
$totalPages = ceil($totalRecords / $PAGE_LIMIT);
$start = ($pageNr - 1) * $PAGE_LIMIT;
#--> array met de options voor de dropdownbox met records per pagina
$perpage = array( $PAGE_LIMIT => $PAGE_LIMIT,
'---' => $PAGE_LIMIT,
25 => 25,
50 => 50,
100 => 100,
250 => 250,
500 => 500,
1000 => 1000,
'all' => $totalRecords
);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<hier wat HTML-stuff>
<link rel="stylesheet" type="text/css" href="css/FAstyle.css">
<script type="text/javascript" language="JavaScript">
<!--
function openURI() {
var control = document.PerPageForm.PerPageSelect;
if (control.options[control.selectedIndex].value != ' ') {
location.href = control.options[control.selectedIndex].value;
}
}
-->
</script>
</HEAD>
<BODY>
<center>
<table width="92%" height="3" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="top" width="75%" align="left" valign="top">
<?php
// safe query
function safe_query ($sql = "")
{
if (empty($sql)) { return FALSE; }
if (QUERY_DEBUG == "Off")
{
$result = mysql_query($sql)
or die ("Query failed: please contact the Webmaster");
}
else
{
$result = mysql_query($sql)
or die ("ack! query failed: "
."<li>errorno=".mysql_errno()
."<li>error=".mysql_error()
."<li>query=".$sql
);
}
return $result;
}
if ($pageNr >= 1) {
echo 'Pagina<br> <small class="pipes">|</small> ';
for ($i = 1; $i <= $totalPages; $i++)
{
if ($pageNr == $i)
{
echo '<span class="selectedpage">'.$i.'</span> <small class="pipes">|</small> ';
}else{
// $HTTP_SERVER_VARS till 4.1.0, $_SERVER in newer versions
echo '<a href="'.$HTTP_SERVER_VARS['PHP_SELF'].'?page='.$i.'&perpage='.$PAGE_LIMIT.'" title="Go to page '.$i.'">'.$i.'</a> <small class="pipes">|</small>';
}
}
}else{
echo '<small style="color:#999;">no page numbers yet</small>';
}
?>
</td>
<td class="top" align="right" valign="top">
<?php
#--> de dropdownbox voor het aantal records per pagina
?>
<form name="PerPageForm">
Films per pagina :
<select name="PerPageSelect" onChange="openURI()">
<?php
foreach($perpage as $key => $value)
{
echo '<option value="'.$HTTP_SERVER_VARS['PHP_SELF'].'?page=1&perpage='.$value.'" > '.$key.'</option>';
}
?>
</select>
</form>
</td>
</tr>
</table>
<hr width="98%">
<?php
#--> uit de database trekken en echo-en
$sql = "SELECT * FROM `".$dbtable."` ORDER BY `Titel` ASC LIMIT ".$start.",".$PAGE_LIMIT;
$result = mysql_query($sql);
$num_fields = mysql_num_fields($result);
$aantal = mysql_num_rows($result);
// create table header
echo "<table border=1 bgcolor=#ECE9D8 color=#000000 cellpadding=2>";
echo "<tr>";
for ($i=1; $i<$num_fields; $i++)
{
echo "<th>";
echo mysql_field_name($result, $i);
echo "</th>";
}
echo "</tr>";
// end table header
if (mysql_num_rows($result) >= 1)
{
while ($row = mysql_fetch_array($result))
{
echo "<tr align=left valign=top>\n";
for ($i=1; $i<$num_fields; $i++)
{
echo "<td bgcolor=#FFFFFF>";
if (!isset($row[$i])) // test for null value
{echo "NULL";}
else
switch ($i)
{
case "0":
etc. etc.
}else{
echo $row[$i];
}
break;
}
echo "</td>\n";
}
echo "</tr>\n";
}
echo "</table>";
}else{
echo 'er zijn geen records<br><br>';
}
?>
<br>
<div class="bottom">
<small>
<?php
#--> pagina nummers style 2 (prev / next)
if ($pageNr > 1)
{
echo '<a href="'.$HTTP_SERVER_VARS['PHP_SELF'].'?page='.($pageNr - 1).'&perpage='.$PAGE_LIMIT.'" title="Go to page '.($pageNr - 1).'"><< Vorige</a>';
}
else
{
echo '<span style="color:#bbb;"><< Vorige</span>';
}
echo ' ';
if ($pageNr < $totalPages)
{
echo '<a href="'.$HTTP_SERVER_VARS['PHP_SELF'].'?page='.($pageNr + 1).'&perpage='.$PAGE_LIMIT.'" title="Go to page '.($pageNr + 1).'">Volgende >></a>';
}
else
{
echo '<span style="color:#bbb;">Volgende >></span>';
}
// end table body and other stuff
?>
</small>
</div>
</center>
<?
// verbinding afsluiten
mysql_close($db);
en dit is mijn dbconnect.php:
Code: Selecteer alles
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "filmarchief";
$dbtable = "filmarchief";
// connect to database
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Could not connect to " . $dbhost);
// select database
mysql_select_db("$dbname", $db) or die ("Could not find " . $dbname);
?>
-
mosymuis
- Berichten: 6940
- Lid geworden op: 05 feb 2003, 14:00
- Locatie: Amsterdam
-
Contacteer:
Bericht
door mosymuis » 04 dec 2004, 18:34
JdeBoer schreef:hoe kom je aan ['pagina_nummering_groepjes_einden'] en ['pagina_nummering_groepjes_midden'] ?
dat kan ik nergens terug vinden!
De hele $config array kan je nergens terugvinden; het is een eigen non-phpBB website. Maar het lijkt mij dat uit de namen en context wel af te leiden valt wat voor waardes ik daar verwacht.