silfverMedlem sedan apr. 200312 679 inlägg Okej, här kommer en nybörjarfråga som jag hoppas ni kan svara på snällt. :)
Jag har en mapp på servern som heter uploads. I den här mappen skapas en mapp för år och månad när jag laddar upp en bild. (Kan tänka mig ändra på det här ifall det blir problem med mappnivåer.)
När jag laddar upp en bild så skapas där två filer - originalfilen samt en thumbnail som innehåller 150x150 i namnet, t.ex. i-love-hong-kong-150x150.jpg
Kan man nu på ett enkelt sätt kolla den här katalogen efter jpg-bilder som innehåller 150x150 och sedan lista dem? Helst i datumordning.
Är det genomförbart? :) Jag antar att man måste köra någon slags ftp-anslutning eftersom bilderna inte ligger i en databas.
metalboyMedlem sedan jan. 2005953 inlägg Du skulle kunna loopa igenom mapparna rekursivt och spara filnamnen i en array. Använd t.ex. scandir() eller glob() för att hämta ut innehållet i en mapp.
silfverMedlem sedan apr. 200312 679 inlägg
metalboy skrev:
Du skulle kunna loopa igenom mapparna rekursivt och spara filnamnen i en array. Använd t.ex. scandir() eller glob() för att hämta ut innehållet i en mapp.
Haha, du måste ha missat min inledning. Finns det färdig kod för sånt?
metalboyMedlem sedan jan. 2005953 inlägg Det finns säkert färdig kod för det, men inte inbyggt i PHP :)
Ligger det endast bilder i mapparna eller kan det ligga andra filer där också?
Edit: Det finns bra exempelkod i manualen också :)
http://www.php.net/scandir
http://www.php.net/glob
silfverMedlem sedan apr. 200312 679 inlägg
metalboy skrev:
Det finns säkert färdig kod för det, men inte inbyggt i PHP :)
Ligger det endast bilder i mapparna eller kan det ligga andra filer där också?
Edit: Det finns bra exempelkod i manualen också :)
http://www.php.net/scandir
http://www.php.net/glob
Förmodligen bara jpg-bilder. :)
Ska kolla dina länkar!
silfverMedlem sedan apr. 200312 679 inlägg Det är ingen som kan, eller vet, var man kan hitta en färdig sån här kod? Jag själv kan ingenting om sånt här. :l
tydalMedlem sedan juni 20034 013 inlägg En rekursiv funktion är lämpligt här. En rekursiv funktion är en som anropar sig själv. Vi skapar alltså en funktion som går igenom allt innehåll i en mapp. Hittar den en fil som har 150x150 i namnet så skriver den ut den. Hittar den en mapp så skickar den mappen till sig själv...
Så här:
<?php
function kollaMappen($mapp)
{
$mappinnehall = scandir($mapp);
foreach ($mappinnehall as $fil)
{
if (is_dir($fil))
kollaMappen($fil);
elseif (strpos($fil, "150x150"))
{
/* Här har du en träff som du då kan göra vad du vill med. */
echo($fil . "<br />");
}
}
}
?>
För att starta så anropar du den med mappen du vill starta i... exempelvis:
<?php kollaMappen("/var/uploads/"); ?>
silfverMedlem sedan apr. 200312 679 inlägg
tydal skrev:
En rekursiv funktion är lämpligt här. En rekursiv funktion är en som anropar sig själv. Vi skapar alltså en funktion som går igenom allt innehåll i en mapp. Hittar den en fil som har 150x150 i namnet så skriver den ut den. Hittar den en mapp så skickar den mappen till sig själv...
Så här:
<?php
function kollaMappen($mapp)
{
$mappinnehall = scandir($mapp);
foreach ($mappinnehall as $fil)
{
if (is_dir($fil))
kollaMappen($fil);
elseif (strpos($fil, "150x150"))
{
/* Här har du en träff som du då kan göra vad du vill med. */
echo($fil . "<br />");
}
}
}
?>
Nice! Om mappen då heter uploads, kan jag skriva så här?
$mapp = uploads/;
Räcker din kod verkligen? Jag trodde man var tvungen att göra nån ftp-anslutning eller nåt i den stilen, fast det kanske inte behövs när koden exekveras på servern? :)
r\ Ah, såg din redigering. :)
silfverMedlem sedan apr. 200312 679 inlägg tydal: Jag skriver ut min sökväg så här:
kollaMappen("/wordpress/wp-content/uploads/2008/04");
Men det vill sig inte. Antar att jag har fel sökväg, men jag vet inte hur jag ska skriva ut den exakt.
Kan man göra nåt i stil med
($_SERVER["DOCUMENT_ROOT"]."/wordpress/wp-content/uploads/2008/04");
Hoppas du förstår vad jag menar. :)
kollaMappen($_SERVER["DOCUMENT_ROOT"]."/wordpress/wp-content/uploads/2008/04");
Fungerar alltså inte.
silfverMedlem sedan apr. 200312 679 inlägg Nån som vet hur jag kan få till min sökväg? För just nu hänger sig scriptet. :l
metalboyMedlem sedan jan. 2005953 inlägg Det blir en evighetsloop eftersom mapparna . och .. ligger med i arrayen och scriptet inte tar hänsyn till det.
Före raden med is_dir() kan du lägga till
if ($fil == '.' || $fil == '..') continue;
Btw, bland användarkommentarerna på manualsidan för scandir() så finns det en funktion som kan tänkas vara användbar för dig.
http://se2.php.net/manual/en/function.scandir.php#82470
Där anger du vilka filändelser som du är intresserad av.
silfverMedlem sedan apr. 200312 679 inlägg
metalboy skrev:
Det blir en evighetsloop eftersom mapparna . och .. ligger med i arrayen och scriptet inte tar hänsyn till det.
Före raden med is_dir() kan du lägga till
if ($fil == '.' || $fil == '..') continue;
Btw, bland användarkommentarerna på manualsidan för scandir() så finns det en funktion som kan tänkas vara användbar för dig.
http://se2.php.net/manual/en/function.scandir.php#82470
Där anger du vilka filändelser som du är intresserad av.
Ja, det fungerade! Men nu skriver den ju bara ut filnamnen, så jag försökte med nåt sånt här:
echo(<img=\"$fil\" alt=\"\"/> . "<br />");
Men det fungerade ju inget vidare. :)
metalboyMedlem sedan jan. 2005953 inlägg echo '<img src="' . $fil . '" alt="" /><br />';
silfverMedlem sedan apr. 200312 679 inlägg Tack! Nu fungerar det kanonbra! :) Tydal och metalboy! :bire
silfverMedlem sedan apr. 200312 679 inlägg En liten fundering. :)
Skulle det vara krångligt ifall jag ville kunna skriva ut en länk till originalfilen? Nu skriver ju scriptet ut tumnageln. En bild, ingenting mer. Men skulle man även kunna koppla tumnageln till originalbilden, som heter samma sak fast utan 150x150?
Förstår ifall det här är olönt att göra, men jag blev nyfiken! :bire
stevenetMedlem sedan juni 20001 251 inlägg https://www.php.net/str_replace
$orginalfil = str_replace("150x150", "", $fil);
echo '<a href="' . $orginalfil . '"><img src="' . $fil . '" alt="" /></a><br />';
silfverMedlem sedan apr. 200312 679 inlägg
stevenet skrev:
https://www.php.net/str_replace
$orginalfil = str_replace("150x150", "", $fil);
echo '<a href="' . $orginalfil . '"><img src="' . $fil . '" alt="" /></a><br />';
Wow. Enkelt och snyggt. Jag är riktigt tacksam för ditt svar! :bire
silfverMedlem sedan apr. 200312 679 inlägg Är det möjligt att få scriptet att sortera bilderna efter datumet som de är uppladdade på servern? :) Så man får någon ordning på bilderna, för nu läggs de hullerombuller.
metalboyMedlem sedan jan. 2005953 inlägg Jodå. Titta på usort() och filectime()