Pagination probleem
Ik heb een probleem, en dat is dat ik dit heel graag wil:
[1] 2 3 4 5 6 7 8 9 10 //je bent op pagina 1 je krijgt de volgende 10 te zien
[5] 6 7 8 9 10 11 12 13 14 15 //je bent op pagina 5 je krijgt de volgende 10 te zien
Ik heb echt zoveel geprobeerd, maar het is me niet gelukt. Als iemand van jullie mij wilt helpen ben ik jullie echt heel erg dankbaar voor jullie moeite!
Mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
include 'db.inc.php';
$per_page = 3;
$pages_query = mysql_query("SELECT COUNT('name_id') FROM names");
$pages = ceil(mysql_result($pages_query, 0) / $per_page);
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $per_page;
$query = mysql_query("SELECT name FROM names LIMIT $start, $per_page");
while ($query_row = mysql_fetch_assoc($query)) {
echo '<p>', $query_row['name'] ,'</p>';
}
if ($pages >= 1 && $page <=$pages) {
for ($x=1; $x<=$pages; $x++) {
echo ($x == $page) ? '<strong><a href="?page='.$x.'">'.$x.'</a></strong> ' : '<a href="?page='.$x.'">'.$x.'</a>';
}
}
?>
include 'db.inc.php';
$per_page = 3;
$pages_query = mysql_query("SELECT COUNT('name_id') FROM names");
$pages = ceil(mysql_result($pages_query, 0) / $per_page);
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $per_page;
$query = mysql_query("SELECT name FROM names LIMIT $start, $per_page");
while ($query_row = mysql_fetch_assoc($query)) {
echo '<p>', $query_row['name'] ,'</p>';
}
if ($pages >= 1 && $page <=$pages) {
for ($x=1; $x<=$pages; $x++) {
echo ($x == $page) ? '<strong><a href="?page='.$x.'">'.$x.'</a></strong> ' : '<a href="?page='.$x.'">'.$x.'</a>';
}
}
?>
<style>
a{
text-decoration:none;
}
</style>
Tim S op 01/07/2011 01:51:43:
Tim HARTSTIKKE BEDANKT voor je hulp.
Ik heb nog een vraag als je dat niet erg vind?
Nu is het zo:
[3] 4 5
Hoe kan ik ervoor zorgen dat je je na 3 en 2 voor 3 ziet zodat je terug kan gaan naar 1 en 2?
En ook dit:
[6] 7 8
Dus als ik op 8 klik wil ik dat 6 en 7 zichtbaar blijven.
In ieder geval hartstikke bedankt voor al je moeite en dat meen ik.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$extra_pages = 2; //bepaald hoeveel pagina's je voor en na je huidige pagina wilt laten zien
//renderd de pagina's voor de huidige pagina
for($x = $page-$extra_pages; $x < $page; $x++) {
if($x > 0) {
echo '<a href="?page='.$x.'">'.$x.'</a>';
}
}
//renderd de huidige pagina en eventuele pagina's die er na komen
for($x= $page; $x <= $pages; $x++) {
if($x > $page+$extra_pages) {
break;
}else{
echo ($x == $page) ? '<strong><a href="?page='.$x.'">'.$x.'</a></strong> ' : '<a href="?page='.$x.'">'.$x.'</a>';
}
}
?>
$extra_pages = 2; //bepaald hoeveel pagina's je voor en na je huidige pagina wilt laten zien
//renderd de pagina's voor de huidige pagina
for($x = $page-$extra_pages; $x < $page; $x++) {
if($x > 0) {
echo '<a href="?page='.$x.'">'.$x.'</a>';
}
}
//renderd de huidige pagina en eventuele pagina's die er na komen
for($x= $page; $x <= $pages; $x++) {
if($x > $page+$extra_pages) {
break;
}else{
echo ($x == $page) ? '<strong><a href="?page='.$x.'">'.$x.'</a></strong> ' : '<a href="?page='.$x.'">'.$x.'</a>';
}
}
?>
Gewijzigd op 02/07/2011 01:12:53 door Tim S
BEDANKT voor al je hulp!
Ik heb nog een vraag.
Als ik dit handmatig doe:
http://localhost/website/?page=23
Dan zie je onderaan de 2 paginas na 23 dus 24 25 terwijl die niet bestaan hoe kan ik ervoor zorgen dat als ik bijvoorbeeld maar 1 page heb en je voert:
http://localhost/website/?page=2 in dat hij automatisch naar de laatste pagina gaat dus pagina 1 in dit geval?
Mijn code kun je hierboven zien.
Bedankt voor al jullie moeite.
Kan iemand mij nog helpen aub?
Bepaal eerst hoeveel pagina's je hebt. Controleer vervolgens met behulp van $_GET['page'] of het aantal pagina's dat wordt opgevraagd groter is dan dit aantal. Ja? Dan roep je in plaats van de opgevraagde pagina de laatste pagina aan.
Dankjewel, maar een probleem ik kan niet weten hoeveel pagina's ik heb.
Ik kan a.d.h van een CMS video's toevoegen en op een pagina passen 45 video's dus ik kan niet van te voren bepalen hoeveel pagina's ik heb.
Als je weet hoeveel video's je hebt, kan je toch het aantal pagina's uitrekenen?
- Aar - op 12/07/2011 23:05:43:
Als je weet hoeveel video's je hebt, kan je toch het aantal pagina's uitrekenen?
Ik kan toch niet van te voren weten hoeveel video's ik ga uploaden?
Nee, natuurlijk weet je vantevoren niet hoeveel je er gaat uploaden. Maar je kunt wel via een query opvragen hoeveel video's er in de database staan. Stel dit zijn er 100... en jij wil op iedere pagina 5 video's tonen. Dan heb je dus 100 / 5 = 20 pagina's.
Ozzie PHP op 15/07/2011 01:03:45:
Hihihi... sorry dat ik even moet lachen om je opmerking (goed bedoeld hoor).
Nee, natuurlijk weet je vantevoren niet hoeveel je er gaat uploaden. Maar je kunt wel via een query opvragen hoeveel video's er in de database staan. Stel dit zijn er 100... en jij wil op iedere pagina 5 video's tonen. Dan heb je dus 100 / 5 = 20 pagina's.
Nee, natuurlijk weet je vantevoren niet hoeveel je er gaat uploaden. Maar je kunt wel via een query opvragen hoeveel video's er in de database staan. Stel dit zijn er 100... en jij wil op iedere pagina 5 video's tonen. Dan heb je dus 100 / 5 = 20 pagina's.
Haha, hoe kan ik er dus voor zorgen dat als je dit doet:
mijnsite.nl/page=22
terwijl 22 niet bestaat dat hij automatisch naar 1 gaat/of laatste pagina?
Dat heb ik je al uitgelegd in mijn voorlaatste bericht toch? Wat snap je niet?
Edit: het is te laat, dat had Ozzie in de post daarvoor dus ook al uitgelegd. Zoals ie al zei eigenlijk -_-.
Gewijzigd op 15/07/2011 03:21:37 door The Force
Bedankt allemaal, het is nu duidelijk.