Beste SD-ers,
Ik ben voor mezelf met een pagina systeem bezig. En op zich werkt het goed, maar nu wil ik dus de resultaten uit de database halen. Nu had ik zelf zo gedacht.
Even een reken voorbeeldtje:PHP Code:
if(isset($_GET['currentpage']))
{
$current = $_GET['currentpage'];
$nummer1 = $current * 4; // Op die manier haal ik dus de laatste item uit de database. (uit de selectie)
$nummer2 = $nummer1 - 4; // Op die manier haal ik dus het eerste item uit de database. (uit de selectie)
}
currentpage = 4
=>
$nummer1 = 16
$nummer2 = 12
Nu wil ik dus de items 12 t/m 16 uit de database halen, maar mijn vraag nu.. Hoe doe ik dat.
Eerst zat ik zelf te denken aan:
Echter daarmee krijg je niet het juist resultaat, want dan haalt hij een selectie op die ik niet wil. Het klopt gewoon niet. Nu was mijn vraag, bestaat er niet een functie, waardoor je kan zeggen, haal de gegevens op van rij 12 t/m 16???!!!PHP Code:
$q = "SELECT * FROM table LIMIT $nummer2, $nummer1";
$sql = mysql_query($q);
Ook zat ik zelf nog te denken aan de functie: mysql_num_rows($sql); Maar ik weet niet goed hoe ik die in dit verhaal kan inpassen.
Iemand hier enig idee over? Of iemand die een veel makkelijkere manier weet (die er vast en zeker is)?
Bij voorbaat dank.
- MySQL - Pagina nummering
-
08-03-2010, 18:33 #1Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
MySQL - Pagina nummering
-
08-03-2010, 18:38 #2Ondernemer
- Berichten
- 753
- Lid sinds
- 15 Jaar
Moment, zal ff klein stukje voor je posten (even maken)...
-
08-03-2010, 18:38 #3
- Berichten
- 488
- Lid sinds
- 15 Jaar
PHP Code:$begin = $_GET['iets']; ///pakt hij op hoeveelste pagina je zit.
$dbres = mysql_query("SELECT `wat` FROM `wat` ORDER BY `wat` DESC, LIMIT $begin,20");
$dbresje = mysql_query("SELECT `wat` FROM `wat` ORDER BY `wat` DESC");
/// laat 20 resultaten zien per pagina.
$i=0;
$e = 1;
$getalletje = ($e * 20);
while(mysql_num_rows($dbresje)/$getalletje > 1)
{
$i++;
$e++;
$getalletje = ($e * 20);
print "Pagina nummer is $i + 1";
}
Weet niet of je er wat aan hebt, maar had het voor het gemak maar even gekopieerd en paar dingen bewerkt.
Groeten,
Tim
-
08-03-2010, 18:43 #4Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
@tim: Het gaat niet om het ophalen van het pagina nummer, want de benummering heb ik al helemaal gemaakt. Dat werkt. Je ziet onderaan, 1,2,3,4 etc, maar het gaat er mij nu om, om de informatie van pagina 2 (bv.) op te roepen. dus item 4 t/m8 :)
@Bozkurt: Ik wacht het af :)
-
08-03-2010, 18:43 #5
- Berichten
- 488
- Lid sinds
- 15 Jaar
@tim: Het gaat niet om het ophalen van het pagina nummer, want de benummering heb ik al helemaal gemaakt. Dat werkt. Je ziet onderaan, 1,2,3,4 etc, maar het gaat er mij nu om, om de informatie van pagina 2 (bv.) op te roepen. dus item 4 t/m8 :)
@Bozkurt: Ik wacht het af :)
via $begin kom je te weten op welke pagina je zit.
Bij mijn voorbeeld:
zit je op pagina 2, dan heb je 40-60.
de hoeveelheid kan je ook aanpassen, door die 20 in een variabele om te zetten zodat je dat kan bepalen met bijv. een get.
PHP Code:for($aantal=$begin+1; $aantal++; $info = mysql_fetch_object($dbres))
{
print $aantal . " is het getal";
print $begin . " is de pagina";
print info->iets . " is de informatie";
}
TimLaatst aangepast door Tim van den Belt : 08-03-2010 om 18:48
-
08-03-2010, 18:46 #6Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
@tim: Oke, begrijp hem denk ik. Ga eens kijken of het ook bij mij werkt.
-
08-03-2010, 18:50 #7Ondernemer
- Berichten
- 753
- Lid sinds
- 15 Jaar
Hier is ie dan ( behoorlijk wat, maar lekker uitgebreid):
PHP Code:<?php
class showResults {
public function showList() {
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
$currentpage = (int)$_GET['page']; // Huidige pagina
} else {
$currentpage = 1; // Geen $_GET page? standaardpagina = 1
}
$range = 9; // Range van pagina's (E.G : 1 2 3 4 5 6 7 8 9)
$maxrow = 15; // Max. aantal results per pagina
$offset = ($currentpage - 1) * $maxrow; // niet veranderen
// In je eigen query zo bewerken:
$query = "$query LIMIT " .$offset. ", " .$maxrow;
$totalpages = ceil($numquery / $maxrow); // $numquery = even num_rows van al je records in deze tabel (results).
// Wil je dat alle ID's worden opgeteld per page.. dus bijv bij pagina 1, ID's 1 t/m 15 en pagina 2, ID's 16 t/m 30.. gebruik dan dit stukje:
$offset = ($currentpage * $maxrow - $maxrow)+1;
for($i = 0; $i < count($query); $i++) {
$ii = $offset;
$offset++; // For loopje moet natuurlijk je eigen zijn, maar bij het veld id output je dus $ii , dan krijg je netjes 1-15, 16-30 etc.
}
// Tot slot de nummeringen om naar een andere page te gaan
if ($currentpage > 1)
$results .= " <a href='1'><<</a> <a href='".($currentpage-1)."'><</a>"; // Output = << < (eerste pagina en vorige pagina)
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {
if (($x > 0) && ($x <= $totalpages)) {
if ($x == $currentpage) {
$results .= " [$x] ";
} else {
$results .= " <a href='/$x/'>$x</a>";
}
}
}
if ($currentpage != $totalpages)
$results .= " <a href='".($currentpage+1)."'>></a> <a href='".$totalpages."'>>></a>"; // Output = > >> (volgende en laatste pagina)
}
}
?>
-
08-03-2010, 18:59 #8Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
@Bozkurt: Ook deze ga ik even proberen. Als het me gelukt is (of niet) dan horen jullie van me!
Tot op heden, erg bedankt!!
-
08-03-2010, 18:59 #9Ondernemer
- Berichten
- 753
- Lid sinds
- 15 Jaar
Geen probleem, veel succes
(had je ondertussen al een pm gestuurd:-))
-
08-03-2010, 21:51 #10
- Berichten
- 204
- Lid sinds
- 15 Jaar
Waarom gebruik je hier een class met een functie erin?
Dit is absoluut niet objectgeoriënteerd programmeren!
-
08-03-2010, 22:02 #11Reinschaap Punt NL
- Berichten
- 936
- Lid sinds
- 17 Jaar
@RubenP: waar staat dan dat het objectgeoriënteerd programmeren moet zijn??
-
08-03-2010, 22:08 #12
- Berichten
- 204
- Lid sinds
- 15 Jaar
PHP Code:<?php
$woord = array (
1 = 'H',
32 = 'e',
4683246 = 'j'
);
$i = -100000000;
while($i<100000000)
{
$i = $i + 0.5;
if($i == 1)
{
echo $woord[1];
}
if($i == 32)
{
echo $woord[32];
}
if($i == 4683246)
{
echo $woord[4683246];
}
}
?>
-
08-03-2010, 22:44 #13Ondernemer
- Berichten
- 753
- Lid sinds
- 15 Jaar
@RubenP
Klopt, was de bedoeling ook niet, script is ook niet helemaal compleet.
Was meer een voorbeeld, met alle benodigdheden voor de nummering zelf :-)
-
08-03-2010, 22:58 #14Particulier
- Berichten
- 126
- Lid sinds
- 14 Jaar
Om terug te komen op de allereerste vraag:
als je rij 12 t/m 16 uit een tabel wilt hebben, gebruik dan
LIMIT 12, 5
Hiermee haal je 5 rijen op, beginnend bij rij 12.
Gebruik mysql_num_rows om het totaal aantal rijen in de selectie op te halen. Hiermee kan je controleren of er niet een pagina wordt opgevraagd die helemaal niet bestaat bij een gebrek aan rijen.
Gooi wel een sortering over de selectie, zodat de consitentie van de uitvoer over de pagina's heen zoveel mogelijk gewaarborgd is.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic