Meerdere opgedeelde pagina's in dropbox?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pascal Schuffelers

Pascal Schuffelers

10/10/2018 19:44:31
Quote Anchor link
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.:
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
            $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?
Gewijzigd op 10/10/2018 21:43:02 door - Ariën -
 
PHP hulp

PHP hulp

19/10/2018 16:36:39
 
- Ariën -
Beheerder

- Ariën -

10/10/2018 19:54:21
Quote Anchor link
En wat werkt er dan niet? En wat gebeurt er wel?
Een goede code-formatting met wat tabs zou het wel wat leesbaarder maken.
Gewijzigd op 10/10/2018 19:55:00 door - Ariën -
 
Pascal Schuffelers

Pascal Schuffelers

10/10/2018 19:56:14
Quote Anchor link
Nou hij de de pagina's wel zien in de dropdown maar als ik erop klik gebeurd niks.
Zal anders even kijken of ik dat weer zover krijg.
 
- Ariën -
Beheerder

- Ariën -

10/10/2018 19:58:14
Quote Anchor link
Dat klopt. In JavaScript moet je de value uitlezen, en die gebruiken in een window.location.href = '...';
Gewijzigd op 10/10/2018 19:58:46 door - Ariën -
 
Pascal Schuffelers

Pascal Schuffelers

10/10/2018 19:58:18
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
$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>';


Toevoeging op 10/10/2018 19:59:25:

uh help?
 
Rob Doemaarwat

Rob Doemaarwat

10/10/2018 20:08:13
Quote Anchor link
Blijkbaar kun je gewoon een onclick aan een <option> hangen, dus dan zou je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo '<option onclick="location.href=\'index_metingen.php?page='.$i.'\'">'.$i.'</option>';

(volgens mij heb ik alle quotes nu goed ...)

Maar dit werkt (blijkbaar) alleen bij een muis-klik. Zie de SO link voor een complete aanzet naar een oplossing die ook met het keyboard werkt.
 
Pascal Schuffelers

Pascal Schuffelers

10/10/2018 20:21:16
Quote Anchor link
@Rob helaas doet die niks.
Ben je link aan het doorlezen , maar krijg ik tot op heden niks werkend mee.
 
- Ariën -
Beheerder

- Ariën -

10/10/2018 20:29:40
Quote Anchor link
Hoe ziet je HTML eruit?
Het zou moeten werken volgens deze JSfiddle

Maar persoonlijk zou ik dit direct in JavaScript opvangen, en niet in een inline event.
In jQuery wordt het dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$('select').change(function() {
  window.location = $(this).val();
});
Gewijzigd op 10/10/2018 20:30:30 door - Ariën -
 
Pascal Schuffelers

Pascal Schuffelers

10/10/2018 20:37:10
Quote Anchor link
Ik heb deze code via JSfiddle getest wat ik in elkaar heb gestoken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
$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="sample" onchange="javascript:handleSelect(this)">';
            for ($i=1; $i<=$total_pages; $i++) {
                echo '<option value="index_metingen.php?page='.$i.'">'.$i.'</option>';
                if ($i==$page)  echo " class='curPage'";
                };
                echo '</select>';  ?>


<script type="text/javascript">
function handleSelect(elm){
window.location = elm.value; /* .html if html file */
}
</script>

Dit werkt , gaat door naar de juiste pagina, het enigste is dat hij als hij de juiste pagina geladen heeft, terug springt in de dropdown naar 1.
 
- Ariën -
Beheerder

- Ariën -

10/10/2018 20:38:14
Quote Anchor link
Dan moet je op een manier onthouden waar die dropdown op moet staan. Een $_GET waarde bijvoorbeeld.

ALs je niet inline je JavaScript wilt afhandelen, en geen jQuery wilt gebruiken. Dan kan je targetten op je ID. Veel netter. ;-)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<select id="redirect">
    <option value="">Please select</option>
    <option value="https://www.google.com">Google</option>
    <option value="https://www.phphulp.nl">PHPhulp</option>
</select>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
var selectEl = document.getElementById('redirect');

selectEl.onchange = function(){
    window.location = this.value;
};
Gewijzigd op 10/10/2018 20:40:34 door - Ariën -
 
Pascal Schuffelers

Pascal Schuffelers

10/10/2018 20:39:09
Quote Anchor link
Nou ik ben al blij dat ik zover ben gekomen als dit :(
 
- Ariën -
Beheerder

- Ariën -

10/10/2018 20:41:27
Quote Anchor link
Waar komt $page vandaan?
 
Pascal Schuffelers

Pascal Schuffelers

10/10/2018 20:46:48
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$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;
 
- Ariën -
Beheerder

- Ariën -

10/10/2018 21:08:14
Quote Anchor link
class='curPage'
Dit staat na je <option>-tag. En dat kan niet.
je moet een selected in je option aanbieden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
          <option selected value="bla">Bla die blah</option>
 
Thomas van den Heuvel

Thomas van den Heuvel

11/10/2018 00:24:28
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT FOUND_ROWS()

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
<?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()';

// ...
?>
 
Pascal Schuffelers

Pascal Schuffelers

11/10/2018 06:02:45
Quote Anchor link
@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.
Gewijzigd op 11/10/2018 06:04:56 door Pascal Schuffelers
 
Thomas van den Heuvel

Thomas van den Heuvel

11/10/2018 10:50:00
Quote Anchor link
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.
 



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.