![]() |
[PHP] Page limiet maken
He allemaal, ik heb een gastenboek zonder mysql . . . hij werkt echt helemaal goed. Maar het probleem is nou dat ik geen page limiet heb. Dus als er 100 berichten in staan, staan ze allemaal op 1 pagina.
Het lijkt mij lastig om de pagina te 'limiteren', omdat het dus niet in mysql werkt. Maar hier moet dus wel een optie voor zijn. Ik heb overal al goed gezocht . . . en daarom vraag ik het hier maar. weten jullie oplossing?? alvast hartstikke bedankt. nEEt |
Citaat:
Maak een query die de berichten ophaalt in ASCENDING order op het attribuut 'id'. zolang je in die lus zit, laat je de 'gefetchte opbjecten eruit halen' PHP-code:
|
Citaat:
Citaat:
|
Als de reacties in een oplopende array staan
gewoon de array met de keys van 25 tot 50 uitlezen.. |
ja de berichten worden opgeslagen in een txt-file . . . ze staan gewoon op array (dit is gewoon per regel of niet) dus op elke regel van het txt-bestand staat een bericht met de benodigde informatie erin
... Ik zou niet weten hoe je zoiets op zou moeten vragen om te limiteren |
Citaat:
dat krijg je met n00bvragen, dan ga je maar de helft lezen :p voor zover ik het probleem nu snap is het idd gewoon de index van de array limiteren. zoals trilo zegt. |
Citaat:
|
Citaat:
maar hoe limiteer ik dan die index van de array? |
Citaat:
PHP-code:
|
Is een for-loop niet veel netter in dit geval?
PHP-code:
|
Maar hoe gebruik je zo iets?
Moet je dit gewoon kopieren en inplakken in de pagina die gelimiteerd moet worden??? ben redelijk noob op dit gebied, wantik ben pas bezig met php. |
Kijk ik zal hier ff het gehele script plaatsen van mij. . .
PHP-code:
|
Citaat:
|
if ($contr == ad)
vind ik erg raar die 'ad'...is dat een string? dan moet het 'ad' zijn, is het een variabele? dan meot het $ad zijn. Maarja kan je ff alleen de nuttige informatie geven? Beetje teveel script om door te ploeteren :p Of zeg ff in welke array je de verschillende regels uit het tekstbestand leest. edit: ik denk dit; while ($i != -1) { $gast = explode("|", $file[$i]); als je dan dit doet: PHP-code:
while (bla){ if (bla) { while (bla){ } } } maar WEL: while (bla) { if (bla) { while (bla) { } } } |
Wat zijn array's?? onderaan main.php staat de opmaak hoe het bericht eruit komt te zien. en waar het wordt opgeslagen
Ik kan het moeilijk vinden wat precies arrays zijn... sorry |
Citaat:
een array is van de vorm: arraynaam[index] |
ok heb ikgedaan.. is dus gewoon een manier om de data te sorteren, maar hoe kan ik dan in mijn script een volgende , vorige functie inbouwen??
|
Ik snap er echt de ballen niet van... als ik dat deel van jou invoeg gebeurt in het gastenboek niks hoor....
|
Citaat:
|
Citaat:
|
Citaat:
|
Voeg toe:
na: $gast = explode("|", $file[$i]); zet je: if (($i > 10) && ($i < 20)) { en voor: $i = $i - 1; zet je } Dan zou het kunnen werken, je ziet dan bericht 11,12,13,14,15,16,17,18 en 19. |
Citaat:
|
Dat heb ik toevallig zelf ook.
Maak een pagina (ohja ik zet alleen de if en de sessie zooi er neer) begin.php PHP-code:
dan next.php PHP-code:
PHP-code:
Nu loop je wel alle berichten vna oud naar nieuw door, voor jou de opgave om het om te bouwen van nieuw naar oud |
Hey echt super dat je dit allemaal doet, maar ik snap hier niet veel van. Ik wil best die veranderingen toe gaan passen hoor maar dan moet ik eerst het principe weten hoe het werkt.
Moet ik nu nieuwe pagina's gaan maken zoals begin.php , next.php en previous.php ??? en moet ik die linken in het originele gastenboek.php??? |
Kopieer gastenboek.php 3 keer en noem die begin.php, next.php en previous.php . (gastenboek.php heb je dan niks meer mee te maken) en lees dan de tekst hieronder)
Als mensen voor het eerst op je gastenboek komen, komen ze op begin.php (duh ;)) Daar maak je een sessie aan (zie de code die ik gegeven heb) En maak je een sessie variabele aan (die heb ik nummer genoemd, van pagina nummer). Per pagina heb ik in dit script gekozen voor 10 berichten, maar dat kan je natuurlijk zelf kiezen. In begin.php geeft ie nu alle eerste 10 berichten aan. (0..9) Dit is precies het script gastenboek wat je nu al hebt alleen dan if (($i > 10) && ($i < 20)) {} vervangen door if ($i < 10) { } Bij alle pagina's gaat het steeds om die 'if'. Die selecteert wat de gebruiker precies te zien krijgt en wat niet. Nou in next.php (apart bestand) is precies hetzelfde als de originele gastenboek.php alleen nu voeg je bovenaan toe PHP-code:
en previous.php is hetzelfde als next.php, maar dan ipv $_SESSION['nummer'] + 1; een $_SESSION['nummer'] - 1; snappie? |
ohja en over de opmaak, ik vergat de tekst, leer dit jezelf aan, is een stuk overzichtelijker:
ohja gebruik een goede opmaak, dus NIET: PHP-code:
PHP-code:
|
ok, echt bedankt voor je hulp... jij bent tenminste iemand waaraan andere forumgebruikers eeen voorbeeld kunnen nemen ;)
Nu ga ik maar eens ff bedenken hoe ik kan oplossen om de lijst van nieuw naar oud te krijgen :rolleyes: haha echt bedankt |
Citaat:
Citaat:
|
Citaat:
|
Ik krijg de volgende foutmelding, ondaks hij het toch doet. Hoe moet je er voor zorgen dat de volgende en de vorige functie niet door blijft gaan naar lege pagina's (dus als je bij de het laatste bericht bent geweest, of het 1e)
Warning: Cannot send session cache limiter - headers already sent (output started at /home3/neet/public_html/index.php:7) in /home3/neet/public_html/begin.php on line 4 Op line 4 staat de begin van de session: PHP-code:
|
session_start(); moet overal bovenaan (na <? ) staan in je bestanden.
Daarbij moet je nooit teruggaan naar begin.php en hoe je het maximum kan bepalen, denk maar eens na :p |
Hij doet het echt niet, dan krijg ik alleen maar meer van die fouten
|
alles.php
<? session_start(); andere code ?> dit moet voor begin, previous en next. De ondergrens is natuurlijk makkelijk te bepalen. Als $_SESSION['nummer']=0 dan mag er geen previous button zijn. Die error die jij tegen komt, krijg ik volgens mij alleen als ik includes gebruik. Zitten er toevallig submit buttons in begin.php of next.php of previous.php? |
ja het is een gastenboek, er zit een form in met submit
(en ik include begin, next en previous) misschien zou ik het form in een aparte pagina moeten maken??? |
Citaat:
|
ooh haha, verdomme . . . Ja ik heb dus een hele pagina (tabellenpagina met de standaartopmaak), ik wil dan gewoon het gastenboek includen.
|
nou eh, dan is het nog niet zo'n probleem... met sessies kan het ook, maar dna moet ik het hele script zien en ik heb eigenlijk geenzin om het allemaal uit te vogelen :p dan maar anders:
gewoon in de url de paginanummer meegeven ;) en dan ophalen me $_get['nummer']; dat nummer van buitenaf beinvloeden boeit toch geen reet (ivm beveiliging). Dussuh begin op ../gastenboek.php?nummer=0 dat nummer=0 haal je op met $_GET['nummer']; sla die ff op in de variabele $nummer. Dan als je op next drukt krijg je $nummer = $nummer + 1; en dan link je naar ../gastenboek.php?nummer=$nummer |
Ik heb em net zonder include gedraaid, en zonder die submit (form),die had ik in een aparte pagina geladen. Maar nog steeds die fouten...
|
eh kijk eens aan:
Message Warning: Cannot send session cache limiter - headers already sent Occurance PHP, HTML, webpages, using start_session() or headers() Cause The PHP function such as headers(), used with start_session(), produces HTML headers. When the PHP fragments are placed in the body of the HTML, this causes errors because the PHP fragments are trying to put HTML headers within the HTML body. Solution Put the PHP fragments before the HTML body tag. weet je zeker dat je session_start(); helemaal bovenaan zet!? (zet ze anders ook eens in het bestand waar je de rest include, misschien dat dat helpt) |
mmm... ff kijken
|
Alle tijden zijn GMT +1. Het is nu 10:28. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.