[PHP/MySQL] LIMIT van meerdere pagina's?

Pagina: 1
Acties:
  • 69 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Met de search vind ik heel wat, maar niet het goede. Dit heb/wil ik graag....

Ik heb een PHP script doe records uit een MySQL database haalt. Hij zet 3 records op 1 pagina en maakt daarna automatische een volgende pagina aan (dmv LIMIT). Dit werkt allemaal ok! ;)

Maar... er zijn zoveel records, dat ik nu al 45 pagina's heb!!!
Door 45 pagina's en groeiend wordt de website wel heeeeel erg breed. Nu wil ik graag zoiets als de Google zoekmachine. Eerst 10 links naar de volgende pagina's laten zien en daar na puntjes (...). Kom je over pagina 5 (>5) dan moeten de links ook op worden geschoven.

Dus als je op pagina 8 bent zie je het volgende:
code:
1
... 4 5 6 7 8 9 10 11 12 13 ...


Op pagina 9 zie je:
code:
1
... 5 6 7 8 9 10 11 12 13 14 ...


Hoe krijg ik dit voor elkaar???? Ik zie door de bomen het bos niet meer! 8)7

Acties:
  • 0 Henk 'm!

Verwijderd

LIMIT en OFFSET gebruiken

Maar volgens mij is het nóg simpeler. Waarom maak je niet een loopje dat van het huidige pagina-nummer minus 5 tot pagina-nummer plus 5 loopt? Ik neem aan dat je de url's van die linkjes eenvoudig houdt...

page.php?offset=3 ofzo?

[ Voor 83% gewijzigd door Verwijderd op 03-02-2003 21:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hier een URL van de links:

code:
1
echo "<a href=\"$PHP_SELF?pagina=$i&start_record=$start_record&zoek_knop=1&abt_gevraagd=&abt_gevraagd&abt_aangeboden=$abt_aangeboden&zoek_tekst=$zoek_tekst&zoek_veld=$zoek_veld\">$i</a>&nbsp;";

Acties:
  • 0 Henk 'm!

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
Aan zo'n url hebben we niet erg veel, aangezien we niet weten waar de variabelen voor staan (maar zo te zien moet het op de volgende manier wel lukken). Ikdenk dat je het met een aantal loopjes best makkelijk kan oplossen.

je zou bijvoorbeeld zoiets kunnen doen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$a = 0;
while($a < 10){
    $first_page = $current_page - 5;
    $i = $first_page;
    if($i < 1){
        $i++;
    }
    else{
        if($i > $last_page){
            $a = 11;
        }
        else{   
            echo "url met $i erin"
        $i++;
        }
    }

$a++;
}


Dit is een klein opzetje te illustratie van hoe je dan die loopjes kunt gebruiken. Zelf kan je het verder zo lastig maken als je zelf wilt, met .... ervoor en erachter etc.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmmm een vaag iets is dit, ik zie door de bomem het bos niet meer. Kan iemand mij is normaal nerderlands uitleggen hoe ik het zou kunnen doen?

Acties:
  • 0 Henk 'm!

  • Suffie
  • Registratie: Maart 2002
  • Laatst online: 27-01-2023
hoe laat je nu die 1 2 3 4 5 6 7 8 9 10 11 etc printen dan?

laat dat stukje is zien

ik zou iets doen als:
PHP:
1
2
3
4
5
for ($i = 1; $i <= $aantalpaginas; $i++) {  
   if ($pagina == $i)  $paginas[$i] = "<b>$i</b>";      //huidigepagina (geen link dus)
   elseif ($i+5 >=  $pagina && $i-5 <= $pagina) $paginas[$i] = "<a href=link>$i</a>";   //binnen een range van 5 eronder en 5 erboven arraywaarden toekennen.
}
// $pagina is de huidige pagina

[ Voor 89% gewijzigd door Suffie op 09-02-2003 19:45 ]

I don't suffer from insanity, I enjoy every minute of it
Trotse mama van Thijs&Bas


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik laat de links nu zo zien:

Eerst dit boven aan de pagina:
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
// Pagina regeling
if (!isset($pagina)) {
  $pagina = 1;
}

$vorige_pagina = $pagina - 1;
$volgende_pagina = $pagina + 1;

$start_record = ($aantal_per_pagina * $pagina) - $aantal_per_pagina;

$num_records = mysql_num_rows($result);

if ($num_records <= $aantal_per_pagina) {
  $num_paginas = 1;
}
else {
  if (($num_records % $aantal_per_pagina) == 0) {
    $num_paginas = ($num_records / $aantal_per_pagina);
  }
  else {
    $num_paginas = ($num_records / $aantal_per_pagina) + 1;
  }
}

$num_paginas = (int) $num_paginas;

if (($pagina > $num_paginas) || ($pagina < 0)) {
  error("Verkeerde paginanummer opgegeven Neem contact op met de webmaster (webmaster@tools2music.nl) als dit probleem zich voor blijft doen.");
}

$query = $query . " LIMIT $start_record, $aantal_per_pagina";



En onder aan de pagina

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
     <?
    // Laat de links naar de andere pagina's zien
    if ($vorige_pagina) {
      echo "<a href=\"$PHP_SELF?pagina=$vorige_pagina&start_record=$start_record&zoek_knop=1&abt_gevraagd=&abt_gevraagd&abt_aangeboden=$abt_aangeboden&zoek_tekst=$zoek_tekst&zoek_veld=$zoek_veld\">Vorige</a>&nbsp;";
    }
    else {
      echo "Vorige";
    }
    
        
    for ($i; $i <= $num_paginas; $i++) {
        if ($i != $pagina) {
          echo "<a href=\"$PHP_SELF?pagina=$i&start_record=$start_record&zoek_knop=1&abt_gevraagd=&abt_gevraagd&abt_aangeboden=$abt_aangeboden&zoek_tekst=$zoek_tekst&zoek_veld=$zoek_veld\">$i</a>&nbsp;";
        }
      else {
        echo "<b>$i</b>&nbsp;";
      }
    }
    if ($pagina != $num_paginas) {
      echo "<a href=\"$PHP_SELF?pagina=$volgende_pagina&start_record=$start_record&zoek_knop=1&abt_gevraagd=&abt_gevraagd&abt_aangeboden=$abt_aangeboden&zoek_tekst=$zoek_tekst&zoek_veld=$zoek_veld\">Volgende</a>";
    }
    else {
      echo "Volgende";
    }

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hiet gaat het dus om:

PHP:
1
2
3
4
5
6
7
8
for ($i; $i <= $num_paginas; $i++) {
        if ($i != $pagina) {
          echo "<a href=\"$PHP_SELF?pagina=$i&start_record=$start_record&zoek_knop=1&abt_gevraagd=&abt_gevraagd&abt_aangeboden=$abt_aangeboden&zoek_tekst=$zoek_tekst&zoek_veld=$zoek_veld\">$i</a>&nbsp;";
        }
      else {
        echo "<b>$i</b>&nbsp;";
      }
    }

Acties:
  • 0 Henk 'm!

  • Suffie
  • Registratie: Maart 2002
  • Laatst online: 27-01-2023
Verwijderd schreef op 09 februari 2003 @ 19:57:
Hiet gaat het dus om:

PHP:
1
//for loop
ik zei net al:
Suffie schreef op 09 February 2003 @ 19:28:
ik zou iets doen als:
PHP:
1
2
3
4
5
for ($i = 1; $i <= $aantalpaginas; $i++) {  
   if ($pagina == $i)  $paginas[$i] = "<b>$i</b>";      //huidigepagina (geen link dus)
   elseif ($i+5 >=  $pagina && $i-5 <= $pagina) $paginas[$i] = "<a href=link>$i</a>";   //binnen een range van 5 eronder en 5 erboven arraywaarden toekennen.
}
// $pagina is de huidige pagina
maar als je het dan uitgekauwd wil hebben:
PHP:
1
2
3
4
for ($i; $i <= $num_paginas; $i++) {
  if ($pagina == $i)  echo "<b>$i</b>";  
  elseif ($i+5 >=  $pagina && $i-5 <= $pagina) echo "<a href=link>$i</a>"; 
}

I don't suffer from insanity, I enjoy every minute of it
Trotse mama van Thijs&Bas


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jah.. ehh ik heb het stukkie er toch geplaatst? Zo doe ik het!

Acties:
  • 0 Henk 'm!

  • Suffie
  • Registratie: Maart 2002
  • Laatst online: 27-01-2023
Verwijderd schreef op 09 February 2003 @ 20:11:
jah.. ehh ik heb het stukkie er toch geplaatst? Zo doe ik het!
waarom vraag je dan om hulp?

I don't suffer from insanity, I enjoy every minute of it
Trotse mama van Thijs&Bas


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
omdat dat de oplossing niet is....??
Volgens mij praten we een beetje om elkaar heen.... maargoed ik ga mij morgen weer verder verdiepen en kom er dan wel even op terug.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Het is in P&W niet de bedoeling dat mensen voor je aan het werk gezet worden. Er is in dit topic zo ongeveer al een kant en klare oplossing gepost. Maar aangezien je daar niet van bent gediend bent....

Dit topic begint uit te lopen in een 'bij het handje neem'-topic, en dat proberen we hier een beetje te vermijden.

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

Pagina: 1

Dit topic is gesloten.