webForumDet fria alternativet

Få in bilder i nr.ordning

PHP

8 svar · 588 visningar · startad av tanten

Medlem sedan nov. 20051 596 inlägg
Frågan#1

Vill gärna ha hjälp och förslag på hur jag ska skriva koden för att få den sista bilden som lagts in i mappen att visas. Där som det står 12 nu?
Bilderna finns inte i databasen utan ligger bara i en mapp.
Letar mig blodig i manualer...

<img alt=\"Senast tagna foto\" src=\"{$rown['smeknamn']}/{$rown['smeknamn']}12.jpg\">

Blir väldigt tacksam...

Medlem sedan maj 2005562 inlägg
#2

Kika på filemtime() ..

Medlem sedan nov. 20051 596 inlägg
#3

sl0k skrev:

Kika på filemtime() ..

Såg avancerat ut det där... :)
Det finns inget så enkelt som att den bild som har den högsta siffran hämtas. Jag är rädd för att mappens bilder modifieras allt som oftast, där det ligger jättebilder och thumbs om vartannat och det är bara de som heter "smeknamn"1 och uppåt som ska ut på sidan...

Medlem sedan maj 20002 993 inlägg
#4

Kan fungera ;)

$dir = 'bilder/';
$prefix = 'bild';

$imageList = array();

if (is_dir($dir))
{
	if ($dh = opendir($dir))
	{
		while (($file = readdir($dh)) !== false)
		{
			if (strpos($file, $prefix) === 0)
			{
				$imageList[] = $file;
		}
		closedir($dh);
	}
}

sort($imageList);

foreach ($imageList as $imgFile)
{

	print '<img src="' . $dir . $imgFile . '">';

}

Edit: Läste din fråga fel. Trodde du ville lista upp dem sorterade och inte bara visa det senaste. Borde fungera ungefär likadant fast du kan strippa bort prefixet samt filtillägget och sedan jämföra om talet är större än det hittills störst funna värdet. Om det är större lagrar du det värdet och fortsätter iterera genom hela listan.

Medlem sedan nov. 20051 596 inlägg
#5

Jag ska försöka mig på att använda din kod. Attans att jag är så ny på php...
Först en liten förklaring för jag kanske var luddig förut.
Det handlar om ett travstall, där varje häst har sin egen bildmapp. som heter hästens smeknamn. Så i sökvägen till mappen så måste man få med smeknamnet som finns i databasen... därav såg min img-kod ut som den gjorde och den select-snutten finns tidigare i koden.
Jag är för grön för att se om jag kan få in det i din kod... men jag ska göra ett ärligt försök.
Tips? Nu när du vet mer eller ska det gå?

Medlem sedan maj 2005562 inlägg
#6

Om du har filnamnen i löpande nummerordning kan du använda följande

function get_latest_pic($nick) {
    $dir = "./"; // directory to images
    $i = 1; $file = ""; 
    $file_ext = ".jpg"; // file extension
    while (is_readable($temp_file = $dir.$nick."/".$nick.$i++.$file_ext) && $file = $temp_file) ;

  return $file;
}
$latest = get_latest_pic("hästens_namn_här");
echo "<img alt=\"Senaste foto\" src =\"$latest\" />";
Medlem sedan nov. 20051 596 inlägg
#7

Men sl0k det ser ju så himla rätt ut. Varför vill det inte funka för mig?
På min testsida, så är hästens smeknamn abbe. Hans mapp som heter abbe ligger på samma nivå som sidan. Bilderna i mappen heter abbe1.jpg upp till abbe13.jpg...
första delen av din kod är oförändrad .
Sista delen ser ut så här

$latest = get_latest_pic("abbe");
echo "<div id=\"hast1\"><img alt=\"Senaste foto\" src =\"$latest\"><br>eventuellt text</div>

och resultatet blir

<img alt="Senaste foto" src ="" />

inga felmeddelanden
Vad gör jag för fel :(

Medlem sedan nov. 20051 596 inlägg
#8

Ah... det fungerade inte för att det fanns blandade bilder i mappen. När jag hade rensat bort alla onumrerade bilder så fungerade det perfekt.

Tack så mycket sl0k !

Medlem sedan sep. 200619 inlägg
#9

Annars räcker det med någonting liknande:

PHP5

<?php
$pic = scandir('bilder');
unset($pic[0], $pic[1]);

natsort($pic);
$pic = array_reverse($pic);

echo '<img src="bilder/' . $pic[0] . '" />';
?>

eller om du kör med PHP4

<?php
if ($handle = opendir('bilder')) {

	while (false !== ($pic[] = readdir($handle))) {}
	closedir($handle);
	unset($pic[0], $pic[1]);
	
}

natsort($pic);
$pic = array_reverse($pic);

echo '<img src="bilder/' . $pic[0] . '" />';
?>
254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)