webForumDet fria alternativet

Paging - lista från mapp

4 svar · 340 visningar · startad av web00132

web00132Medlem sedan maj 2001797 inlägg
#1

Paging igen. Jag använder mig av samma script jag använde mig av i den här tråden. Nu vill jag dock lista en massa bilder till ett bildarkiv samt hämta fram bildtexter till dessa ur en textfil. Så jag byter helt enkelt värdet i variabeln innehall...

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

...till textfilen med bildtexterna. Det borde inte strula, det är ju lika många rader i den som det är bilder i mappen jag vill hämta från.

Problemet uppstår istället när jag ska lista bilderna från mappen. Just nu ser det ut så här:

<?
$oppna = opendir("./admin/galleribilder/sma");
$intCounter = -1;

while ($filen = readdir($oppna))
{
	if (($filen != "." && $filen != ".."))
	{
		$stor = str_replace("liten","stor",$filen);
		if ($intCounter == 3)
		{
			print "<td align='center'><a href='admin/galleribilder/" . $stor . "' target='new'><img src='admin/galleribilder/sma/" . $filen . "' width='90' height='70' border='0'></a></td></tr><tr><td colspan='5'></td></tr><tr>";
		}
		else
		{
			print "<td align='center'><a href='admin/galleribilder/" . $stor . "' target='new'><img src='admin/galleribilder/sma/" . $filen . "' width='90' height='70' border='0'></a></td><td width='5'></td>";
		}
	}

	if ($intCounter == 3)
	{
		$intCounter = 1;
	}
	else
	{
		$intCounter = $intCounter + 1;
	}
}
closedir($oppna);
?>

Jag vill alltså byta ut...

while ($filen = readdir($oppna))

...mot typ...

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

...eller något liknande så jag får med variablerna start och stopp. Hänger ni med? Nåt förslag?

web00132Medlem sedan maj 2001797 inlägg
#2

Ingen som har något?

MatteMedlem sedan aug. 20002 975 inlägg
#3

Istället för att skriva ut lägger du innehållet i en array:

$innehall[] = "<td align='center'><a href='admin/galleribilder/" . $stor . "' target='new'><img src='admin/galleribilder/sma/" . $filen . "' width='90' height='70' border='0'></a></td><td width='5'></td>";

Sen kan du fortsätta som tidigare.

web00132Medlem sedan maj 2001797 inlägg
#4

Shit. Jag förstår verkligen inte hur du menar. Har försökt med det mesta. Jag lägger in hela koden.

Sidan jag vill ha paging på är fotogalleri.inc:

<table border="0">
	<tr>
		<br />
		<?
		$oppna = opendir("./admin/galleribilder/sma");
		$intCounter = -1;
		
		while ($filen = readdir($oppna))
		{
			if (($filen != "." && $filen != ".."))
			{
				$stor = str_replace("liten","stor",$filen);
				if ($intCounter == 3)
				{
					print "<td align='center'><a href='admin/galleribilder/" . $stor . "' target='new'><img src='admin/galleribilder/sma/" . $filen . "' width='90' height='70' border='0'></a></td></tr><tr><td colspan='5'></td></tr><tr>";
				}
				else
				{
					print "<td align='center'><a href='admin/galleribilder/" . $stor . "' target='new'><img src='admin/galleribilder/sma/" . $filen . "' width='90' height='70' border='0'></a></td><td width='5'></td>";
				}
			}
			if ($intCounter == 3)
			{
				$intCounter = 1;
			}
			else
			{
				$intCounter = $intCounter + 1;
			}
		}
		closedir($oppna);
		?>
	</tr>
</table>

Pagingen jag tänkte använda använder jag i min gästbok. Filen index.php (lite bantad):

<?
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";
    } 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 = 5; // 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];
	$f = $content[$i][5];
	if ($a != "")
	{
		print "<tr>\n<td height='1'></td>\n</tr>\n";
		print "<tr>\n<td align='left'>\n<hr width='200' color='white' noshade>\n<br /></td>\n</tr>\n<tr>\n<td><font size='2' color='#ffffff' face='verdana,tahoma,arial'>\n<b>";
		if ($d != ""){print "\n<a href='mailto:".$d."' alt='[ " . $d . " ]'>";}
		print stripslashes($a);
		if ($d!=""){print "\n</a>";}
		print "\n</b>\n</font>\n </td>\n</tr>\n<tr>\n<td class='datum' width='100%'>";
		print date("Y-m-d -- H:i",$c);
		print "\n\n</td>\n</tr><tr>\n<td colspan='2'>\n<font color='#ffffff' face='verdana,tahoma,arial' size='2'>";
		if ($f != "")
		{
			print "\nHundras: " . stripslashes($f);
		}
		print "\n</font>\n</td>\n</tr>";
		print "\n<tr>\n<td>\n<font size='2' color='#ffffff' face='verdana,tahoma,arial'>";
		print "<br />" . stripslashes($b);
		print "\n</font>\n<br /><br />\n</td>\n</tr>\n<tr>\n<td>\n<font color='#ffffff' face='verdana,tahoma,arial' size='2'>";
		if ($e == "\n" || $e == "http://\n" || $e == "http:///\n" || $e == "" || $e == "http://" || $e == "http:///")
		{
		}
		else
		{
			print "\n<a href='".$e."' target='new' alt='[ " . $e . " ]'>".$a."'s hemsida</a>";
		}
		print "\n</font>\n</td>\n</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
?>

Vad är det exakt jag ska byta ut?

MatteMedlem sedan aug. 20002 975 inlägg
#5

Först vad det gäller ditt gästboks skript, eftersom jag så smått tänker referera till det, tag bort följande rad:

$content = file("guestbook/guestshadow");

Samt byt ut variabeln $innehall mot $content.
Det finns ingen anledning att gång på gång läsa in innehållet i filen, det räcker med en gång.

Nu till dina filer.

Använd följande funktion:

function getFilenames($dir)
{

    $filename = array();

    if ( $oppna = opendir($dir) )
    {
        
        while (false !== ($filen = readdir($oppna)))
        {
            if ($filen != "." && $filen != "..")
            {
                $filename[] = $filen;
            }
        }
        closedir($oppna);

    }
    
    return $filename;

}

Sen kör du:

$content = getFilenames("./admin/galleribilder/sma");

Nu har du filnamnen i en array, precis på samma sätt som du i gästboken hade raderna ur filen i en array. Gå tillväga på ungefär samma sätt sedan.

138 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)