[PHP] paging op database-readout *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hey allemaal,

ik heb net m'n paging voor elkaar werkt allemaal prima alleen zit nu met een probleem sommige dingen waar ik een query op doe is enorm veel. Dat wil dus zeggen dat ik enorm veel page nummers onderaan krijg. Hoe kan ik het zo doen dat er een maximum van bijv 10 page nummers komen. Dus als ik op page 2 klik dat page 1 verdwijnt en page 11 tevoorschijn komt en zo door zeg maar.

Hier is mijn php code die ik tot nu toe heb

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
if(!isset($_GET['tab'])){ 
    $tab = 1; 
} else { 
    $tab = $_GET['tab']; 
} 


$max_results = 50; 

$from = (($tab * $max_results) - $max_results); 

$sql1 = "SELECT * FROM blablabalbla ASC LIMIT $from, $max_results";
$sql_result1 = mysql_query($sql1);

$sql2 = "SELECT * FROM blablablabla ASC";
$sql_result2 = mysql_query($sql2);
$numrls = mysql_num_rows($sql_result2)

$total_pages = ceil($numrls / $max_results); 

echo "<center><font color='#E3C418'>Select a Page</font><br />"; 

if($tab > 1){ 
    $prev = ($tab - 1); 
    echo "<a href='$PHP_SELF?page=mp3&date=$date_today&tab=$prev' style='color : #E3C418'><<Prev</a>&nbsp;"; 
} 

for($i = 1; $i <= $total_pages; $i++){ 
    if(($tab) == $i){ 
        echo "$i&nbsp;"; 
        } else { 
            echo "<a href='$PHP_SELF?page=mp3&date=$date_today&tab=$i' style='color : #E3C418'>$i</a>&nbsp;"; 
    } 
} 


if($tab < $total_pages){ 
    $next = ($tab + 1); 
    echo "<a href='$PHP_SELF?page=mp3&date=$date_today&tab=$next' style='color : #E3C418'> Next>></a>"; 
}

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Je weet de huidige pagina, het totaal aantal pagina's en hoeveel pagina's je neer wilt zetten. Dan is het toch niet moeilijk om een start pagina te bepalen en een eind pagina en hier vervolgens met een for lusje doorheen te lopen? Vertel eens waar het fout gaat.

Verder is het een stuk efficienter om een select count(*) te doen ipv een number of rows op een resultset als je toch alleen maar het aantal nodig hebt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-09 18:27

pjvandesande

GC.Collect(head);

Ik denk dat je dat zelf wel kan verzinnen? Je kan toch gewoon iets niet laten zien? Je kunt toch gewoon alles wat hoger ligt dan een bepaalt getal gewoon niet laten zien en lager hetzelfde id? :?

Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 16:37

Basszje

Reisvaap!]

Je kan eventueel als je geen pagina nummer wil laten zien, maar alleen een pagina vooruit / pagina terug knop ook pas de navigatie stoppen op het moment dat je geen records meer terugkrijgt ( of natuurlijk de offset 0 is ). Nadeel hiervan is wel dat je laatste pagina leeg wordt.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Professionele website nodig?