Paginering

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Programmeur

Functie Heb jij altijd al samen willen werken met ervaren java ontwikkelaars dan hebben wij hier de ultieme kans voor jou! Voor een opdrachtgever in omgeving van Naaldwijk zijn wij op zoek naar uitbreiding van het vaste ontwikkel team. Je zult je hier voornamelijk bezig gaan houden met; Wijzigingsverzoeken van klanten uitvoeren, hier wordt je diep in betrokken; Samen met consultants sluit je aan bij gesprekken met klanten, voor alle projecten; Je schakelt veel met consultants, wat is de behoefte van de klant? Hoe kan je hierop integreren?; Het framework moet naar de Cloud gebracht worden, je wordt betrokken bij

Bekijk vacature »

Software Developer

Dit ga je doen Ontwerpen, ontwikkelen en onderhouden van (mobiele) internettoepassingen; Ontwikkelen en onderhouden van Microservices; Ontwerpen en optimaliseren van databases; Identificeren van nieuwe trends/ontwikkelingen binnen de branche. Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt zich op het leveren van kwalitatief hoogwaardige producten aan alle hun klanten. De organisatie telt circa 4.000 medewerkers in meer dan 10 verschillende landen. Momenteel is de organisatie op zoek naar een Software Developer wilt meewerken aan het

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Front-End Developer

Als Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Front-End Developer bij Coolblue? Als Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Je krijgt energie van het bedenken van creatieve oplossingen en presenteert dit graag binnen het team. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te

Bekijk vacature »

Creatieve Front-end developer gezocht!

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

Lead C++ Developer

De rol van Lead C++ Developer Als Lead C++ developer bij KUBUS word je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de desktop applicaties van BIMcollab, ons platform voor 3D model-validatie en issue-management bedoeld om de kwaliteit van 3D design-modellen voor gebouwen te verbeteren. Betere 3D modellen leiden tot betere gebouwen, dus zo draag je bij aan verduurzaming van de gebouwde omgeving met slimmer gebruik van materialen, minder verspilling en energie-efficiënte gebouwen. Een goede gebruikerservaring staat bij ons hoog in het vaandel; we gaan in onze ontwikkeling voor innovatie en kwaliteit. In je rol als

Bekijk vacature »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Functioneel Applicatiebeheerder voor het financiele domein op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op

Bekijk vacature »

.NET developer

Functie Voor jou als junior .NET ontwikkelaar staat er een flinke uitdaging klaar bij dit bedrijf waar jij veel van kan gaan leren. Zo willen zij een flinke uitbreiding doen op het webbased gedeelte dat zij nu hebben en willen zij het standaard deel gaan moderniseren. Jouw team is dan ook op zoek naar een junior .NET ontwikkelaar die het leuk vindt om op basis van research en development aan de slag te gaan. Jouw mening telt mee als het gaat om hoe en met wat deze applicaties gebouwd en herschreven gaan worden. Jouw functie bij dit bedrijf gaat dan

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving: De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van bromen snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie.De opdracht bestaat uit: het programmeren van de diverse modules;het tijdens demo's tonen van de

Bekijk vacature »

Senior Java developer

Als Senior Developer bij Sogeti ben je onderdeel van onze toonaangevende best-gecertificeerde Java community. Deze bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Aval en de Nationale Politie. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »
Albert de Wit

Albert de Wit

25/10/2012 14:07:35
Quote Anchor link
Hallo,

Ik heb gisteren even een proefopstellinkje gemaakt waarop ik graag wat kritiek ontvang.

Ik heb een tabel gemaakt met de naam items. Hierin heb ik 3 kolommen: id_item, item, order1
id_item is een int, AI, en primary key
item is een varchar en unieke key
order1 is een int


Ik heb de database gevuld met random woordjes op de volgende manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

$alphabet
= 'abcdefghijklmnopqrstuvwxyz';

for ($i = 0;$i < 4000; $i++){
    $order1 = 4000-$i;
    $aantal_letters = rand(4,5);
    $woord = '';
    for ($b = 0; $b < $aantal_letters; $b++){
        $letter = rand(0,24);
        $woord .= $alphabet[$letter];
    }

    $query = mysql_query("INSERT INTO items (item,order1) VALUES ('".$woord."','".$order1."')");
    
    if ($query){
        echo $woord.' is succesvol geplaatst<br>';
    }
else{
        echo '<br><br><br>'.mysql_error().'<br><br><br><br>';
        $i = 0;
    }
}

?>


Nadat ik 3424 rijen totaal had heb ik het volgende als paginering gemaakt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
mysql_connect('localhost','root','');
mysql_select_db('test');

$per_pagina = 15;

if (isset($_GET['begin'])){
    $begin = $_GET['begin'];
}
else{
    $begin = 1;
}

$eind = $begin+$per_pagina;

$query = mysql_query("SELECT * FROM items");

echo '<table>';
while ($row = mysql_fetch_row($query)){
    if ($row[0] > $begin && $row[0] <= $eind){
        echo '<tr><td>'.$row[0].'</td><td>'.$row[1].'</td><td>'.$row[2].'</td></tr>';    
    }
}

echo '</table>';

$totaal_rijen = mysql_num_rows($query);
$laatste_pagina = ceil($totaal_rijen/$per_pagina);

if (isset($_GET['begin'])){
    $begin = $_GET['begin'];    
}
else{
    $begin = 0;
}

$huidige_pagina = $begin/$per_pagina;

if ($huidige_pagina>2){
    $min = $huidige_pagina-1;    
    $plus = $huidige_pagina+3;
}
else{
    $min = 1;
    $plus = 5;
}


for ($i = $min; $i<= $plus; $i++){
    // paginering
    if ($i<=$laatste_pagina){
        if ($i>0){
            $pagina = $i-1;
        }
else{
            $pagina = 0;
        }

        $begin = ($pagina*$per_pagina);
        $eind  = ($pagina*$per_pagina)+15;
        echo '<a style="border:1px black solid;width:30px;display:block;float:left;"
        href="index.php?begin='
.$begin.'">'.$i.'</a> ';        
    }
}

?>


LET WEL: Dit is niet een officieel iets dat ik perfect moest hebben maar een improvisatie (gelieve dus geen rekening te houden met dingen als SQL injectie (niet mogelijk hier maar toch...))

Graag alle kritiek die dit zeker kan helpen verbeteren.
 
PHP hulp

PHP hulp

21/11/2024 22:53:39
 
Michel Falke

Michel Falke

25/10/2012 15:01:45
Quote Anchor link
Ik zou kiezen om de paginatie met behulp van jquery te doen. Er zijn echt heel veel jQuery paginatie klasses te vinden. In dat geval heb je een generieke oplossing die je overal weer zou kunnen gebruiken zonder dat je hier te veel php logica voor hoeft te schrijven.
Kijk bijvoorbeeld eens naar deze:
http://tympanus.net/jPaginate/
 
Albert de Wit

Albert de Wit

25/10/2012 15:28:05
Quote Anchor link
heb je mijn vraag gelezen en mijn code gezien? je antwoord heeft vrij weinig met mijn vraag te maken.
 
Q S

Q S

25/10/2012 15:35:36
Quote Anchor link
Ik zou eens kijken of je iets kan doen met de query. Nu haal je elke keer alle records op en dat is dan weer zonde.
 
Albert de Wit

Albert de Wit

25/10/2012 15:39:48
Quote Anchor link
dat is nou net het probleem. ik haal nu 3424 records op elke keer maar gebruik daar maar 15 van. hoe kan ik zoiets dan doen?

als ik bijvoorbeeld ga filteren op 'item LIKE %d%' en een Limit erop zet, hoe bereken ik dan weer de huidige pagina etc
 
Q S

Q S

25/10/2012 15:43:52
Quote Anchor link
Je zou kunnen werken met een ID of een volgorde.
Dus dan krijg je iets als dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query("SELECT * FROM items where ID between '".$begin."' and '".$eind."'");
?>


In dit geval krijg je wel minder records op een pagina als je er 1 verwijderd uit de database. Daarom zou je ook met volgorde kunnen werken die kun je namelijk bijwerken als je een record verwijderd.

EDIT: wellicht kom je hier verder mee http://php.about.com/od/phpwithmysql/ss/php_pagination.htm
Gewijzigd op 25/10/2012 15:47:52 door Q S
 
Albert de Wit

Albert de Wit

25/10/2012 15:47:13
Quote Anchor link
onderaan mijn code waar de nummertjes worden aangemaakt staat ook dat hij het totaal aantal pagina's controleerd. hoe doe ik dat dan? gewoon nog een query met count(id_item) erin?
 
Q S

Q S

25/10/2012 15:48:50
Quote Anchor link
@Albert zie ook even mijn EDIT, wellicht dat dat je op een idee brengt
 
Kris Peeters

Kris Peeters

25/10/2012 17:10:39
Quote Anchor link
Dit is kritiek op dit script, maar eigenlijk op de meeste pagination scripts die ik op deze site zie.
Zie dit dus als een boodschap aan iedereen (die zich geroepen voelt), en aan niemand in het bijzonder.

Ik zie altijd dat men veel te diep (ver/laag...) in de code nog queries uitvoert.

Nochtans ... Die paginanummering is afhankelijk van slechts twee getallen: het totale aantal items; het aantal items per pagina.
Om deze code generiek te houden (herbruikbaar), zou dit moeten gescheiden zijn.
Je zou moeten komen tot een constructie als:

function paginate($itemsPerPage, $totalItems) {
...
// return de pagination string
}

En die functie moet dus totaal onafhankelijk zijn van de naam van de tabel en velden die je toevallig op deze site nodig hebt.

De juiste formattering van de links zou ik dan via een callback regelen.
Gewijzigd op 25/10/2012 17:31:25 door Kris Peeters
 
Albert de Wit

Albert de Wit

25/10/2012 18:53:04
Quote Anchor link
Oke Kris, stel ik wil:

[eerste pagina] [-2] [-1] [huidige pagina] [+1] [+2] [laatste pagina]

dus stel de huidige pagina is 18 en het totaal aantal pagina's is 29

[1] [16] [17] [18] [19] [20] [29]

index.php?page=18

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

function paginate ($total_items){
    $current_page = $_GET['page'];
    $items_per_page = 15;    

    $begin = $current_page*$items_per_page;

    $query = mysql_query("SELECT * FROM items LIMIT ".$begin.",".$items_per_page);
    
    if ($current_page>=4){
        $minus_2 = $current_page-2;
    }
else{
        $minus_2 = 1;
    }

    $plus_2 = $current_page+2;

    $first = 1;
    $last  = ceil($total_items/$items_per_page);
    
    $numbered_pages = '<a href="index.php?page=1">First</a>';
    for ($i = $minus_2; $i <= $plus_2; $i++){
        $numbered_pages .= '<a href="index.php?page='.$i.'">'.$i.'</a>';
    }

    $numbered_pages .= '<a href="index.php?page='.$last.'">Last</a>';

    return $numbered_pages;
}


?>


Ik heb dit snel even geimproviseerd maar bedoelde je dit?
 
Andy V

Andy V

25/10/2012 19:14:38
Quote Anchor link
als je pagina 1 hebt kan je 1*15 doen om de eerste pagina te bekijken, als je de 2e pagina kijkt krijg je 2*15 = 30 dan doe je 30-15 en dan heb je de itemsn van 15-30

dus

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if($_GET['page']){

$page = $_GET['page'];

switch($page):
case (
$page > 1): // vanaf pagina 2 doe je een berekening
$begin = ($page -1) * $items_per_page;
// -1 omdat 1 x 15 = 15, 2 x 15 = 30, 3 x 15 = 45 etc..
//en als pagina 2 zou zijn en je doet 2 x 15 zou je 15 items overslaan


break;

default:
// op pagina 1 begin je bij 1
$begin = 1;
break;
endswitch;

}

$query = mysql_query("SELECT * FROM items LIMIT ".$begin.",".$items_per_page);

?>


dit zou wel moeten werken voor je query


Toevoeging op 25/10/2012 19:16:16:

Andy V op 25/10/2012 19:14:38:
als je pagina 2 hebt kan je 1*15 doen om de tweede pagina te bekijken, als je de 3e pagina kijkt krijg je 2*15 = 30 (tweede pagina)

voor pagina 1 hoef je geen berekening te doen, dan begin je gewoon bij 1

dus

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if($_GET['page']){

$page = $_GET['page'];

switch($page):
case (
$page > 1): // vanaf pagina 2 doe je een berekening
$begin = ($page -1) * $items_per_page;
// -1 omdat 1 x 15 = 15, 2 x 15 = 30, 3 x 15 = 45 etc..
//en als pagina 2 zou zijn en je doet 2 x 15 zou je 15 items overslaan


break;

default:
// op pagina 1 begin je bij 1
$begin = 1;
break;
endswitch;

}

$query = mysql_query("SELECT * FROM items LIMIT ".$begin.",".$items_per_page);

?>


dit zou wel moeten werken voor je query
 
Albert de Wit

Albert de Wit

30/10/2012 09:11:00
Quote Anchor link
als iemand hier nog een paginering functie zoekt, ik heb er net 1 in het engels gemaakt, ook voor filter vriendelijke paginering (dus filters in de $_GET variabelen)

Let wel: dit is snel geimproviseerd


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
function paginate($items_per_page, $ammount_of_rows){
    if ($ammount_of_rows!=0){
        $ammount_of_pages = ceil($ammount_of_rows/$items_per_page);
    }
else{
        return '';
    }

    
    // current page is $page
    
    if (isset($_GET['page'])){
        $page = $_GET['page'];
    }
else{
        $page = 1;
    }

    // page is 7
    // [<<] [5] [6] [[7]] [8] [9] [>>]
    
    // page is 1
    // [<<] [[1]] [2] [3] [4] [5] [>>]

    
    if ($page>3){
        $min_page = $page-2;
        $max_page = $page+2;
    }
else{
        $min_page = 1;
        $max_page = $min_page+4;
    }

    
    if ($max_page >= $ammount_of_pages){
        $max_page = $ammount_of_pages;
        $min_page = $max_page-4;
    }

    
    $url = $_SERVER['REQUEST_URI'];
        
    if (isset($_GET['page'])){
        $first = str_replace('page='.$_GET['page'],'page=1',$url);
    }

    
    $numbers = '<div class="paginate"><a href="'.$first.'"><<</a>';
    for ($i = $min_page; $i <= $max_page; $i++){
        $new_url = str_replace('page='.$_GET['page'],'page='.$i,$url);
        if ($i == $page){
            $class = 'class="current_page"';
        }
else{
            $class = 'class="other_page"';
        }

        $numbers .= '<a href="'.$new_url.'" '.$class.'>'.$i.'</a>';
    }

    if ($ammount_of_pages!=0){
    $last = str_replace('page='.$_GET['page'],'page='.$ammount_of_pages.'',$url);
    $numbers .= '<a href="'.$last.'">>></a></div>';
    }

    
    return $numbers;    
}

?>
 



Overzicht Reageren

 
 

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.