Paginanummering
Alvast heel erg bedankt :)
Ik heb even een beter beeld nodig van de situatie - waar worden de berichten dan opgeslagen?
In een .txt bestandje ;)
Ik neem aan dat de boel in een array staat?
Dan kan je met de array keys de nummering aanmaken. Overigens heb je wel veel overhead, omdat je wel alle berichten in moet lezen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$per_page = 5;
$messages = array('bericht1','bericht2'),'bericht3','bericht4','bericht5','bericht6'); // normaal gesproken is dit de array met je berichten
$count = count($messages);
if(isset($_GET['page'])&& is_int($_GET['page']){
$startkey = (intval($_GET['page']) - 1) * $per_page;
}
for($i=$startkey;$i < $count; $i++){
echo $messages[$i].'<br/>';
}
?>
$per_page = 5;
$messages = array('bericht1','bericht2'),'bericht3','bericht4','bericht5','bericht6'); // normaal gesproken is dit de array met je berichten
$count = count($messages);
if(isset($_GET['page'])&& is_int($_GET['page']){
$startkey = (intval($_GET['page']) - 1) * $per_page;
}
for($i=$startkey;$i < $count; $i++){
echo $messages[$i].'<br/>';
}
?>
Dit is een voorzet, maar waarschijnlijk kan je er zelf wel mee verder.
Je maakt een variabele voor het max. items per pagina en je zoekt uit welke pagina het gastenboek is (bijv. d.m.v. $_GET['page']). Vervolgens bereken je de bounds voor je array, zodat je weet vanaf welke iteratie je berichten moet gebruiken, en tot welke iteratie.
Dan loop je door je array heen, check je de bounds, en dan laat je aldanniet het bericht zien.
Ik hoop dat je zo wat verder kan!
Wat bedoel je daarmee?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
function getTxtFileContent($filename,$line_nr = false)
{
$handler = fopen($filename,"r") ;
if (isset($line_nr) && is_array($line_nr))
{
$i = 1 ;
}
$data = false ;
while (!feof($handler))
{
if (isset($line_nr) && is_array($line_nr))
{
$line = fgets($handler) ;
if (!in_array($i,$line_nr))
{
$i++ ;
continue ;
}
else
{
$i++ ;
$data[] = $line ;
}
}
else
{
$line = fgets($handler) ;
$data[] = $line ;
}
}
return $data ;
}
?>
function getTxtFileContent($filename,$line_nr = false)
{
$handler = fopen($filename,"r") ;
if (isset($line_nr) && is_array($line_nr))
{
$i = 1 ;
}
$data = false ;
while (!feof($handler))
{
if (isset($line_nr) && is_array($line_nr))
{
$line = fgets($handler) ;
if (!in_array($i,$line_nr))
{
$i++ ;
continue ;
}
else
{
$i++ ;
$data[] = $line ;
}
}
else
{
$line = fgets($handler) ;
$data[] = $line ;
}
}
return $data ;
}
?>
Te gebruiken als :
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
<?php
$lines = Array(1,2,3,4,5) ; //de regelnummers die je wilt ophalen
$regel_array = getTxtFileContent("text.txt",$lines) ; // Het daaderkelijke ophalen
//onderstaande code is even een voorbeeldje van hoe je de return waardes van de functie kunt uitlezen
foreach($regel_array as $regel)
{
echo $regel."<br />" ;
}
?>
$lines = Array(1,2,3,4,5) ; //de regelnummers die je wilt ophalen
$regel_array = getTxtFileContent("text.txt",$lines) ; // Het daaderkelijke ophalen
//onderstaande code is even een voorbeeldje van hoe je de return waardes van de functie kunt uitlezen
foreach($regel_array as $regel)
{
echo $regel."<br />" ;
}
?>
Hoop dat je er wat aan hebt
O ja als je geen regels opgeeft haalt hij gewoon alles op
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
maar ik werk ook met dit scriptje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$file = file_get_contents("gb.dat");
$explode = explode ("\r\n", $file);
$reverse = array_reverse($explode);
foreach ($reverse as $line) {
list($name, $date, $url, $email, $ip, $message) = explode("|", $line);
$name = trim($name);
$date = trim($date);
$url = trim($url);
$email = trim($email);
$ip = trim($ip);
$message = trim($message);
if(empty($line)) {
echo "";
}
else {
echo "<div class=\"header\"><a href=\"$url\">$name</a> | <a href=\"mailto:$email\">Mail!</a> </div><div class=\"date-style\">$date - <font size=\"1\">$ip</font></div><br /><br />$message";
}
}
?>
$file = file_get_contents("gb.dat");
$explode = explode ("\r\n", $file);
$reverse = array_reverse($explode);
foreach ($reverse as $line) {
list($name, $date, $url, $email, $ip, $message) = explode("|", $line);
$name = trim($name);
$date = trim($date);
$url = trim($url);
$email = trim($email);
$ip = trim($ip);
$message = trim($message);
if(empty($line)) {
echo "";
}
else {
echo "<div class=\"header\"><a href=\"$url\">$name</a> | <a href=\"mailto:$email\">Mail!</a> </div><div class=\"date-style\">$date - <font size=\"1\">$ip</font></div><br /><br />$message";
}
}
?>
zodat het laatste bericht boven komt, hoe kan ik Jacco's scriptje eraan toevoegen?
Iemand?
return $data
aanpassen naar
return array_reverse($data) ;
Zo dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
function getTxtFileContent($filename,$line_nr = false)
{
$handler = fopen($filename,"r") ;
if (isset($line_nr) && is_array($line_nr))
{
$i = 1 ;
}
$data = false ;
while (!feof($handler))
{
if (isset($line_nr) && is_array($line_nr))
{
$line = fgets($handler) ;
if (!in_array($i,$line_nr))
{
$i++ ;
continue ;
}
else
{
$i++ ;
$data[] = $line ;
}
}
else
{
$line = fgets($handler) ;
$data[] = $line ;
}
}
return array_reverse($data) ;
}
?>
function getTxtFileContent($filename,$line_nr = false)
{
$handler = fopen($filename,"r") ;
if (isset($line_nr) && is_array($line_nr))
{
$i = 1 ;
}
$data = false ;
while (!feof($handler))
{
if (isset($line_nr) && is_array($line_nr))
{
$line = fgets($handler) ;
if (!in_array($i,$line_nr))
{
$i++ ;
continue ;
}
else
{
$i++ ;
$data[] = $line ;
}
}
else
{
$line = fgets($handler) ;
$data[] = $line ;
}
}
return array_reverse($data) ;
}
?>
Dan geeft de functie alles terug met de nieuweste boven
En je pagina komt dan zo :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$regels = array(1,2,3,4,5) ;
$berichten = getTxtFileContent("gb.dat",$regels) ;
foreach ($berichten as $line) {
list($name, $date, $url, $email, $ip, $message) = explode("|", $line);
$name = trim($name);
$date = trim($date);
$url = trim($url);
$email = trim($email);
$ip = trim($ip);
$message = trim($message);
if(empty($line)) {
echo "";
}
else {
echo "<div class=\"header\"><a href=\"$url\">$name</a> | <a href=\"mailto:$email\">Mail!</a> </div><div class=\"date-style\">$date - <font size=\"1\">$ip</font></div><br /><br />$message";
}
}
?>
$regels = array(1,2,3,4,5) ;
$berichten = getTxtFileContent("gb.dat",$regels) ;
foreach ($berichten as $line) {
list($name, $date, $url, $email, $ip, $message) = explode("|", $line);
$name = trim($name);
$date = trim($date);
$url = trim($url);
$email = trim($email);
$ip = trim($ip);
$message = trim($message);
if(empty($line)) {
echo "";
}
else {
echo "<div class=\"header\"><a href=\"$url\">$name</a> | <a href=\"mailto:$email\">Mail!</a> </div><div class=\"date-style\">$date - <font size=\"1\">$ip</font></div><br /><br />$message";
}
}
?>
De array met regelnummers die je op wil halen kun je natuurlijk aanpassen en variabel maken maar voor nu is het een voorbeeld en zou het duidelijk moeten zijn
Eigenlijk ben ik te goed voor deze wereld :P
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Mijn PC was gecrasht dus kon ik het niet uittesten. Gelukkig had ik een backup, dus heb ik wel al mijn bestanden terug. Maar niet windows vandaar. Het werkt er worden er nu 5 per pagina weergegeven het 6e bericht komt er alleen niet op, omdat er natuurlijk maar 5 mogen staan.
Maar hoe kan ik nu links maken met : 1,2,3 enz. en dat die klikbaar worden en dat je daar dan bijv. als je naar de 6e pagina gaat het 6e 7e 8e enz. berichtje ziet?
Ik heb wat andere geprobeerd maar kom er echt niet uit
Met een for()-loop. Zolang de $i (bijv) kleiner blijft dan het aantal $pages, moet bij $i één worden opgeteld. Zo krijg je een nummering.
En hoe moet dat?