Ik ben bezig met een gastenboek en de bijdragen worden als volgt opgeslagen in een .txt bestand:
datum1||naam1||email1||lid1||website1||bericht1
datum2||naam2||email2||lid2||website2||bericht2
enz ...enz...

Nu wil ik deze gegevens netjes weergeven en daarvoor heb ik het volgende bedacht om alles weer te geven. Dit werkt goed, maar ik wil 5 bijdragen per keer op een pagina. Ik zoek dus een vorige - volgende script dat ingepast kan worden in het onderstaande script gedeelte.
Ik kom er zelf niet meer uit !!!

<table border="0" cellpadding="0" cellspacing="0" width="60%" style="font-family: Verdana; font-size: 8 pt">

<?php

$gastenboek=file('berichten.txt');

$gastenboek=array_reverse($gastenboek);
foreach ($gastenboek as $line) {
list($datum,$naam,$email,$lid,$website,$bericht)=explode('||',$line);

//check of er een website is
if ($website == "") {$link="";}
else {$link= "<a href=\"$website\" target=\"_blank\"><img border=\"0\" src=\"home.gif\" alt=\"Bezoek de website van $naam\"></a>";}

//check email
if ($email == "") {$mail="";}
else {$mail="<a href=\"mailto:$email\"><img border=\"0\" < src=\"email.gif\" alt=\"Stuur $naam een e-mail\"></a>";}

//check lidmaatschap
if ($lid == "") {$lid="";}
else {$lid="<img border=\"0\" < src=\"geen2.gif\" alt=\"$naam is lid van onze club\"></a>";}

echo"
<tr>
<td width=\"25%\"><b>$naam</b></td>
<td width=\"40%\">$link $mail $lid</td>
</center>
<td width=\"35%\"><i>$datum</i></td>
</tr>

<tr>
<td width=\"100%\" colspan=\"3\"><br>$bericht<br><br><br></td>
</tr>
<tr>
<td width=\"100%\" colspan=\"3\">
<hr align=\"left\">

</td>
</tr>";
}

?>
</table>
Een lelijke oplossing die werkt is de volgende

Je roept je pagina aan met pagina.php?pagina=3

<?
$aantalpp = 5;
# 5 entries per pagina

$gastenboek=file('berichten.txt');
$gastenboek=array_reverse($gastenboek);

if (!isset($_GET['pagina'])) { $pagina = 1; }

for ($i = $aantalpp*($pagina-1); $i <= $aantalpp*pagina; $i++) {
$line = $gastenboek[$i];
list($datum,$naam,$email,$lid,$website,$bericht)=explode('||',$line);

//check of er een website is
if ($website == "") {$link="";}
else {$link= "<a href=\"$website\" target=\"_blank\"><img border=\"0\" src=\"home.gif\" alt=\"Bezoek de website van $naam\"></a>";}

//check email
if ($email == "") {$mail="";}
else {$mail="<a href=\"mailto:$email\"><img border=\"0\" < src=\"email.gif\" alt=\"Stuur $naam een e-mail\"></a>";}

//check lidmaatschap
if ($lid == "") {$lid="";}
else {$lid="<img border=\"0\" < src=\"geen2.gif\" alt=\"$naam is lid van onze club\"></a>";}

echo"
<tr>
<td width=\"25%\"><b>$naam</b></td>
<td width=\"40%\">$link $mail $lid</td>
</center>
<td width=\"35%\"><i>$datum</i></td>
</tr>

<tr>
<td width=\"100%\" colspan=\"3\"><br>$bericht<br><br><br></td>
</tr>
<tr>
<td width=\"100%\" colspan=\"3\">
<hr align=\"left\">

</td>
</tr>";
}


if (!$pagina <= 1) { printf ('<a href="%s?pagina=%s">Vorige</a>', basename ($PHP_SELF), $pagina -1); }
# Er is geen vorige pagina, want het pagina nummer is minder of gelijk aan 1, dus geven we geen vorige, anders wel.

$laatste = ceil(count($gastenboek)/$aantalpp);
# omhoog afgerond: het aantal invoegingen / het aantal entries per pagina, dat is de laatste pagina in het gasten boek.

if (!$pagina >= $laatste) { printf ('<a href="%s?pagina=%s">Volgende</a>', basename ($PHP_SELF), $pagina +1); }

?>
</table>

Je hebt de code, je mag 'm zelf nog ff inpassen in je layout.
Bedankt voor je reactie maar ik krijg de volgende error:

Parse error: parse error in C:\apache\htdocs\mijn gastenboek\bekijk2.php on line 46

Line 46 =
if (!$pagina =< 1) { printf '<a href="%s?pagina=%s">Vorige</a>', basename ($PHP_SELF), $pagina -1; }
ermmmm misschien de , in een puntkomma (;) veranderen? :$
Excuus, drie kleine fouten:
1: Er stond twee keer de code voor 'vorige'
2. Een van de twee had een fout waar =< in plaats van <= werd gebruikt om minder en gelijk aan te geven.
3. printf stond niet tussen haakjes, dat vind php niet erg fijn.

Ik heb mijn vorige post aangepast, daar staat nu, voorzover ik weet werkende code.
Allemaal bedankt, en dit is het uiteindelijk geworden. Van allerlei site's heb ik snippers gebruikt om tot het volgende eindresultaat te komen.

De pagina moet als volgt aangeroepen worden:
test.php?start=0

Hier is het script, wellicht heeft een ander er ook nog iets aan:


<center>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="font-family: Verdana; font-size: 8 pt">
<tr>
<td width="100%"><?php
$amount=5;

$gastenboek=Array();

$gastenboek=file('berichten.txt');

?> <b>Berichten <? echo $start+1; ?> tot en met <? echo min($start+$amount,sizeof($gastenboek)); ?></b><br><i>(Totaal <? echo sizeof($gastenboek); ?> berichten)</i></p>

<hr align="left">
<br>
</td>
</tr>
</table>
</center>

<table border="0" cellpadding="0" cellspacing="0" width="60%" style="font-family: Verdana; font-size: 8 pt">

<?php

$gastenboek=array_reverse($gastenboek);
for ($i=$start;$i<$start+$amount && $i<sizeof($gastenboek);$i++) {
list($datum,$naam,$email,$lid,$website,$bericht)=explode('||',$gastenboek[$i]);

//check of er een website is
if ($website == "") {$link="";}
elseif ($website =="http://") {$link="";}
else {$link= "<a href=\"$website\" target=\"_blank\"><img border=\"0\" src=\"home.gif\" alt=\"Bezoek de website van $naam\">";}

//check email
if ($email == "") {$mail="";}
else {$mail="<a href=\"mailto:$email\"><img border=\"0\" < src=\"email.gif\" alt=\"Stuur $naam een e-mail\"></a>";}

//check lidmaatschap
if ($lid == "") {$lid="";}
else {$lid="<img border=\"0\" < src=\"geen2.gif\" alt=\"$naam is lid van onze club\">";}

echo"
<tr>
<td width=\"25%\"><b>$naam</b></td>
<td width=\"40%\">$link $mail $lid</td>
</center>
<td width=\"35%\"><i>$datum</i></td>
</tr>

<tr>
<td width=\"100%\" colspan=\"3\"><br>$bericht<br><br><br></td>
</tr>
<tr>
<td width=\"100%\" colspan=\"3\">
<hr align=\"left\">
</td>
</tr>";
}
?>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="font-family: Verdana; font-size: 8 pt">
<tr>
<td width="100%">
<p align="center">
<?php
if ($start>0) echo '<A href="test.php?start='.max(0,$start-$amount).'"><img border="0" src="meer2.gif" alt="Lees de vorige berichten ..." width="30" height="8"></a></A> ';

$regels = sizeof($gastenboek); if(!$n) { $n = 0; } else { $n = intval($n); }

{ for($i = 0; $i < $regels; $i+=$amount) { if($regels > $i) { echo(" [<a href='test.php?start=$i'>".($i/$amount+1)."</a>]"); } } }


if ($start+$amount<sizeof($gastenboek)) echo ' <A href="test.php?start='.($start+$amount).'"><img border="0" src="meer.gif" alt="Lees de volgende berichten ..." width="30" height="8"></a></A>';
?></td>
</tr>
</table>

Hier vind je het gastenboek online:
http://www.nummer11.nl/gastenboek

Reageren