Avatar billede jampe Nybegynder
16. juni 2004 - 00:01 Der er 5 kommentarer og
1 løsning

omvendt rækkefølge af poster i en gæstebog

Hejsan, jeg har skrevet en gæstebog/tagwall til min side. Databasen er XML og vises via PHP. Det sidste, jeg mangler, er at få posterne til at blive vist bagfra/descending.. jeg kan simpelthen ikke finde en løsning.
Her er koden:


<?php

// læs filen
$file = implode('', file ("post.xml"));

// tjek om request er post eller ej
if ($post == "yes")
{
print "
<p><span id=\"text\">
<center>Alle html-tags vil blive slettet. Hah!</center><br>
<form action=post.php method=post>
<input type=hidden name=post value=yes>
<p>
<table align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td>
<span id=\"text\">Navn<br>
<input type=text name=name size=30>
</td>
<td>
<span id=\"text\">Email<br>
<input type=text name=email size=30>
</td>
</tr>
<tr>
<td colspan=\"2\">
<span id=\"text\">Besked<br>
<textarea name=message rows=5 cols=48></textarea>
</td>
</tr>
</table>
<p><center>
<input style=\"font-size:12px;\" type=reset value=Nustil>
<input style=\"font-size:12px;\" type=submit value=Send>
</center>
</form>";
}
else
{
print "
<table cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td background=\"img/titel_gaestebog.jpg\" width=\"256\" height=\"64\" valign=\"bottom\" align=\"center\">
<span style=\"font-size:12px; color:#777777;\"><a href=gaestebog.php?post=yes>skriv en besked</a></span>
</td>
</tr>
</table>
";

// maksimum poster på en side
$posts = 10;

// tæl poster
$foo = preg_split ("<.*post.*>", $file);
$count = count($foo);
$posts = ( $posts * 2);
$pages = ($count / $posts);

// altid begynd ved den sidste side
if ( $page == "") {
$page = 0;
while ( $page < $pages) {
++$page;
}
}

// skriv sidenumrene
$i = 0;
print "<p>";
if ( $count > $posts) {
print "<center><span id=\"text\">side<br> ";
while ( $i < $pages) {
++$i;
if ( $page == $i) {
print " <b>$i</b> ";
}
else {
print "<a href=gaestebog.php?page=$i> $i </a>";}
}
}
print "</center></span></p>";

// skriv posterne en efter en
$i = (($page - 1) * $posts);
$to = ( $page * $posts);

while ( $i < $to)
{
$post = $foo[$i];
print "$post";
$i++;
}

}

?>
Avatar billede nikolajdu Nybegynder
16. juni 2004 - 01:55 #1
Du må ikke oprette et spørgsmål 2 gange.

http://www.eksperten.dk/spm/510264
Avatar billede Syska Mester
16. juni 2004 - 09:17 #2
Ved ikke helt så meget om xml.

Men hvordan skriver du til den xml fil, du kunne jo appende til toppen af xml filen, så vil den nyeste jo altid komme først.

eller kan jeg ikke lige komme på andre ideer lige nu, du kunne bruge en database som helt klar ville være det mest optimale....
Avatar billede coderdk Praktikant
16. juni 2004 - 10:04 #3
// altid begynd ved den sidste side
if ( $page == "") {
$page = 0;
while ( $page < $pages) {
++$page;
}
}

Er dt ikke lidt lettere at skrive:
$page = $pages;

For altid at runde op:
$pages = ceil($count / $posts);

Du skriver også:
// maksimum poster på en side
$posts = 10;

og så sætter du:

$posts = $posts * 2;

?

Hvis du virkelig vil have listen bagfra burde du jo lave løkken sådan:

// skriv posterne en efter en
for ( $i = $page * $posts; $i > (($page - 1) * $posts); $i-- )
{
  $post = $foo[$i];
  print "$post";
}
Avatar billede coderdk Praktikant
16. juni 2004 - 10:06 #4
Ser så heller ikke ud som om det er XML ;)
Avatar billede jampe Nybegynder
17. juni 2004 - 18:02 #5
tak for hjælpen folk, bruger coderdk's løsning..
men skriv et svar i stedet for en kommentar, så jeg kan acceptere det og give dig de 100 points..
Avatar billede coderdk Praktikant
17. juni 2004 - 19:06 #6
Done :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester