Paginering

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

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 »

C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Testen en valideren van de ontwikkelde software. Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je gaat aan de slag met diverse technologieën en frameworks. Denk hierbij aan C#, JS frameworks, HTML, CSS, TypeScript,

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Anaplan Developer

Dit ga je doen What are you going to do: Picking up Stories: Design planning had, how are we going to build it in Anaplan; Talking to the end user to build a forecasting model; Having contact with the data team about which data is needed; Being able to convert an Excel sheet into a 3, 4 or 5 dimensional modeling environment; Giving knowledge sessions about Anaplan; Solving incidents; Making instructional videos on how teams should read forecasts; Writing blogs about forecasting. Hier ga je werken We are looking for an Anaplan Builder to deliver end-to-end solutions within a big

Bekijk vacature »

Senior Applicatie ontwikkelaar Java

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving We verwachten van je,

Bekijk vacature »

.NET Developer Medior Senior

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Herbruikbare componenten maken; Testen; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als .NET Developer kom jij terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als .NET Developer werk jij aan het ontwikkelen van verbeterde software voor

Bekijk vacature »

Senior PHP developer

Functie Als Senior PHP developer heb je een sterke mening over de architectuur van projecten en de processen binnen het team. Je bent de sparringpartner voor je Team Lead. Ook ondersteun je met jouw kennis de minder ervaren developers in jouw team. Ze werken regelmatig aan projecten vanaf scratch en dit geeft ruimte om voor nieuwe technieken te kiezen. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en

Bekijk vacature »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

IoT Developer

Ben jij innovatief, heb jij passie voor energie en ben je data gedreven? Bouw dan mee aan IoT binnen Bredenoord. Samen met een gedreven team werk jij aan mooie technische en innovatieve oplossingen. Wat houdt de functie van IoT Developer in? Binnen Bredenoord zijn wij momenteel volop in ontwikkeling met ons IoT platform. Als uitbreiding van ons team zijn wij op zoek naar een IoT Developer. Je zal in projectverband meehelpen met het implementeren van IoT vraagstukken binnen Bredenoord. Als IoT Developer op onze R&D-afdeling word je verantwoordelijk voor het verder inrichten en beheren van ons nieuwe IoT platform. Dat

Bekijk vacature »

Back-End Developer in Laravel / PHP

Functie omschrijving Wij zijn op zoek naar een Medior PHP Laravel Developer voor een gaaf bedrijf in de omgeving van Amsterdam! Voor een enthousiast team die zich graag bezig houdt met softwareontwikkeling zijn wij op zoek naar versterking. Je werkt in een klein ontwikkelteam en bent zeer betrokken bij alle aspecten van de softwareoplossingen. Van het ontwerpen tot de oplevering. Binnen deze functie ga je aan de slag met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je krijgt veel te maken met koppelingen naar systemen en de verzoeken van de klant. Je komt terecht in een team, waarbij

Bekijk vacature »

.NET Developer Shared Driving

Bedrijfsomschrijving Onze klant richt zich op het toegankelijker maken van steden, een fantastisch mooi streven. Hoe ze dat doen? Met eigen ontwikkelde software, waarmee vervoersmiddelen gedeeld kunnen worden. Deze inspirerende werkgever maakt een maatschappelijke impact en dat doen ze nu al zo'n 25 jaar! Het bedrijf is gevestigd in het centrum van Rotterdam en kent ongeveer zo'n 90 medewerkers. Het personeel is lekker gewoon gebleven! Iedereen kleedt zich zoals hij of zij dat zou willen en de sfeer is er erg fijn. Een leuke werkgever om voor te werken, en bovendien zijn er voor jou als Software Developer veel mooie

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Junior Front end developer

Functie Als Front end developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

C# .NET Software Ontwikkelaar

Functie omschrijving Gezocht: Software Developer C# .NET voor een dynamische organisatie! Ben je onlangs afgestudeerd of ben je toe aan de volgende stap in je professionele carrière? Lees dan verder! We zijn momenteel op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die onze eindklant in de regio Arnhem kan versterken. In deze functie werk je aan verschillende projecten en bezoek je vaak klanten. Je kunt een rol verwachten met veel uitdaging, diversiteit en verantwoordelijkheid. Bedrijfsprofiel Binnen welke organisatie ga je aan de slag? Je gaat werken bij een organisatie die zich specialiseert in het

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

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/12/2024 02:28:07
 
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.