Foto's uit een map halen en weergeven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jacco van Koot

Jacco van Koot

05/04/2011 15:41:14
Quote Anchor link
Is het mogelijk met een redelijk simpel php script om foto's uit een bepaalde map automatisch weer te geven op een pagina, en gelijk de java lightbox e.d. eraan te linken? Dus dat je alleen de foto's in een map zet je op website, en dat de webpagina de foto's uit die map haalt en ze gelijk weergeeft zonder dat je stuk voor stuk de foto's moet aanroepen.
 
PHP hulp

PHP hulp

20/04/2024 01:49:41
 
Tobias Tobias

Tobias Tobias

05/04/2011 15:47:35
Quote Anchor link
Ik heb zo'n script thuis liggen, zal hem vanavond doorsturen
 
- Mark -

- Mark -

05/04/2011 15:48:25
Quote Anchor link
met glob() kun je al je foto's uit een map halen. Je krijgt dan een array met daarin de locatie van je foto's. Van java heb ik helaas geen verstand.
 
Gerhard l

gerhard l

05/04/2011 15:52:11
Quote Anchor link
klik

werkt perfect @SanThe
Gewijzigd op 05/04/2011 15:52:56 door gerhard l
 
Jacco van Koot

Jacco van Koot

05/04/2011 16:00:34
Quote Anchor link
@Tobias
Zou harstikke mooi zijn!

@Mark
Het is niet bijzonder iets met java, er staat puur wat in de rel van de afbeelding

@Gerhard
ik d'r eens naar kijken :)

edit; ik heb via de link van Gerhard het voor elkaar gekregen dat ie de bestandsnamen ophaalt, ik weet echter niet hoe ik dit nu als afbeelding weer kan geven.. Ik zou ook graag de 1e 9 foto's op 1 pagina willen, de 9 daarop op een volgende pagina e.d., is dit te doen? Met PHP ben ik echt net begonnen, dus als iemand me hiermee zou kunnen helpen zou mooi zijn! :)
Gewijzigd op 05/04/2011 16:14:15 door Jacco van Koot
 
B a s
Beheerder

B a s

05/04/2011 16:31:08
Quote Anchor link
De functie glob is veel makkelijker en netter om te gebruiken. Je hebt daar niet een heel script voor nodig. Je leert het jezelf nu verkeerd aan. Als je pagina nummers wilt maken, dan moet je de sortering van je array in kaart brengen, en dan via $_GET variabelen aangeven waar hij moet beginnen met tonen.

Dus als je hebt: laatzien.php?begin=9, begint hij bij 9. Je zorgt er dan via een loopje voor dat die ophoudt bij 9.
 
Jacco van Koot

Jacco van Koot

05/04/2011 16:45:45
Quote Anchor link
Ik heb 't nu met de glob() zo dat ie alle .png bestanden ophaalt en weergeeft, nu moet ik ze alleen nog in een <img src=$filename"> krijgen, maar dat lukt me nog niet..

Toevoeging op 05/04/2011 16:46:18:

Ik heb 't nu met de glob() zo dat ie alle .png bestanden ophaalt en weergeeft, nu moet ik ze alleen nog in een <img src=$filename"> krijgen, maar dat lukt me nog niet..
 
Gerhard l

gerhard l

05/04/2011 16:49:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

function
showfiles($map = "./", $return = array()){
    if(@$dir = opendir($map)){
        while (false !== ($file = readdir($dir))){
            if ($file != "." && $file != ".."){
                 $return[] = $map . $file;
            }
        }
    }
    @
closedir($dir);
    return $return;
}


// Functie aanroepen met de mapnaam en aan het eind een / (slash).
$dirinhoud = showfiles('media/fotos/');

for($j = 0; $j < count($dirinhoud);$j++) {
    if(is_dir($dirinhoud[$j])){
        $return2 = showfiles($dirinhoud[$j].'/');
        
        for($i = 0; $i < count($dirinhoud);$i++){
            echo '<b>'.$dirinhoud[$i].'</b><br/>';
            for($i = 0; $i < count($return2);$i++){
                echo '<img src="'.$return2[$i].'"/><br/>';
            }

            echo '<br/>';
        }
    }
}

?>
Gewijzigd op 05/04/2011 16:49:32 door gerhard l
 
- Mark -

- Mark -

05/04/2011 16:54:28
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

    foreach($images as $img){
        
        echo '<img src='.$img.'">';
    }


?>


Om de gehele array door te lopen kun je gewoon foreach gebruiken. ik weet niet hoe je array met albeeldingen heet dus je moet $images even veranderen naar die van jouw.
Gewijzigd op 05/04/2011 16:55:26 door - Mark -
 
Jacco van Koot

Jacco van Koot

05/04/2011 17:04:08
Quote Anchor link
Ah ik heb 't nu voor elkaar dat ie foto's uit een map haalt en zo plaatst dat ik het wil, ook de lightbox zit er al aan vast. Nu nog verder met dat er maar 9 foto's per pagina komen..
 
- Mark -

- Mark -

05/04/2011 17:13:47
Quote Anchor link
Uit het hoofd en niet getest. :p garantie tot aan de deur dus.

Je weet waar $_GET['page'] vandaan komt of niet? Het gedeelte waar de foto's worden opgehaald moet je nog even zelf invullen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php

    # Het aantal resultaten per pagina.
    
        $results_per_page = 9;

    
    # Foto's ophalen.
        
        $images = glob();
        

    # Foto's verdelen over meerdere pagina's.

        $pages = array_chunk($images, $results_per_page);


    # De huidige pagina bepalen.
    
        $current_page = (isset($_GET['page']) and array_key_exists($_GET['page'] - 1, $pages)) ? $_GET['page'] - 1 : 0 ;


    # Foto's weergeven.

        foreach($pages[$current_page] as $img){
            
            echo '<img src="'.$img.'">';
        }



    # Het totaal aantal pagina's tellen.
    
        $page_count = count($pages);
            
    
    # Menu weergeven.
    
        for($i = 1; $i <= $page_count; $i++){
        
        # Link weergeven.
        
            echo '<a href="?page='.$i.'">'.$i.'</a>';
            
            
        # Divider weergeven als we nog niet op de laatste pagina zijn.
        
            if($i < $page_count){
            
                echo ' - ';
            }
        }


?>


EDIT: Menu toegevoegd om het wat duidelijker te maken.

EDIT 2: Paar foutjes eruit gehaald en snel even getest.
Gewijzigd op 05/04/2011 18:53:15 door - Mark -
 
Tobias Tobias

Tobias Tobias

05/04/2011 19:08:11
Quote Anchor link
Mijn script komt overeen met wat gerhard heeft gepost.
 
Jacco van Koot

Jacco van Koot

07/04/2011 11:07:11
Quote Anchor link
Oké, ik heb het nu allemaal wel aardig voor elkaar, ik heb alle foto's gewoon op 1 pagina gezet, net zo makkelijk, ook voor degene die ze willen hebben.

Echter zit ik nog met 1 probleempje, de foto's worden redelijk groot, en ik heb ze op de pagina kleiner staan zodat het overzichtelijk blijft. Ik heb nu alleen dat de foto's op de pagina 20% zijn van de ware grootte, is er een manier om met glob() jpg bestanden, en met een glob() .png bestanden uit diezelfde map te halen om de jpg bestanden op de site weer te geven, en de png bestanden als foto op ware grootte?
 
- Mark -

- Mark -

07/04/2011 11:32:03
Quote Anchor link
Ik neem aan dat de .jpg en .png bestanden dezelfde naam hebben?

Je krijgt dan toch gewoon

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

        foreach($pages[$current_page] as $img){
            
            echo '<a href="'.str_replace('.png', '.jpg', $img).'"><img src="'.$img.'"></a>';
        }


?>
 
Jacco van Koot

Jacco van Koot

07/04/2011 11:49:34
Quote Anchor link
Hm voor mij is dat niet zo 'gewoon' :p maar ik bedenk me nu, is het niet mogelijk om alleen de bestandsnaam, en niet de extensie op te vragen? dan kun je in de <a href> en <img> de extensie erachter plakken.
 
- Mark -

- Mark -

07/04/2011 11:58:11
Quote Anchor link
Daarom vroeg ik of de namen hetzelfde waren.

stel

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $img = 'jacco.png'; ?>


als je dan

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo str_replace('.png', '.jpg', $img); ?>
doet dan krijg je jacco.jpg te zien.
Gewijzigd op 07/04/2011 11:59:38 door - Mark -
 
Jacco van Koot

Jacco van Koot

07/04/2011 12:03:32
Quote Anchor link
Ah oké, kijk eens aan, daar kan ik volgens mij wel even leuk mee puzzelen. Dank je!

edit:
Ik heb nu dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach (glob("100411/*.jpg") as $filename ) {
    echo  "<a href='$filename' rel='lightbox[1]'> str_replace('.jpg', '.png', $filename) <img src='$filename' class='image'>";
}


?>


maar die werkt niet, waar moet ik die str_replace ergens plaatsen? :) de <a href> is voor de lightbox, deze moet gewoon groot zijn en .jpg, de <img> moet klein worden en dus .png.
Gewijzigd op 07/04/2011 12:24:08 door Jacco van Koot
 
Niels K

Niels K

07/04/2011 12:28:40
Quote Anchor link
Variabelen uit de quotes.. en natuurlijk str_replace ook.. Anders gaat het nooit werken.

Succes!
 
- Mark -

- Mark -

07/04/2011 12:29:54
Quote Anchor link
Je kon al aan de kleurtjes zien dat er niets van klopte. html hoort met dubbele quotes en niet met enkele. Tevens is het beter om je vars buiten de quotes te laten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

foreach (glob("100411/*.jpg") as $filename ) {
    
    echo '<a href="'.$filename.'" rel="lightbox[1]"><img src="'.str_replace('.jpg', '.png', $filename).'" class="image"></a>';
}



?>
Gewijzigd op 07/04/2011 12:30:36 door - Mark -
 
Jacco van Koot

Jacco van Koot

07/04/2011 12:32:12
Quote Anchor link
Haha oké, met de quotes weet (wist) ik nooit goed wat te doen, maar nu dus wel. En het werkt ook nog, bedankt man!
 
- Mark -

- Mark -

07/04/2011 12:38:50
Quote Anchor link
Graag gedaan.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.