Paginanummering V3.0

Door Mark L, 18 jaar geleden, 4.334x bekeken

Versie 1.0

Dit is een functie waarmee je je pagina's kunt nummeren.
Ook kun je, als er teveel pagina's zijn, dit inkorten, net zoals google dat doet voorbeeld:
als je op pagina 14 zit van de 20 zou je normaal dit hebben:
vorige 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 volgende

Je kunt dit ook verkorten:
vorige ...12, 13, 14, 15, 16... volgende

dit doe je in de functie met de derde variabele ($scheiding) maar let op:
Je moet opgeven hoeveel getallen er na de pagina waar je nu op bent komen.

bij het voorbeeld hierboven zou het zo zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$function
= bladwijzer('[sql]', '[aantal]', 2);
?>


De SQL kun je zo invullen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$function
= bladwijzer('SELECT * FROM tabel', '[aantal]', 2);
?>


En het aantal resultaten per pagina kun je instellen bij de $aantal (als tweede variabele in de functie)

Je krijgt de output terug in een resource (je moet dus nog een fetch eroveen heen halen)

De array luid:
array (
[sql] => De query($sql).. met de LIMIT erbij, als je een SQL-text hebt verstuurd als input

[array] => De arrays die getoond moeten worden, alleen als je een array als input hebt verstuurd

[nummering] => Alle paginanummers die je wilt (vorige 1, 2, 3, etc)

[e-l] => Eerste - Laatste (Dit kun je nog altijd onder je paginanummers zetten om wat makkelijker bij de eerste en laatste pagina te komen (vooral als je gebruikt maakt van de $scheiding

[totaal] => Het totale aantal resultaten wat je zonder LIMIT had gehad

);

Ik hoop dat jullie er iets aan hebben!

PS: Als er maar 1 pagina is, dan word er geen getal weergegeven

Versie 2.0
Jorik's probleem is opgelost! Je kunt een array als input sturen, als de $input (1e variabele in de functie) Je krijgt als output de waarde [sql] niet terug, maar [array], let hier goed op!

Ook zit er een nieuwe optie bij:
$pagenaam, dit is handig voor als je meerdere keren deze functie gebruikt op 1 pagina. Dan is 't niet handig om steeds $_POST['page'] te gebruiken (kan eigenlijk zelfs niet), maar door deze zelf te bepalen kan dat wel!
Ja, scheiding is ook niet verplicht, als je een $pagenaam invult en geen $scheiding wilt, kan dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$bladwijzer
= bladwijzer('[sql]', '[aantal]', '-', 'page2');
?>

Vul gewoon een streepje (-) in om de $scheiding te escapen! Deze word dan NIET gebruikt in 't script!

Versie 3.0
Ook de volgorde is nu veranderbaar:
Soms wil je de nieuwste resultaten laten zien en dan veranderd pagina 1 (en de anderen) dus continu als er een nieuw resultaat is.
Dit hoeft niet meer! Je kunt vanaf nu ook beginnen bij de 'laatste' pagina en dat op die pagina ook de meest recente resultaten staan.
Vul gewoon de 5e variabele met 'DESC' in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$bladwijzer
= bladwijzer('[sql]', '[aantal]', '-', 'page', 'DESC');
?>

en alles is omgedraaid, wat heel handig kan zijn, probeer het maar eens uit!

Ook is het mogelijk om de 'Volgende' en 'Vorige' te veranderen naar bijvoorbeeld '«' en '»' als je te weinig ruimte hebt, ook zijn er andere combinaties toe te voegen, bijvoorbeeld als je verschillende talen hebt, kun je dit ook op deze manier doen.

PS: Vind je een bug, zet dan aub hier neer/stuur een bericht naar mij! Ik zal 't proberen te fixen!

Gesponsorde koppelingen

PHP script bestanden

  1. paginanummering-v30

 

Er zijn 15 reacties op 'Paginanummering v30'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Crispijn -
Crispijn -
18 jaar geleden
 
0 +1 -0 -1
Het zou helemaal mooi zijn wanneer je op pagina één ook de het nummer van de laatste pagina in het rijtje hebt staan.

Verder, denk aan je inspringingen! Je script is zo onduidelijk te lezen.

Wel een logische opbouw van je functie! Leuk, een dergelijke functie stond nog niet in de scriptlib.

Groeten Cris
Mark L
Mark L
18 jaar geleden
 
0 +1 -0 -1
Dat van dat van pagina één naar de laatste pagina gaan zit in de uitput bij de:

['e - l'] (eerste en laatste)

Dat het zo onduidelijk te lezen was, komt misschien ook doordat ik een grote fout had gemaakt en daarna het snel had verbeterd, maar dan het testscript (dat op mijn pc staat) gekopieerd.
Hier stonden geen aantekeningen (uitleg) bij, maar dit heb ik er weer (gedeeltelijk) bij gezet.

Edit:
Ik ben eigenlijk wel benieuwd of een array teruggeven van een functie een risico heeft. En of er ook een risico is met het terug geven van een Recource Id (een mysql_query)

Eidt2:
Ik heb het (wat Crispijn bedoelde) erboven gezet, boven $vorigepuntjes en boven $volgendepuntjes.
Dat wat erboven staat moet je dan vervangen met de $vorigepuntjes of $volgendepuntjes die eronder staat!
Marcel K
Marcel K
18 jaar geleden
 
0 +1 -0 -1
Iets dergelijks heb ik hier al eens gezien: http://www.phphulp.nl/php/scripts/4/631/
Klaasjan Boven
Klaasjan Boven
18 jaar geleden
 
0 +1 -0 -1
Het ziet er redelijk uit. Gebrui alleen eens wat vaker de
Mark L
Mark L
18 jaar geleden
 
0 +1 -0 -1
Daddy: Ja, zoiets is 't wel, maar dit is alleen de functie en kan voor alles gebruikt worden

ik zal proberen vaker de tab te gebruiken ;-)
Arjan Schuurman
Arjan Schuurman
18 jaar geleden
 
0 +1 -0 -1
Wel handig, maar ik zie nooit paginanummeringscripts voor als je geen database gebruikt :(...
Rudie dirkx
rudie dirkx
18 jaar geleden
 
0 +1 -0 -1
snap niet waarom je de query mee moet geven? Je hebt alleen een paar getallen nodig voor zo'n script toch?
* welke pagina ben je nu
* hoeveel zijn er
(* hoeveel items per pagina, misschien)
* hoeveel links en rechts ervan (of totaal) links wil je zien

Ik gebruik altijd 4 params (geen query):
* totaal aantal items
* items per pagina
* huidige pagina
* target url met %s als pagina nummer

Hoeveel items er zijn en hoeveel je er pagina wilt scheelt per type paginanummering (forum heeft andere als PM bijv.) dus dat doe ik dan zelf met querytje net voordat ik func aanroep (gewoon een "select count(1) from tbl").

Ik heb lang gekloot met wat jij noemt $scheiding. Het is in jouw script veel makkelijker :D Misschien standaard = 0 meegeven dat ie alle pagina linsk laat zien ofzo!?

Mooi(e) scriptje/functie
Lissy Pixel
Lissy Pixel
18 jaar geleden
 
0 +1 -0 -1
Dank je wel voor het delen!!!
Jorik
Jorik
18 jaar geleden
 
0 +1 -0 -1
Het script bij mij werkt niet helemaal zoals het zou moeten.
Als ik het op 5 items per pagina zet, werkt alles ok, maar zodra ik het op 15 items per pagina zet gaat het scriptje vaag doen.
Ik roep het script aan het met:
$query = bladwijzer('SELECT * FROM currentsong ORDER BY lastplay DESC', 15, 2);
en vervolges ga ik verder met
$query2 = $query['sql']; als mij mysql_query().
Pagina's laat ik weergeven door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $query['nummering']; ?>


Als ik op de eerste pagina staat, komt er als paginanummering te staan:
1, 2, 3, 4, 5... volgende
Als ik dan op 5 druk, gebeurd er niets, klopt, want pagina 5 is eigenlijk al teveel, zoveel staat er neit eens in de db.
Zodra ik bij pagina 3 ben, komt er ineens ook een pagina 0 tevoorschijn.

Ik heb zo even gene idee waar het aan ligt, beetje raar vind ik zelf.

Daarnaast krijg ik ook nog op de eerste en laatste pagina zo'n soort error:
Notice: Undefined variable: vorige in /home/www/berknet.nl/sdradio/pagefunc.php on line 62
Op te lossen door in het script bij $vorige en $volgende een else te geven, zodat er ook een $vorige en $voglende waarde is als de pagina niet aan de if eisen voldoet.

EDIT:
Als ik het laatste cijfer in de anaroep van de functie op 1 zet ipv 2 werkt het goed..

EDIT2:
Mark heeft er een nieuwe versie opgezet, de bugs zijn er volgens mij nu uit :)
Mark L
Mark L
18 jaar geleden
 
0 +1 -0 -1
Zoals Jorik al zei en zoals is te lezen is er een verbeterde versie!

Er is ook wat extra uitleg door een extra optie

Ik hoop dat jullie er wat aan hebben!
Elwin - Fratsloos
Elwin - Fratsloos
18 jaar geleden
 
0 +1 -0 -1
Het is altijd zo jammer dat de meeste van dit soort scripts er per definitie van uit gaan dat je gegevens uit een database wilt halen.

Wat dat betreft kan je het volgens mij net zo goed met een functie oplossen. Dan kan je het voor DB's gebruiken, maar ook voor andere dataverzamelingen: bijvoorbeeld arrays.

Nu heb ik hier ook ooit zo'n paginanavigatie neergezet die alleen met DB's werkt, maar dat was in de vroege prehistorie van mijn PHP-kennis.

Elwin
Something Else
Something Else
18 jaar geleden
 
0 +1 -0 -1
@Arjan Schuurman
Dat zou goed aan te passen zijn, maar dan ga ik ervan uit dat je een bestand gebruikt(txt of wat dan ook) of arrays om de nodige informatie aan te vragen etc.

Over de script, het ziet er aardig uit. Ik heb zelf ook zo iets gescreven, maar dan wat korter ;)
Mark L
Mark L
18 jaar geleden
 
0 +1 -0 -1
Elwin:

Sorry, ik maak (nog) geen gebruik van andere data-opslag, vandaar dat ik 't alleen voor een database heb gemaakt. Ik ben wel benieuwd hoe je dat met txt bestanden doet (Had er al wel van gehoord, maar nog nooit echt goed bij stilgestaan)

Ik ga er eens op na googlen.. (of op PHPhulp zoeken)
Jorik
Jorik
18 jaar geleden
 
0 +1 -0 -1
Waarom niet uit database? Volgens mij is het vele malen beter en daarnaast nog sneller en veiliger. Je hebt 1 centarle plaats voor data, die er ook echt op ingericht is, txt bestandjes zijn niet bedoeld om grote hoeveelheden data (zoals in een database) op te slaan, maar meer simpele teksten (readme's,licenties,...)

Vind ik althans..
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Mark L
Mark L
17 jaar geleden
 
0 +1 -0 -1
Zo, weer een nieuwe versie (Versie 3.0)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. paginanummering-v30

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.