[php/wiskunde] manier om huidige pagina te bepalen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 14-09 15:49
Ik heb niet zozeer een php-probleem als wel een wiskundig probleem. Ik moet namelijk een manier bedenken waarop ik de huidige pagina kan bepalen (resultaten uit database worden over meerdere pagina's verdeeld). Ik heb deze code bedacht:


PHP:
1
2
3
4
//aantal resultaten = $QueryTel, 
$GlobalLimietWaarde = 50;
$PaginaTotaal = ceil($QueryTel / $GlobalLimietWaarde);
$PaginaHuidig = ceil($PaginaTotaal - ($QueryTel / limit("eind")));

$QueryTel is een SELECT COUNT(id) uit de database; en met limit("eind") bereken ik de laatste row die zichtbaar is. Op pagina 1 is dus limit("eind")=50 en op pagina 2 100.

Als ik nu voor $QueryTel als voorbeeld 104 neem, werkt dit (ergo: bij limit("eind")=50 komt er 1 uit en bij limit("eind") = 100 komt er 2 uit). Helaas niet meer als ik een andere waarde neem, zoals 312 :( Ik moet dus een ander soort wiskundig handigheidje bedenken, maar ik zit nu even vast... Hopelijk weet iemand van jullie dus hoe dit kan?

Acties:
  • 0 Henk 'm!

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 04-09 13:13

daaan

Brandweer Zoutkamp

kun je mischien niet beter gewoon de waarde van de pagina meegeven naar de volgende pagina?

One's never alone with a rubber duck.


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Waar wil je het eigenlijk voor gebruiken? Voor volgende en vorige links?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 14-09 15:49
daaan schreef op 28 juni 2004 @ 16:28:
kun je mischien niet beter gewoon de waarde van de pagina meegeven naar de volgende pagina?
hmm... via een session ofzo? That might be a good idea...

Bedankt alvast iig :)
BtM909 schreef op 28 juni 2004 @ 16:33:
Waar wil je het eigenlijk voor gebruiken? Voor volgende en vorige links?
ja :) Ik zat eerst te denken aan nummertjes (zoals bij Google), maar makkelijker is om alleen een Volgende/Vorige-link te maken. Ik wil alleen wél onderaan hebben 'Pagina x van y' :)

[ Voor 106% gewijzigd door The Evil Brain op 28-06-2004 16:35 ]


Acties:
  • 0 Henk 'm!

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 04-09 13:13

daaan

Brandweer Zoutkamp

je kan een berekening maken voor nummertjes:

PHP:
1
2
3
$aantal_nummertjes = $aantal_totaal/$aantaloppagina;
if($aantal_totaal%$aantaloppagina != 0) //rekening houden met rest.
    $aantal_nummertjes++;

[ Voor 52% gewijzigd door daaan op 28-06-2004 16:42 ]

One's never alone with a rubber duck.


Acties:
  • 0 Henk 'm!

  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 14-09 15:49
eh ja, dat doet dit stukje al:
PHP:
1
$PaginaTotaal = ceil($QueryTel / $GlobalLimietWaarde);

Maar dan heb ik nog niet de huidige pagina...

edit @ je code: ja, dat doe ik dus met ceil :)

[ Voor 28% gewijzigd door The Evil Brain op 29-06-2004 11:35 ]


Acties:
  • 0 Henk 'm!

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 04-09 13:13

daaan

Brandweer Zoutkamp

Uhm, id van je eerste waarde pakken, kijken hoeveel er nog voor die id in de db zitten, en het zo uitrekenen?

One's never alone with a rubber duck.


Acties:
  • 0 Henk 'm!

  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 14-09 15:49
jaaa.... maar dat kan niet omdat ze gesorteerd worden op een ander veld dan op het id-nummer

[ Voor 13% gewijzigd door The Evil Brain op 28-06-2004 16:47 ]


Acties:
  • 0 Henk 'm!

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 04-09 13:13

daaan

Brandweer Zoutkamp

dan tel je ze toch op de manier waarop jij ze gesorteerd hebt :+

One's never alone with a rubber duck.


Acties:
  • 0 Henk 'm!

  • Billie
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:27
The Evil Brain schreef op 28 juni 2004 @ 16:33:
[...]


hmm... via een session ofzo? That might be a good idea...

Bedankt alvast iig :)
Een GET var dan? :)

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20-09 23:58

TeeDee

CQB 241

Je wil dus eigenlijk gewoon een paging recordset?

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 17-09 13:34
Is het niet makkelijker om elke keer mee te geven aan de link welke pagina hij moet weergeven? n daarna als je in db gaat zoeken een een limit $maxitems*paginanummer,$maxitems te doen?

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Je geeft met een get het pagina nummer op, en daarna bepaal je met een functie de offset.

Het is voor een resultset van een zoekopdracht of een thumbnail overzicht? Dat krijg ik niet echt uit je vraag.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function pager($total,$perpage,$current)
{
        $return = array(
                        'offset'        => 0,
                        'limit'         => 0);

        $pages = ceil($total / $perpage);
        
        $return['offset'] = ($perpage) * ($current-1);
        $return['limit']  = ($perpage+1) + $pages;
        
        return $return;
}
?>

Dit kun je dan in een query gebruiken,
PHP:
1
2
$query = sprintf('SELECT * FROM table WHERE id=%d ORDER BY order LIMIT 
%d,%d',$_GET['id'],$pager['offset'],$perpage);

[ Voor 8% gewijzigd door Skaah op 29-06-2004 11:00 ]


Acties:
  • 0 Henk 'm!

  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 14-09 15:49
Het is om van een stel zoekresultaten, die over verschillende pagina's verdeeld worden, onderaan iets te krijgen van 'U bent op pagina 3 van 15' en dan een linkje links 'Ga naar pagina 2' en rechts 'Ga naar pagina 4'. :)

Maar ik heb gisteravond nog eens wat lopen rekenen, en volgens mij werkt dit ook:
PHP:
1
2
3
4
5
//aantal resultaten = $QueryTel, 
$GlobalLimietWaarde = 50; 
$PaginaTotaal = ceil($QueryTel / $GlobalLimietWaarde); 
$PaginaHuidig = (limit("eind") / ($PaginaTotaal * $GlobalLimietWaarde)) * $PaginaTotaal;
echo("U bent op pagina ".$PaginaHuidig." van ".$PaginaTotaal);


zo bereken je als het ware dus eerst het percentage van de huidige eind-LIMIT-waarde (limit("eind")) in het totaal aantal records wat op het totale aantal pagina's past, en dit vermenigvuldig je dan met het totale aantal pagina's, waardoor (volgens mij zelfs exact) het huidige paginanummer eruitkomt.

Of zie ik nu iets over het hoofd :?
Pagina: 1