Paginering

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end React developer

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

React developer Inhouse cloudplatform

Functie De functie: Als front-end developer kom je te werken naast 2 andere front-end/React developers, waaronder één senior. Een hele mooie kans dus om in korte tijd veel nieuwe kennis en ervaring op te doen. Ze hebben momenteel veel werk hierin en daarom willen ze het team graag uitbreiden. Het is van belang dat je, zeker gezien het vele thuiswerken, in ieder geval al een aantal projecten hebt gedaan in React. Taken waar je aan kunt denken zijn het ontwikkelen van client-applicaties o.b.v. HTML5, React en andere open standaarden. Ook ben je nauw betrokken bij het implementeren van designs o.b.v.

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van de warehouses. Op dit moment wordt er nog gebruik

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Boskoop dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat technische klussen uitvoeren op locatie bij klanten.Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat software en webapplicaties ontwikkelen met behulp van de talen

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden je MBO of HBO ICT in ontvangst mogen nemen? Of ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een uitdagende werkgever in de regio van Tilburg zijn wij op zoek naar een ambitieuze back-end programmeur met affiniteit met MS Acess. Samen met een enthousiast team ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL, Maar affiniteit met MS Acess is nog belangrijker. Je bent sociaal naar klanten en flexibel ingesteld. Je denkt altijd in kansen en gaat graag de uitdaging aan. Verder

Bekijk vacature »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

PHP Developer Symfony

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail. Hier ga je werken Als PHP Developer kom je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development teams welke ieder verantwoordelijk zijn voor hun 'eigen' klanten. Jouw team bestaat uit 6 backend

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Dynamics Ontwikkelaar

Dit ga je doen Ontwikkelen van Dynamics 365 voor de interne uitrol; Samen met de consultants sparren met klanten over de wensen en eisen; Ontwikkelen van Dynamics 365 voor verschillende grote klanten; Technische analyse en testen; Meedenken over het gebruik en de richting van Dynamics binnen de organisatie. Hier ga je werken Onze opdrachtgever, gevestigd in regio Eindhoven, levert een compleet dienstenpakket op het gebied van IT. Zij pakken verschillende (complexe) vraagstukken van grote organisaties op. De sfeer intern is gezellig en informeel. Men houdt van hard werken maar gezelligheid door middel van een borrel of gezamenlijke lunch komt er

Bekijk vacature »

SQL beheerder / ontwikkelaar

Functie omschrijving Voor een klant in omgeving Tiel zijn wij op zoek naar een SQL beheerder met affiniteit met technisch applicatiebeheer. Je krijgt een fijne in-house werkplek waar je gaat werken aan diverse projecten. Dit bedrijf doet het beheer van databases voor een aantal bancaire klanten. Op dit momenten hebben zij ruim 1500 databases in beheer. Jouw werkzaamheden gaan er als volgt uit zien: Je gaat de development afdeling ondersteunen bij het ontwikkelen van MS SQL Scripts. Je zal zowel zelfstandig als in teamverband MS SQL databases installeren & beheren. Je monitort en onderzoekt incidenten en de achterliggende oorzaken. Je

Bekijk vacature »

.NET Developer C#

Dit ga je doen Als developer nieuwe gave features implementeren; Werken met technieken als C# .NET en (REST) API's webservices; Ontwikkelen van koppelingen middels API's; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken Als C# .NET Developer wordt je verantwoordelijk voor het ontwikkelen van applicaties voor belangrijkste product van deze organisatie. Dit product is een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Er

Bekijk vacature »

Front-end Angular developer

Functie In jouw rol als Front-End developer werk je samen met de backend developers om middels tweewekelijkse sprints het platform naar een hoger niveau te tillen. Hiernaast heb je affiniteit met data en werk je graag samen met het team om de gegevensintegriteit en -beveiliging te waarborgen, om ervoor te zorgen dat de gebruiker wereldwijd de beste SaaS-services heeft. Deze organisatie heeft meer dan 100 mensen in dienst, waarvan er 45 in Nederland werken. Het ontwikkelteam bestaat uit 10 mensen en is verdeeld in 2 scrumteams. Het eerste team bestaat uit Java en Scala ontwikkelaars. Het tweede team, waar jij

Bekijk vacature »

Full Stack PHP Developer

Functieomschrijving Ervaren PHP Developer gezocht! Wij zijn op zoek naar een ervaren PHP Developer die het IT team van een organisatie in de regio Ermelo gaat versterken. Voor deze functie zijn we op zoek naar een enthousiaste en breed georiënteerde IT-er die deze innovatieve organisatie nog een stap verder gaat brengen. Wij zijn op zoek naar iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je bent verantwoordelijk voor het samenwerken met een externe partij het is hierbij jouw taak om deze partij uit te dagen op het geleverde werk. Het schrijven van concepten aan de AI

Bekijk vacature »

Junior/medior PHP developer Onderwijssector

Functie Momenteel zijn ze op zoek naar een developer die, veelal fullstack, mee gaat werken aan de ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js

Bekijk vacature »

.NET Developer Microservices

Dit ga je doen Je taken zullen voornamelijk bestaan uit: Het ontwikkelen van software, inclusief vormgeving, implementaties, integraties en (automatisch) testen (.NET, C#, Azure, Docker, Microservices, Angular); Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Het uitvoeren van risico analyses; Een bijdrage leveren aan het continuous quality improvement process. Hier ga je werken Dat kanker een verschrikkelijke ziekte is die de wereld uit geholpen moet worden, is duidelijk. Binnen deze Gelderse organisatie die duizenden ziekenhuizen van producten voorziet, proberen ze daar via technische innovaties aan bij te dragen. Samen met 10 collega .NET developers

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

25/04/2024 18:59:04
 
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.