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?
MatteMedlem sedan aug. 20002 975 inlägg 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.
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ö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 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.