login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Nieuwssysteem in combinatie met paginasysteem (Opgelost)

Offline NinovdBosch - 14/07/2011 16:17 (laatste wijziging 14/07/2011 16:18)
Avatar van NinovdBoschLid Ik heb een tijdje geleden voor mezelf een nieuwssysteem ontwikkeld.
Hij is te vinden op http://www.ninovdbosch.com/news.php

Nu heb ik het paginasysteem van de volgende tutorial gebruikt:
http://www.site...P_en_MySQL

Het probleem is echter dat je niet het hele nieuwsoverzicht ziet en dat hij dus wel alle mySQL data zou moeten opvragen en dan in het weergeven het limiet doet. Want wat nu gebeurt is dat je vanaf pagina 2 een verkort bericht opvraagt van pagina 2 en dan wordt hij niet weergegeven omdat daarna alleen de berichten van pagina 1 worden opgevraagd.

Heeft iemand een goed voorbeeld of idee hoe ik deze probleem kan verhelpen? Bij voorbaat dank.

Mijn pagina is dus op de reeds genoemde link te vinden. Mijn code geef ik hieronder vrij:
Plaatscode: 141132

2 antwoorden

Gesponsorde links
Offline Wave6 - 21/07/2011 10:26 (laatste wijziging 21/07/2011 10:27)
Avatar van Wave6 PHP beginner Ik stuur geen uitgewerkte code, omdat dit niet relevant is.

Ik pas paginering toe, bij bijvoorbeeld gastenboeken, etc...

Wat ik doe is alle items opvragen uit de database (zonder limit). (Bijv. SELECT * FROM `table` ORDER BY `date_in`).

Deze items zet in in een array.
  1. <?php
  2. $sSql = "SELECT * FROM `tabel` ORDER BY `date_in`";
  3. $rResult = mysql_query($sSql) or die (mysql_error());
  4.  
  5. $aResult = array();
  6. while($aTmp = mysql_fetch_array($rResult)) {
  7. $aResult[] = $aTmp;
  8. }
  9.  
  10. $iItemCount = count($aResult); //aantal items gevonden in db. http://php.net/mysql_affected_rows()
  11. $iItemsOnPage = 10; //aantal items per pagina
  12. $aItemSlicedArray = array_slice($aResult, 0, $iItemsOnPage);
  13.  
  14. $iPagesCount = count($aItemSlicedArray); //stel dat je 20 items in DB hebt. Dan is de waarde van iPagesCount 2! (dus 2 pagina's).
  15.  
  16. $iPage =0;
  17. if(isset($_GET['page'])) {
  18. if(is_numeric($_GET['page'])) {
  19. $iPage = $_GET['page'];
  20. } else {
  21. //hanlde hack attempt.
  22. }
  23. }
  24.  
  25. }
  26. echo json_encode($aItemSlicedArray[$iPage]);
  27. ?>


http://php.net/array_slice
http://php.net/json_encode
http://jquery.com/

Vervolgens echo ik met json_encode een pagina array op het scherm, die te doorlopen is met jQuery, mootools, EXTJS of iedere willekeurige andere taal die kan werken met json.

Je kan natuurlijk ook gebruik maken van deze oplossing zonder JSON_ENCODE.
Ik gebruik json encode zodat ik gebruik kan maken van ajax en netjes mooie blokjes array kan laden op de achtergrond.

Ik hoop dat ik je hiermee op weg heb geholpen.

Met vriendelijke groet,

Wesley van der Meer
Bedankt door: NinovdBosch
Offline NinovdBosch - 24/07/2011 15:08 (laatste wijziging 22/08/2011 17:16)
Avatar van NinovdBosch Lid Hallo. Ja, je hebt me zeker op weg geholpen hiermee. Ik hoop dat het me lukt zo'n systeem netjes in te bouwen in mijn eigen syste(e)m(en).

Dit kan ik pas over iets meer dan een maand doen ivm. afwezigheid, maar ik vond het wel op zijn plaats even mijn dank uit te spreken.

Bedankt,

Nino van den Bosch

Toevoeging: ik wil graag nog vragen hoe dit te doorlopen is. Het halen van bepaalde kolommen uit de mySQL tabel array met een foreach oid. Met de meest bekende opties kom ik er niet uit en ik heb vrijwel geen ervaring met arrays. Ik zou het apprecieren als iemand me hiermee kon helpen. 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.203s