Functie get first image in dir

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dimitri Van Reeth

Dimitri Van Reeth

11/08/2012 15:07:02
Quote Anchor link
Hallo,

Ik ben bezig met zelf een soort van mini-foto/video galerij te maken.
Alles is gelukt, enkel om bij het albumoverzicht elk album telkens de eerste foto van de folder te geven lukt niet.

Hier is mijn functie:

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
<?php
 function getFirstImage($dir){
        global $imageName;
        $ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
        $i = 0;
        if($handle = opendir('images/upload/images/'.$dir)) {
            while(false!== ($file = readdir($handle))){
                if(strstr($file, "." . $ext[$i])== '.' && strstr($file, "." . $ext[$i])== '..'){
                    $i++;
                }
else{
                    $imageName = $file;
                    break;
                }
            
            
        }

        
        $imagePath = 'images/upload/images/'.$dir.'/'.$imageName;
        closedir($handle);
        }

        return($imagePath);
        }

?>


Het aanroepen van de functie:

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
<?php
 if(!isset($_GET['dir'])){
    $directories = scandir('images/upload/images');
    $counter=0;
    
    echo('<div class="albumRow">');
    foreach($directories as $directory){
    if($directory!=='.' and $directory!=='..' ){
    if($counter == 4){
      echo('</div><div class="albumRow">');
      $counter=0;
        }

    $counter++;
                    
    $firstImage = getFirstImage($directory);
                    
    echo ('<div class="singleFolder"><a href="?dir='.$directory.'">
        <img src="'
.$firstImage.'" width="100" height="80" />
        </a>
        <span>'
.$directory.'</span></div>');
            
    }
    }

?>
 
PHP hulp

PHP hulp

22/12/2024 16:04:57
 
Obelix Idefix

Obelix Idefix

11/08/2012 15:19:46
Quote Anchor link
Dimitri Van Reeth op 11/08/2012 15:07:02:
de eerste foto van de folder te geven lukt niet.

En wat versta jij onder de 1e foto?
De 1e die geüpload is?
De 1e die gemaakt is?
De eerste qua alfabet?
De eerste .....

En wat lukt er niet? Wordt er helemaal niets op gehaald? Komt het pad/de bestandsnaam niet (goed) door? Foutmelding(en)?
 
- SanThe -

- SanThe -

11/08/2012 16:29:30
Quote Anchor link
if(strstr($file, "." . $ext[$i])== '.' && strstr($file, "." . $ext[$i])== '..'){

Deze regel vereenvoudigd:
if(strstr($file, ".jpg")== '.' && strstr($file, ".jpg")== '..'){

Nog simpeler:
if('iets' == '.' && 'iets' == '..'){

Eindconclusie:
if('.' == '..')(

De && (AND) gaat nooit werken.

Verder: Stel dat het werkt dan verhoog je $i om de volgende extensie te gaan bekijken en tevens haal je de volgende $file op. Oftewel het klopt totaal niet.
 
Eddy E

Eddy E

12/08/2012 08:53:11
Quote Anchor link
Probeer deze functie eens:

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
<?php
 function getFirstImage($dir)
        {

        // verkrijg alle foto's in map
        $ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
        $files = glob('images/upload/images/'.$dir.'/*.{'.implode(",", $ext).'}');
        
        // sorteer op datum (oudste eerst)
        array_multisort(array_map( 'filemtime', $files ), SORT_NUMERIC, SORT_ASC, $files);

        // via var... ik weet even niet welke precies van de 2: probeer zelf even
        //$imagePath = 'images/upload/images/'.$dir.'/'.$files[0];

        $imagePath = $files[0];
        
        
        return($imagePath);
        }

?>
 
Dimitri Van Reeth

Dimitri Van Reeth

12/08/2012 12:41:58
Quote Anchor link
Bedankt voor alle hulp!

@Eddy
Ik heb jouw functie zojuist geprobeerd, maar ik krijg deze foutmelding:
Notice: Undefined offset: 0 in C:\Users\Dimitri\Desktop\Website team-xs\root\photos.php on line 112
& lijn 112 is: $imagePath = 'images/upload/images/'.$dir.'/'.$files[0];

Ik had gisteren zelf nog deze functie geschreven:
Deze neemt wel gewoon echt het 1ste bestand van de folder. Maar in de folders komen toch alleen maar afbeeldingen te staan dus ik denk dat deze wel voldoet?
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
<?php
function getFirstImage($dir){
        $ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
         $firstimage = scandir('images/upload/images/'.$dir);
        
        if (array_key_exists(2, $firstimage)) {
        $firstimage = $firstimage[2];
            $dot = strrpos($firstimage, '.');
            $filename = substr($firstimage, 0, $dot);
            $filetype = substr($firstimage, $dot+1);
            
                if (array_search($filetype, $ext) !== false){
                $imagePath = 'images/upload/images/'.$dir.'/'.$filename.".".$filetype;
                }
else{
                $imagePath = 'style/default-folder.jpg';
                }
        }
else{
        $imagePath = 'style/default-folder.jpg';
        }

        return($imagePath);
        }

?>
Gewijzigd op 12/08/2012 12:46:02 door Dimitri Van Reeth
 



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.