---
title: "Lista inlägg bakifrån"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/80994-lista-inlägg-bakifrån"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "web00132"
published: "2003-07-01T12:17:23.000Z"
updated: "2003-07-04T08:14:31.000Z"
replies: 11
views: 579
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/80994-lista-inlägg-bakifrån"
---

# Lista inlägg bakifrån

## #1 — web00132, 2003-07-01T12:17Z

Hej hej! Jag har en gästbok med en pagingfunktion som listar inläggen, från en textfil, uppifrån och ner. Då kommer det första inlägget överst. Jag vill ju ha det senast inlagda inlägget överst på min webbsida. Hur fixa?

```
<?
function getContent($filename)
{ 
	$content = file($filename);
	return $content;
}
?>
<?
/*
    En funktion som ger sidlänkar i anslutning till utskrift från
    textfil eller databas.
    $page är vilken sida som är den aktuella.
    $pageNumbers är antal sidor som utskriften är uppdelad på.
    $numLinks är antal sidlänkar som ska visas.
    $align är antingen 'left' eller 'right'. Pagingen justerad 
    höger eller vänster.
    De variabler som finns i querystringen flyttas med 
    till nya sidor.
*/
function pagingList($page, $pageNumbers, $numLinks, $align)
{
    global $HTTP_SERVER_VARS, $HTTP_GET_VARS;
    
    $file = $HTTP_SERVER_VARS['PHP_SELF'];
    $getvar = $HTTP_SERVER_VARS['QUERY_STRING'];
    $search = "/(^page=\d*&*|&page=\d*)/i";
    $getvar = preg_replace($search, "", $getvar);
    if ($getvar != "") $getvar = "&".$getvar;
    
    if ($pageNumbers > $numLinks){
        $startLink = $page - floor($numLinks/2);
        if ($startLink >($pageNumbers - $numLinks +1)){
            $startLink = $pageNumbers - $numLinks +1;
        }
    }else $startLink = 1;
    if ($startLink<1) $startLink = 1; 
    $stopLink = $startLink + $numLinks -1;
    if ($stopLink>$pageNumbers) $stopLink=$pageNumbers;

    echo "<div class=\"paging\" style=\"text-align:$align\">\n";
    if ($page>1){
         $pageback = $page-1;
         echo "<a href=\"$file?page=$pageback$getvar\" class=\"paging\" ";
         echo "title=\"Föregående sida\"><b>Föregående</b></a>";

// Om jag någonsin skulle vilja ha siffror o skit, ta bort de 3 ovanstående raderna o avkommentera de nedan...
//         echo "<a href=\"$file?page=1$getvar\" class=\"paging\" ";
//         echo "title=\"F&ouml;rsta sidan\">&laquo;</a>";
    } else echo "<span class=\"pagingDim\"><!-- nothing --></span>";

// ...och avkommentera de 15 raderna nedan...
    //if ($startLink > 1){
    //    echo " ... ";
    //} else echo " -";
    //for ($i=$startLink; $i<=$stopLink; $i++){
    //    if ($i != $page){
    //        echo " <a href=\"$file?page=$i$getvar\" ";
    //        echo "class=\"paging\">$i</a> ";
    //    } else {
    //      echo " <span class=\"pagingDim\">( $i )</span> ";
    //    }
    //    if ($i<$stopLink) echo "-";
    //} 
    //if ($stopLink < $pageNumbers){
    //    echo " ... ";
    //} else echo "- ";
    if ($page<$pageNumbers){
         $pageforward = $page+1;
         echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
         echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
         echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
         echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
         echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
         echo "<a href=\"$file?page=$pageforward$getvar\" class=\"paging\" ";
         echo "title=\"Nästa sida\"><b>Nästa</b></a>";

// ...och ta bort de 3 ovanstående raderna o avkommentera de nedan
        //echo "<a href=\"$file?page=$pageNumbers$getvar\" ";
        //echo "class=\"paging\" ";
        //echo "title=\"Sista sidan\">&raquo;</a>\n";
    } else echo "<span class=\"pagingDim\"><!-- nothing --></span>\n";
    echo "</div>";

}

?>
<? 
// Hämtar innehållet till en tvådimensionell array.

$innehall = getContent("guestbook/guestshadow"); 

// Här börjar paging
$inlaggPerSida = 15; // Välj antal inlägg per sida, minst 1 
$antalPagLankar = 1; // Välj max antal visade paginglänkar 

$pageNumbers = ceil(sizeof($innehall)/$inlaggPerSida); 

if (isset($HTTP_GET_VARS["page"]))
{
	$page = $HTTP_GET_VARS["page"];
} else {
	$page = 1;
}
if ($page > $pageNumbers) { $page = $pageNumbers; }
if ($page < 1) { $page = 1; }

$start = ($page-1) * $inlaggPerSida; 
$stopp = $start + $inlaggPerSida; 
if ($stopp>sizeof($innehall)) { $stopp=sizeof($innehall); }

// Här slutar paging. $start och $stopp används vid hämtning

// här börjar listning av inlägg

for($i=$start; $i<$stopp; $i++)
{
$content = file("guestbook/guestshadow");
$content[$i] = explode("	", rtrim($content[$i]));
$a = $content[$i][0];
$b = $content[$i][1];
$c = $content[$i][2];
$d = $content[$i][3];
$e = $content[$i][4];
print "<tr><td height='1'></td></tr>";
print "<tr><td align='left'><hr width='200' color='white' noshade><br /><br /><b>";
if ($d != ""){print "<a href='mailto:".$d."' alt='[ " . $d . " ]'>";}
print stripslashes($a);
if ($d!=""){print "</a>";}
print "</b></td></tr><tr><td class='datum'>";
print date("Y-m-d -- H:i:s",$c);
print "<br /><br /></td></tr><tr><td><font color='white'>";
print stripslashes($b);
print "</font><br /><br /></td></tr>";
if ($e == "\n" || $e == "http://\n" || $e == "http:///\n" || $e == "" || $e == "http://" || $e == "http:///")
{
} else {
	print "<tr><td>";
	print "<a href='".$e."' target='new' alt='[ " . $e . " ]'>".$a."'s hemsida</a>";
	print "</td></tr>";
}
}

// Här presenteras pagingen

print "<tr><td height='40'></td></tr><tr><td>";

if ($pageNumbers > 1) 
pagingList($page, $pageNumbers, $antalPagLankar, "left"); 

print "</td></tr>";
// Här slutar presentationen

?>
```

Permalänk: https://www.webforum.nu/p/80994

## #2 — SPiN, 2003-07-01T12:21Z

Byt ut:

```
for($i=$start; $i<$stopp; $i++)
```

Mot:

```
for( $i = $stopp; $i >= $start; $i-- )
```

Då borde det fungera.

Permalänk: https://www.webforum.nu/p/1099158

## #3 — web00132, 2003-07-01T12:32Z

Ja, det funka ju bra. Tack ska du ha! Ett problem bara, nu dök det upp en rad överst i g-boken där det står: *1970-01-01 -- 01:00:00*. Hur kommer det sig?

Permalänk: https://www.webforum.nu/p/1099162

## #4 — SPiN, 2003-07-01T13:04Z

Ja, du. Det var ju lite märkligt. Finns den raden med längst ned i textfilen?

Permalänk: https://www.webforum.nu/p/1099178

## #5 — web00132, 2003-07-01T13:14Z

Tänkte på det också så jag tog bort den raden. Men den borde ju i så fall ha visats när man listar åt andra hållet också. Klurigt.

Permalänk: https://www.webforum.nu/p/1099186

## #6 — web00132, 2003-07-02T11:20Z

Jag gav upp och tog bort den raden med en enkel if-sats. Men andra problem dök upp. Pagingen har spårat ur.
Jag har just nu 11 inlägg och jag vill lista max 5 inlägg på varje sida. På första sidan skrivs de ut så här:

sjätte inlägget
femte ''
fjärde ''
tredje ''
andra ''
första ''

På andra sidan:

elfte inlägget
tionde ''
nionde ''
åttonde ''
sjunde ''
sjätte ''

På tredje sidan:

elfte inlägget

Det skrivs alltså ut sex inlägg på varje sida fast att jag har ändrat variabeln $inlaggpersida till 5. Dessutom vill jag ha inlägg nr 1 sist på tredje sidan och alltså inte sist på första sidan.

Någon som förstår och kan hjälpa mig?

Så här ser min kod ut nu: 

```php
<?
function getContent($filename)
{ 
	$content = file($filename);
	return $content;
}
?><?

/*
    En funktion som ger sidlänkar i anslutning till utskrift från
    textfil eller databas.
    $page är vilken sida som är den aktuella.
    $pageNumbers är antal sidor som utskriften är uppdelad på.
    $numLinks är antal sidlänkar som ska visas.
    $align är antingen 'left' eller 'right'. Pagingen justerad
    höger eller vänster.
    De variabler som finns i querystringen flyttas med
    till nya sidor.
*/
function pagingList($page, $pageNumbers, $numLinks, $align)
{
    global $HTTP_SERVER_VARS, $HTTP_GET_VARS;

    $file = $HTTP_SERVER_VARS['PHP_SELF'];
    $getvar = $HTTP_SERVER_VARS['QUERY_STRING'];
    $search = "/(^page=\d*&*|&page=\d*)/i";
    $getvar = preg_replace($search, "", $getvar);
    if ($getvar != "") $getvar = "&".$getvar;

    if ($pageNumbers > $numLinks){
        $startLink = $page - floor($numLinks/2);
        if ($startLink >($pageNumbers - $numLinks +1)){
            $startLink = $pageNumbers - $numLinks +1;
        }
    }else $startLink = 1;
    if ($startLink<1) $startLink = 1;
    $stopLink = $startLink + $numLinks -1;
    if ($stopLink>$pageNumbers) $stopLink=$pageNumbers;

    echo "<div class=\"paging\" style=\"text-align:$align\">\n";
    if ($page>1){
         echo "<a href=\"$file?page=1$getvar\" class=\"paging\" ";
         echo "title=\"F&ouml;rsta sidan\">Första sidan</a> - ";
    } else echo "<span class=\"pagingDim\"><!-- nothing --></span>";

    if ($startLink > 1){
        echo " ... ";
    }
    for ($i=$startLink; $i<=$stopLink; $i++){
        if ($i != $page){
            echo " <a href=\"$file?page=$i$getvar\" ";
            echo "class=\"paging\">$i</a> ";
        } else {
          echo " <span class=\"pagingDim\">( $i )</span> ";
        }
        if ($i<$stopLink) echo "-";
    }
    if ($stopLink < $pageNumbers){
        echo " ... ";
    }
    if ($page<$pageNumbers){

        echo " - <a href=\"$file?page=$pageNumbers$getvar\" ";
        echo "class=\"paging\" ";
        echo "title=\"Sista sidan\">Sista sidan</a>\n";
        // &raquo;
    } else echo "<span class=\"pagingDim\"><!-- nothing --></span>\n";
    echo "</div>";

}

?>
<?
// Hämtar innehållet till en tvådimensionell array.
$innehall = getContent("guestbook/guestshadow");

// Här börjar paging
$inlaggPerSida = 5; // Välj antal inlägg per sida, minst 1
$antalPagLankar = 9; // Välj max antal visade paginglänkar

$pageNumbers = ceil(sizeof($innehall)/$inlaggPerSida);
if (isset($HTTP_GET_VARS["page"]))
{
	$page = $HTTP_GET_VARS["page"];
} else {
	$page = 1;
}
if ($page > $pageNumbers) { $page = $pageNumbers; }
if ($page < 1) { $page = 1; }
$start = ($page-1) * $inlaggPerSida;
$stopp = $start + $inlaggPerSida;
if ($stopp>sizeof($innehall)) { $stopp=sizeof($innehall); }
// Här slutar paging. $start och $stopp används vid hämtning

// här börjar listning av inlägg

// for($i=$start; $i<$stopp; $i++)
for($i=$stopp; $i>=$start; $i--)
{
	$content = file("guestbook/guestshadow");
	$content[$i] = explode("	", rtrim($content[$i]));
	$a = $content[$i][0];
	$b = $content[$i][1];
	$c = $content[$i][2];
	$d = $content[$i][3];
	$e = $content[$i][4];
	if ($a != "")
	{
		print "<tr><td height='1'></td></tr>";
		print "<tr><td align='left'><font size='2' color='#ffffff' face='verdana,tahoma,arial'><hr width='200' color='white' noshade><br /><br /><b>";
		if ($d != ""){print "<a href='mailto:".$d."' alt='[ " . $d . " ]'>";}
		print stripslashes($a);
		if ($d!=""){print "</a>";}
		print "</b></font></td></tr><tr><td class='datum'>";
		print date("Y-m-d -- H:i:s",$c);
		print "<br /><br /></td></tr><tr><td><font size='2' color='#ffffff' face='verdana,tahoma,arial'>";
		print stripslashes($b);
		print "</font><br /><br /></td></tr>";
		if ($e == "\n" || $e == "http://\n" || $e == "http:///\n" || $e == "" || $e == "http://" || $e == "http:///")
		{
		} else {
			print "<tr><td><font size='2' color='#ffffff' face='verdana,tahoma,arial'>";
			print "<a href='".$e."' target='new' alt='[ " . $e . " ]'>".$a."'s hemsida</a>";
			print "</font></td></tr>";
		}
	}
}

// Här presenteras pagingen
print "<tr><td height='40'></td></tr><tr><td colspan='3' align='right'>";
if ($pageNumbers > 1)
pagingList($page, $pageNumbers, $antalPagLankar, "left");

print "<br /></td></tr>";
// Här slutar presentationen
?>
```

Permalänk: https://www.webforum.nu/p/1099785

## #7 — Matte, 2003-07-02T14:19Z

Enklast vore väl att vända på arrayen när du hämtat den:

```
function getContent($filename)
{ 
	$content = file($filename);
	$content = array_reverse($content);
	return $content;
}
```

Permalänk: https://www.webforum.nu/p/1099879

## #8 — web00132, 2003-07-02T15:15Z

Tack ska du ha, men det fungerade tyvärr inte. Fler förslag?
Börjar bli frustrerad, kan inte fatta  :l

Permalänk: https://www.webforum.nu/p/1099901

## #9 — Matte, 2003-07-02T16:36Z

Vad jag menade var utifrån ditt ursprungliga skript.

Det fungerade ju om du körde dom rakt upp och ner. 
Om man då spegelvänder arrayen, så borde du ju få det bakifrån.

En annan variant är att spara först i filen istället.

Permalänk: https://www.webforum.nu/p/1099943

## #10 — web00132, 2003-07-03T11:06Z

Hmm, jag får det inte att funka hur jag än gör. Min PHP-version kanske är för gammal för array_reverse? Det står 4.0.4pl1 om jag kör phpversion().

Hur gör man då för att spara först? Funktion?

Permalänk: https://www.webforum.nu/p/1100241

## #11 — Matte, 2003-07-03T14:00Z

För att spara till början av en textfil

```
$filename = "textfil.txt";

$ny_rad = "Ny rad i textfilen";

// Öppnar filen
$fp = fopen($filename, "r+");

// Läser in filens innehåll i en variabel
$content = fread($fp, filesize($filename));

// Spolar tillbaka till början av filen
rewind($fp);

// Skriver ny rad till fileb
fwrite($fp, $nyrad."\n");  // \r\n i Windows

// Skriver det ursprungliga innehållet till filen
fwrite($fp, $content);

fclose($fp);
```

Permalänk: https://www.webforum.nu/p/1100353

## #12 — web00132, 2003-07-04T08:14Z

Nu fungerar det perfekt! Tack ska du ha!   :bire

Permalänk: https://www.webforum.nu/p/1100689

---

Tråden på webben: https://www.webforum.nu/amne/php/80994-lista-inlägg-bakifrån
