Ik heb bij veel pagina's dat de links als nummer eronder worden geplaatst zie foto.:

https://image.ibb.co/dfNXDp/paginas.png

De code die ik hiervoor heb is deze.:


            $sql = "SELECT COUNT(Id) AS total FROM metingen";
            $q = $pdo->prepare($sql);
            $q->execute(array($Id));
            $data = $q->fetch(PDO::FETCH_ASSOC);
            $total_pages = ceil($data["total"] / $results_per_page); // calculate total pages with results

         /* echo '<select name="forma" >';
            for ($i=1; $i<=$total_pages; $i++) {  // print links forall pages
echo '<option value="index_metingen.php?page=".$i>'.$i.'</option>';
                if ($i==$page)  echo " class='curPage'";
 };
                echo '</select>'*/;
            for ($i=1; $i<=$total_pages; $i++) {  // print links forall pages
            echo "<a href='index_metingen.php?page=".$i."'";
            if ($i==$page)  echo " class='curPage'";
            echo ">".$i."</a> ";
            };
            


Btw de code die in de echo staat was wat ik geprobeerd had, maar dat werkt niet.
Iemand een andere code in gedachte die wel dat doet wat ik wil?
Waar komt $page vandaan?

 $results_per_page = 10; // number of results per page
                    $pdo = Database::connect();

                    if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; };
                    $start_from = ($page-1) * $results_per_page;
class='curPage'
Dit staat na je <option>-tag. En dat kan niet.
je moet een selected in je option aanbieden:


          <option selected value="bla">Bla die blah</option>
Waarom prepare je een statement als deze geen argumenten heeft?
Waarom execute je een statement met een parameter ($array[$Id]) terwijl deze geen argumenten had?
Waarom echo je statische lappen HTML - dit vertroebelt alleen maar de leesbaarheid?
Waarom fatsoeneer je je codefragmenten niet? Het mag dan netjes ingesprongen zijn in de eigen code, maar als je fragmenten hier zo plakt, lijkt het net alsof je het over de schutting gooit.

Daarnaast is er mogelijk een (kleine) optimalistie (specifiek in MySQL) die in ieder geval je code korter maakt. Je hebt waarschijnlijk ook een query voor het uitlezen van de elementen op pagina X. Deze query bevat dan een LIMIT x, y. Als je deze query voorziet van het speciale keyword SQL_CALC_FOUND_ROWS dan kun je direct hierna een query uitvoeren die berekent hoeveel resultaten je zou hebben als die query uitgevoerd zou worden zonder de LIMIT. Dit doe je met de query:
SELECT FOUND_ROWS()

Dus:
<?php
// initialisatie pagina-variabelen zoals items per pagina, huidige pagina indien ingesteld
// ...

// voer eerst query uit voor items huidige pagina
$query =
    'SELECT SQL_CALC_FOUND_ROWS <kolommen x, y, z>
    FROM <tabel>
    WHERE <extra argumenten>
    LIMIT <pagina * items per pagina>, <paginalimiet>';

// ...

// en vraag vervolgens het aantal resultaten op om je paginanavigatie te kunnen bouwen
$query = 'SELECT FOUND_ROWS()';

// ...
?>
@Thomas, ik snap dat je het goed bedoeld en het mensen wilt uitleggen hoe het wel moet.
Ik zie ook nooit een werkende code bij je voorbeelden om te kijken wat je nu precies bedoelt.
Maar toevalliger wijs heb ik die code gevonden op deze link link

Dit is dus geen code van mij, wel zelf werkend gemaakt.


Pascal Schuffelers op 11/10/2018 06:02:45
Ik zie ook nooit een werkende code bij je voorbeelden om te kijken wat je nu precies bedoelt.

Ik heb ook geen enkele verplichting om alles voor te kauwen, het bovenstaande zou met enig kunst- en vliegwerk makkelijk realiseerbaar moeten zijn, net als dat voorbeeld uit dat artikel... wat overigens dateert uit 2011. Dat kan in de IT-wereld al redelijk gedateerd zijn.

Ik zal je de verbeterpunten van de aanpak aldaar besparen omdat je toch alleen maar in iets werkends geïnteresseerd lijkt te zijn. Vroeg of laat zul je je mogelijk realiseren dat simpelweg omdat iets werkt, maakt het dat nog niet juist.

Daarnaast leert iemand ook niets van code knippen en plakken. Het idee is juist dat ik probeer de principes over te brengen in plaats van specifieke implementaties. Vervolgens is het aan de programmeur zelf om met een beetje begrip(svorming) zelf tot iets werkends te komen. Als je begrijpt hoe iets werkt kun je iets bouwen zoals je wilt, maar als je elke keer alleen maar een voorgebakken oplossing kiest dan hoef je nooit te doorgronden hoe je zoiets zelf aanpakt. Ik zou zeggen, als je wilt (kunnen) programmeren is dit abstracte denken onontbeerlijk.

Als je elke keer direct naar een oplossing wilt blijf je hiernaar vragen omdat de weg daar naartoe je bijster blijft.

Reageren