martin808 Skrevet 10. mars 2014 Del Skrevet 10. mars 2014 (endret) Hei, jeg har en mappe med bilder som skal skrives ut til en side. Etter et kjapt google søk fant jeg dette. Denne koden fungerer fint, men den mangler litt funksjonalitet. $dir = "/var/www/img/*.jpg"; //get the list of all files with .jpg extension in the directory and safe it in an array named $images $images = glob( $dir ); //extract only the name of the file without the extension and save in an array named $find foreach( $images as $image ): echo "<img src='" . $image . "' />"; endforeach; Jeg ønsker to mapper, en som inneholder miniatyrbilder med samme navn + en ending. Og en med høyoppløste bilder. Det skal være en link til det store bilde som skal poppe opp i en "lightbox" når du trykker på miniatyrbildet. et bilde vil da se slik ut i html. <a href="Bilder/1.jpg" data-lightbox="1"><img data-lightbox="1" src="Bilder_min/1_min.jpg" /></a> -------- Mappestruktur: * Bilder/1.jpg * Bilder_min/1_min.jpg // "_min" kan selvfølgelig sløyes på selve bildet, men dette er noe jeg ikke ønsker. Jeg har forsøkt å redigere echo setningen minst 20 ganger, men resultatet blir at jeg ikke får opp et eneste bilde. Dette er det jeg har forsøkt meg på til nå, men ingenting dukker opp. Her mangler jeg også miniatyrbilde funksjonen. $dir = "Bilder/*.jpg"; //get the list of all files with .jpg extension in the directory and safe it in an array named $images $images = glob( $dir ); //extract only the name of the file without the extension and save in an array named $find foreach( $images as $image ): echo "<a href='". $image ."'<img src='" . $image . "' /></a>"; endforeach; Endret 10. mars 2014 av martin808 Lenke til kommentar
-HaavardH- Skrevet 10. mars 2014 Del Skrevet 10. mars 2014 (endret) Prøv noe sånt som: echo '<a href="Bilder/'.$image.'" data-lightbox="1"><img data-lightbox="1" src="Bilder_min/'.str_replace('.', '_min.', $image).'" /></a>'.PHP_EOL; Har ikke testet denne, men det burde funke... Ville brukt anførselstegnene omvendt av deg, " (doble) til HTML, og ' (enkle) til PHP. Kan ikke komme på hvorfor i farten, men jeg er sikker på det er en god grunn Bruken av String Replace (str_replace) er kanskje ikke optimalt, men du trenger noe som kan føye til _min foran .jpg, så vi kan søke etter punktumet og erstatte det med noe annet. edit: Alternativt kan du bygge ut funksjonen med en scan av begge mappene i hvert sitt steg (Bilder og Bilder_min) og hatt en if inni foreach slik at du bare viser bilder som har en makker. Dvs, du tester om det finnes en miniversjon, har du glemt å lage den får du dermed ikke en død link, den bare hopper over akkurat den... og sier tydelig fra, som i eksempelet under det ville blitt noe sånt som (pseudo-kode): $errors = array(); foreach ($images as $image) { if (in_array(basename($image)).'_min', $thumbnails) { echo '...'; // Her putter du inn HTML'en din } else { $errors[] = $image; } } // Lag en liste til slutt over bilder som ikke har en miniversjon if (!empty($errors)) { foreach ($errors as $error) { echo 'Du har glemt å lage en thumbnail av '.$error.'!<br />'.PHP_EOL; } } Ikke så effektivt, da det involverer et søk (in_array) for hvert eneste bilde. En raskere løsning vil være å slå sammen de to scanningene til ett array... Lykke til! Endret 10. mars 2014 av -HaavardH- 1 Lenke til kommentar
martin808 Skrevet 10. mars 2014 Forfatter Del Skrevet 10. mars 2014 (endret) ^ Hei koden du postet først fungerte med noen små modifikasjoner. echo '<a href="Bilder/'.$image.'" data-lightbox="1"><img data-lightbox="1" src="Bilder_min/'.str_replace('.', '_min.', $image).'" /></a>'.PHP_EOL; /* $image == Bilder/<bilde1.jpg> Derfor lagde jeg en Bilder mappe inne i Bilder_min. Mappestruktur Bilder bilde01.jpg Bilder_min Bilder bilde01_min.jpg Da ble koden slik */ echo '<a href="'.$image.'" data-lightbox="1"><img data-lightbox="1" src="Bilder_min/'.str_replace('.', '_min.', $image).'" /></a>'.PHP_EOL; Tuen takk for at du tok deg tid til å svare. Endret 10. mars 2014 av martin808 Lenke til kommentar
-HaavardH- Skrevet 13. mars 2014 Del Skrevet 13. mars 2014 (endret) Hei igjen! Så bra at du fikk det til å fungere Ikke dumt å lage til mappene så det fungerer med koden, men det er heller ikke så vanskelig å gjøre den litt om slik at du får en logisk mappestruktur også, f.eks: Bilder - Bilde1.jpg - Bilde2.jpg - Mini -- Bilde1_min.jpg -- Bilde2_min.jpg Da kan du prøve denne kodesnutten her, hvor str_replace er bygd ut til å søke etter to forskjellige ting : $search = array('.', 'Bilder/'); $replace = array('_min.', 'Bilder/Mini/'); foreach ($images as $image) { echo '<a href="'.$image.'" data-lightbox="1"><img data-lightbox="1" src="'.str_replace($search, $replace, $image).'" /></a>'.PHP_EOL; } Igjen, jeg har ikke prøvd den ut, men det burde funke Endforeach; kan du stryke i så fall Endret 13. mars 2014 av -HaavardH- Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå