Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176

    Ordine numerico in 3 cifre

    Salve a tutti,
    ho una cartella con dentro delle immagini con il nome "img1.jpg", "img2.jpg", "img3.jpg" ecc ecc.
    Quando le richiamo con la funzione is_dir / opendir ho il problema che l'ordine delle immagini non è corretto in quanto l'ordine è "img1.jpg", "img10.jpg", "img11.jpg", "img2.jpg"..
    In pratica quello che vorrei sapere è se esiste il modo di trasformare i numeri in questo modo:
    1 -> 001
    2 -> 002
    10->010

    così da poter usare come nome "img001.jpg", "img002.jpg" e via via..
    Grazie a chi mi darà un consiglio

  2. #2

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Puoi fare cosi usando natsort + sort

    codice:
    <?php 
    
    if ($handle = opendir("d:\\temp\\")) {
        /* Ceci est la façon correcte de traverser un dossier. */
        while (false !== ($file = readdir($handle))) {
            $arrFiles[] = $file;
        }
        closedir($handle);
    }
    
    //------- ordine naturale
    natsort($arrFiles);
    //------- Riordinamento delle chiavi
    sort($arrFiles);
    
    foreach ($arrFiles as $value) {
     print "$value
    ";
    }
     ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da nicola75ss
    http://se2.php.net/manual/it/function.natsort.php

    alla quale bisogna aggiungere sort per riordinare le chiavi.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da badaze
    alla quale bisogna aggiungere sort per riordinare le chiavi.
    Vero.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Grazie a tutti per l'aiuto.. purtroppo nonostante abbia provato in tutti i modi non riesco ad implementare la funzione in questo codice..
    codice:
    $pag=4;
    $path1="dati/immobili/immobile$id/img/ico";
    $path2="dati/immobili/immobile$id/img/low";
    $path3="dati/immobili/immobile$id/img/hi";
    
    if (is_dir("$path1")) {
    $handle=opendir($path1);
    while (false!==($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
    $title = explode('.', $file);
    if($title[1]=="jpg" || $title[1]=="jpeg" || $title[1]=="gif" || $title[1]=="png"){
    if($pag==4) {echo"<div class=\"floatleft\">";}
    $pag--;
    $title[0] = str_replace('_', ' ', $title[0]);
    
    $a = array("_ico");
    $b = array("_low");
    $c = $file;
    $d = array("");
    $file2 = str_replace($a, $b, $c);
    $file3 = str_replace($a, $d, $c);
    
    echo "<img class=\"imggallery\" src=\"".$path1."/".$file."\" alt='$title[0]'/>";
    if($pag==0) {echo"</div>";$pag=4;}
    }
    }
    
    }
    if($pag!=4) {echo"</div>";$pag=4;}
    closedir($handle);
    }
    echo "</div>";
    Qualcuno mi dà un suggerimento?


    Grazie!

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Normale. Non usi la tecnica che ho usato io. Devi prima mettere tutti i files della cartella in un array e poi ordinato l'array percorrerlo per stampare a video.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Ma l'array lo devo fare così:
    codice:
    while (false!==($file = readdir($handle)))
    {$arrFiles[] = $file;
    }
    ?
    e poi partire con:
    codice:
    if ($file != "." && $file != "..") {
    $title = explode('.', $file);
    sempre dentro il "while"?

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ti consiglio di provare il mio esempio.

    In sostanza riempi l'array senza fare nulla. Poi usi un foreach per la formatazione dei dati in HTML.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    176
    Ho provato parecchio ma ho delle difficoltà.. questo è il mio codice:
    codice:
    $pag=4;
    $path1="dati/immobili/immobile$id/img/ico";
    $path2="dati/immobili/immobile$id/img/low";
    $path3="dati/immobili/immobile$id/img/hi";
    
    if ($handle = opendir("$path1")) {
        
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                $arrFiles[] = $file;
                natsort($arrFiles);
                foreach ($arrFiles as $value) {
                $title = explode('.', $value);
                if($title[1]=="jpg" || $title[1]=="jpeg" || $title[1]=="gif" || $title[1]=="png"){
                    if($pag==4) {echo"<div class=\"floatleft\">";}
                    $pag--;
                    $title[0] = str_replace('_', ' ', $title[0]);
    
                    $a = array("_ico");
                    $b = array("_low");
                    $c = $value;
                    $d = array("");
                    $file2 = str_replace($a, $b, $c);
                    $file3 = str_replace($a, $d, $c);
    
                    echo "<div class=\"gallery\"><img class=\"\" src=\"".$path1."/".$value."\" alt='$title[0]'/></div>";
                    if($pag==0) {echo"</div>";$pag=4;}
                  }
                }
              }}
              if($pag!=4) {echo"</div>";$pag=4;}
              closedir($handle);
            }
            echo "</div>";
    Ottengo una ripetizione di una decina di cicli di immagini elencato in modo "non naturale" e poi in fondo un solo ciclo di immagine elencate nel modo "umanizzato".
    Non riesco proprio a capire dove sbaglio.. Ho provato a unire i 2 codici dato che ho bisogno delle features che mi implementava quello vecchio, come ad esempio il riconoscimento dei soli file d'immagine e le 4 immagini per riga.
    Un aiutino?
    Grazie!

    p.s.
    Ho capito che mi c'è una relazione tra il numero di cicli e il numero di immagini presenti nella cartella.
    Dentro alla cartella ho 11 immagini.. mi stampa a video 11 volte tutte le immagini. Le prime 10 volte in ordine "informatico", l'ultima in ordine "naturalizzato".. boh!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.