2012-03-09 3 views
1

J'ai modifié et nettoyé ce script PHP que quelqu'un d'autre a écrit. Localement sur mon serveur WAMP il répertorie les images par ordre alphabétique (ils sont tous nommés 001.jpg ~ 110.jpg) mais sur le serveur live LAMP je pense qu'ils sont organisés par date de modification ... quoi que ce soit ce n'est pas par nom de fichier . Ce sont toutes des images JPEG, donc je ne m'inquiète pas d'organiser par type. Alors, comment puis-je modifier ce script pour lister les images par ordre alphabétique, s'il vous plaît?PHP: script d'image PAS liste d'images par ordre alphabétique

function getPictures() 
{ 
global $page, $per_page, $has_previous, $has_next; 

if ($handle = opendir('tour/')) 
{ 
    $lightbox = rand(); 
    echo '<ul id="pictures">'; 

    $count = 0; 
    $skip = $page * $per_page; 

    if ($skip != 0) {$has_previous = true;} 

    while ($count < $skip && ($file = readdir($handle)) !== false) 
    { 
    if (!is_dir($file) && ($type = getPictureType($file)) != '') {$count++;} 
    } 

    $count = 0; 

    while ($count < $per_page && ($file = readdir($handle)) !== false) 
    { 
    if (!is_dir($file) && ($type = getPictureType($file)) != '') 
    { 
    if (!is_dir('thumbs/')) {mkdir('thumbs/');} 
    if (!file_exists('thumbs/'.$file)) {makeThumb('tour/'.$file,$type);} 

    echo '<li><a href="tour/'.$file.'" rel="lightbox['.$lightbox.']">'; 
    echo '<img src="thumbs/'.$file.'" alt="" />'; 
    echo '</a></li>'; 
    $count++; 
    } 
    } 
    echo '</ul>'; 

    while (($file = readdir($handle)) !== false) 
    { 
    if (!is_dir($file) && ($type = getPictureType($file)) != '') 
    { 
    $has_next = true; 
    break; 
    } 
    } 
} 
} 
+1

Mettez les noms de fichiers dans un tableau, genre qui et sortir la liste alors. – Niko

+0

duplication possible de [Trier et afficher la liste des répertoires alphabétiquement en utilisant opendir() en php] (http://stackoverflow.com/questions/884974/sort-and-display-directory-list-alphabetically-using-opendir-in-php – j08691

+0

Je pense tableau et ce n'est pas une dupe de cette question. – John

Répondre

0

On dirait une fonction « lightbox », si alors voici la version modifiée complète de la fonction que je ... posté ci-dessus

function getPictures() 
{ 
if ($handle = opendir('tour/')) 
{ 
    global $page, $per_page, $has_previous, $has_next; 
    $lightbox = rand(); 
    echo '<ul id="pictures">'; 
    $count = 0; 
    $skip = $page * $per_page; 

    $file = scandir('tour/'); 
    $images = array(); 

    foreach ($file as $key => $value) 
    { 
    if (!is_dir('tour/'.$value) && ($type = getPictureType('tour/'.$value)) != '') 
    { 
    array_push($images,$value); 
    } 
    } 

    natsort($images); 

    $count = 0; 
    $start = $per_page*$page; 
    $end = $start+$per_page - 1; 

    foreach ($images as $key => $value) 
    { 
    if ($key>=$start && $key<=$end) 
    { 
    echo '<li><a href="tour/'.$value.'" rel="lightbox['.$lightbox.']"><img src="thumbs/'.$value.'" alt="" /></a></li>'; 
    $count++; 
    } 
    } 
    $not_first = $end+1; 
    if ($key>$end) {$has_next = true;} 
    if ($not_first!=$per_page) {$has_previous = true;} 

    echo '</ul>'; 
} 
} 
2

Au lieu d'utiliser readdir, vous pouvez utiliser scandir, qui trie par ordre alphabétique par défaut.

Par défaut, l'ordre trié est alphabétique dans l'ordre croissant. Si , l'ordre de tri facultatif est défini sur SCANDIR_SORT_DESCENDING, l'ordre de tri est alphabétique dans l'ordre décroissant. S'il est défini sur SCANDIR_SORT_NONE, le résultat n'est pas trié.

Gardez à l'esprit, scandir retourne un tableau de noms de fichiers, alors que readdir retourne un nom unique d'entrée. Vous pouvez également lire vos noms de fichier dans un tableau et le trier en utilisant natsort.

// Orders alphanumeric strings in the way a human being would 
natsort($arr); 

Array 
(
    [3] => img1.png 
    [2] => img2.png 
    [1] => img10.png 
    [0] => img12.png 
) 
Questions connexes