Hjælp til upload af billeder

Tags:    php

Goddag

Jeg har fået stillet den opgave at jeg skal lave et news system. Og da jeg er rimelig ny til php så er jeg løbet ind i et problem.

Til hver artikel skal der være et billede men der kan sagtens være flere billeder til den samme artikel. Billederne ligger på harddisken.

Jeg er noget så langt at jeg kan se filnavnene på de 4 billeder der tilhører artiklen(se billede).

http://yfrog.com/jmfilerxj

Der skal kun vises 1 af billederne i artiklen.
Det skal prioteres således at hvis alle 4 filer findes i mit directory så skal den altid kun uploade billedet med navnet 1000.jpg.

Hvis der derimod ikke findes nogle 1000.jpg fil i mappen så skal den tage _400.jpg filen. Og hvis _400.jpg filen ikke findes skal den tage _175.jpg filen osv.


Fold kodeboks ind/udKode 


som det ses i koden har jeg forsøgt med et switch statement men den priotere altid _100 højest.

Jeg har også forsøgt med nogle if og else sætninger men ikke noget jeg kunne få til at fungere

Vis nogle har en idè til hvordan jeg evt. kunne lave en løsning til mit problem ville det være dejligt da jeg i de sidste 4 dage har søgt både på php.net og google for at finde en løsning dog uden held

Hilsen Brian S



9 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Meningen er at der sagtens kan være flere billeder til hver artikel. Men der skal kun bruges et af billederne til hver artikel. Og ikke smide alle 4 ind som din kode f.eks. gør.

Min kode sætter kun et billede ind. Dog kan jeg se, at jeg havde byttet om på rækkefølgen i koden. Det skulle se sådan her ud:

if (file_exists('billeder/_100.jpg')) { $filename='_100.jpg';}
if (file_exists('billeder/_175.jpg')) { $filename='_175.jpg';}
if (file_exists('billeder/_400.jpg')) { $filename='_400.jpg';}
if (file_exists('billeder/1000.jpg')) { $filename='1000.jpg';}

$filename bliver overskrevet hver gang den finder et billede med en højere værdi.

Kan der optræde andre "vilkårlige" værdier?



Du kan jo selv vælge hvordan du sætter det ind i et array..

Fold kodeboks ind/udPHP kode 

så er dit array sat op i den rækkefølge.
Dog hvis du kalder array_sort vil du sortere det på den anden måde.
Men det jeg ikke helt forstår er hvordan du kender denne "rækkefølge" billederne skal prioriteres på?



Fold kodeboks ind/udKode 

.. meget forsimplet og ikke testet.



Indlæg senest redigeret d. 31.08.2010 13:55 af Bruger #955
Meningen er at der sagtens kan være flere billeder til hver artikel. Men der skal kun bruges et af billederne til hver artikel. Og ikke smide alle 4 ind som din kode f.eks. gør.

Billederne er i forskellige kvalitet så derfor skal der prioteres således at det altid er den bedst mulige kvalitet der bliver smidt ind på siden.

Det er prioteret således at:
1: 1000 er den bedste opløsning
2: 400
3: 175
4: 100

osv.

Men det er muligvis sorteringen fordi hvis man prøver evt. at smide det ind i et array så vil array se således ud:

Array ( [0] => _100.jpg [1] => 1000.jpg [2] => _175.jpg [3] => _400.jpg )

Hvilket er den rækkefølge billederne bliver prioteret i.





Jeg kender rækkefølgende til billederne ud fra at have studeret filerne der ligger på mit drev.

Jeg har haft alle billederne der tilhører en artikel åbnet og derefter set kvaliteten af billederne.

Hvis vi tager et eksempel på hvor der er 4 billede filer til en tilhører en artikel:

20100811-104303-A_net_S-ren-Gades-regelbru_100.jpg
20100811-104303-A_net_S-ren-Gades-regelbru_175.jpg
20100811-104303-A_net_S-ren-Gades-regelbru_400.jpg
20100811-104303-A_net_S-ren-Gades-regelbru_1000.jpg

Jeg tager så hele filnavnet på alle filerne og laver det til en substring($rest2 i koden).

Så istedet for hele filnavnet får jeg bare vist de sidste 8 tegn af filnavnet.

Så det vil sige jeg har 4 substrings der repræsentere filnavnet på billederne.

1000.jpg
_400.jpg
_175.jpg
_100.jpg

Udfra disse 4 substrings vil jeg gerne have det sorteret således at hvis nu alle 4 billede filer findes på drevet så vælger den at sortere rækkefølgende således på billederne:

1: 1000.jpg
2: _400.jpg
3: _175.jpg
4: _100.jpg

Og ikke som den gør i øjeblikket:
1: _100.jpg
2: 1000.jpg
3: _175.jpg
4: _400.jpg


Hilsen Brian S



Indlæg senest redigeret d. 31.08.2010 15:13 af Bruger #16097
Hej Stefan

Jeg har sat og prøvet på at arbejde lidt med den kode du gav mig. Men det er stadig ikke lykkedes mig at få det til at virke.

Jeg vedhæfter lige den nye kode så du kan se hvor jeg har anvendt din kode

Fold kodeboks ind/udKode 


Jeg har os lige valgt at vedhæfte et billede af mit problem:

http://imageshack.dk//viewimage.php?file=/imagesfree/aPd27229.jpg

Som du kan se på billedet kommer jeg ind i min if (!empty($filename2)) men den har mit $filename2 med fra alle 3 if sætninger og ikke bare den nederste af dem.

Så mit filename2 bliver ikke overskrevet hver gang der kommer en ny if sætning.

Hilsen Brian S







Indlæg senest redigeret d. 01.09.2010 10:16 af Bruger #16097
Hej Stefan

Jeg har sat og prøvet på at arbejde lidt med den kode du gav mig. Men det er stadig ikke lykkedes mig at få det til at virke.

Jeg vedhæfter lige den nye kode så du kan se hvor jeg har anvendt din kode

Fold kodeboks ind/udKode 


Jeg har os lige valgt at vedhæfte et billede af mit problem:

http://imageshack.dk//viewimage.php?file=/imagesfree/aPd27229.jpg

Som du kan se på billedet kommer jeg ind i min if (!empty($filename2)) men den har mit $filename2 med fra alle 3 if sætninger og ikke bare den nederste af dem.

Så mit filename2 bliver ikke overskrevet hver gang der kommer en ny if sætning.

Og derfor vil jeg få alle billederne i mappen smidt ind på hjemmesiden

Hilsen Brian S



Tak for hjælpen Stefan har fået det til at virke nu.

Hilsen Brian S



t