Meerdere opgedeelde pagina's in dropbox?
https://image.ibb.co/dfNXDp/paginas.png
De code die ik hiervoor heb is deze.:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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> ";
};
$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 -
Een goede code-formatting met wat tabs zou het wel wat leesbaarder maken.
Gewijzigd op 10/10/2018 19:55:00 door - Ariën -
Zal anders even kijken of ik dat weer zover krijg.
Gewijzigd op 10/10/2018 19:58:46 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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>';
$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?
Blijkbaar kun je gewoon een onclick aan een <option> hangen, dus dan zou je:
(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.
Code (php)
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.
Ben je link aan het doorlezen , maar krijg ik tot op heden niks werkend mee.
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:
Gewijzigd op 10/10/2018 20:30:30 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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>'; ?>
$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.
ALs je niet inline je JavaScript wilt afhandelen, en geen jQuery wilt gebruiken. Dan kan je targetten op je ID. Veel netter. ;-)
Code (php)
1
2
3
4
5
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>
<option value="">Please select</option>
<option value="https://www.google.com">Google</option>
<option value="https://www.phphulp.nl">PHPhulp</option>
</select>
Code (php)
1
2
3
4
5
2
3
4
5
var selectEl = document.getElementById('redirect');
selectEl.onchange = function(){
window.location = this.value;
};
selectEl.onchange = function(){
window.location = this.value;
};
Gewijzigd op 10/10/2018 20:40:34 door - Ariën -
Nou ik ben al blij dat ik zover ben gekomen als dit :(
Waar komt $page vandaan?
Dit staat na je <option>-tag. En dat kan niet.
je moet een selected in je option aanbieden:
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:
Dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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()';
// ...
?>
// 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()';
// ...
?>
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
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.