Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59

    Ordinare alfabeticamente risultati lettura cartella

    Ciao a tutti,
    ho creato una galleria fotografica dinamica suddivisa per categorie, ogni categoria con diversi album. la lista degli album viene creata automaticamente leggendo direttamente i file e le cartelle presenti.

    In locale con php5 la lista è automaticamente ordinata alfabeticamente, mente in remoto (php4) i risultati non sono ordinati.

    Riporto il codice in questione che genera le liste e le sottoliste:

    Codice PHP:

    $cartella 
    'photogallery/';
    echo 
    "<ul>";
    $dir_handle = @opendir($cartella);
    while (
    $file readdir($dir_handle)){
            
    //generazione categorie
            
    if($file!="." && $file!=".." /* && (is_dir($file)) */  ) {
               echo 
    "[*]<a href=\"#\">ANNO: '".substr($file, -2)."</a>";
                       
    //apertura album edizioni
                    
    $percorso_album=$cartella."/".$file;
                    
    $dir_handle2 = @opendir($percorso_album);
                    echo 
    "<ul>";
                        while (
    $album readdir($dir_handle2)){
                            if(
    $album!="." && $album!=".." ) {
                                   echo 
    "[*]<a href=\"index.php?pagina=photogallery&cat=".$file."/".$album."\">".str_replace('_'' '$album)."</a>";
                            }
    //chiusura if link gallery
                        
    }//chiusura whilegenerazione relativa a sottocartella
                    
    echo "[/list]";
            }
    //CHIUSURA WHILE INIZIALE
    echo "[/list]"
    c'è un rimedio veloce prima che mi metta a creare array e ordinarli tramite sort?

    Grazie! ;-)

  2. #2
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Che io sappia non hai alternative :\

    La funzione che ti permetterebbe di fare ciò che chiedi (scandir(), per la precisione) è disponibile solo dalla versione 5. L'alternativa è appunto la creazione di un array da riordinare, come indicato in questa pagina: http://www.php.net/manual/en/function.scandir.php
    Ciao

    Daniele
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59
    SCUSATE DOPPIO POST

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59
    fatto ma non funziona proprio come deve..le categorie le cataloga bene....gli album della prima categoria pure...il problema è che poi nelle cateorie a seguire vengono fuori degli album che stanno nella prima categoria........

    sembrerebbe come se non resetta l'array degli album delle categorie a seguire...

    ecco il codice...

    Codice PHP:

    <?php

    $cartella 
    'photogallery/';
    echo 
    "<ul>";
    $dir_handle = @opendir($cartella);

    //CREO ARRAY che contiene i nomi dei file
                    
    $num=0;
                        while (
    $elemento readdir($dir_handle)){
                                if (
    $elemento!="." && $elemento!="..") {
                                    
    $edizioni[$num]=$elemento;
                                    
    $num=$num+1;
                                } 
    //CHIUSURA IF
                        
    }    //CHIUSURA WHILE

                        
    sort($edizioni,SORT_NUMERIC);
                        
    reset($edizioni);
                        for(
    $i=0;$i<$num;$i++) { 
                        
                            if(
    $edizioni[$i]!="." && $elenco[$i]!=".." /* && (is_dir($file)) */  ) {
                               echo 
    "[*]<a href=\"#\">ANNO '".substr($edizioni[$i], -2)."</a>";
                                    
    //apertura certella edizione x lettura e generazione lista album
                                    
    $percorso_album=$cartella."/".$edizioni[$i];
                                    
    $dir_handle2 = @opendir($percorso_album);
                                    echo 
    "<ul>";
                    
                                    
    //CREO ARRAY che contiene i nomi dei file NUOVO CODICE ORDINE ALFABETICO

                                    
    $num2=0;
                                        while (
    $album readdir($dir_handle2)){
                                                if (
    $album!="." && $album!="..") {
                                                    
    $lista_album[$num2]=$album;
                                                    
    $num2=$num2+1;
                                                } 
    //CHIUSURA IF
                                        
    }    //CHIUSURA WHILE
                    
                                    
    sort($lista_album,SORT_STRING);
                                    
    reset($lista_album);
                                        
                                    for(
    $j=0;$j<$num2;$j++) { 
                                            echo 
    "[*]<a href=\"index.php?pagina=photogallery&cat=/".$edizioni[$i]."/".$lista_album[$j]."\">".str_replace('_'' '$lista_album[$j])."</a>";                    
                                    }
                        
                        
    //VECCHIO CODICE CHE NON METTE IN ORDINE ALABETICO SU PHP4
                        
    //                    while ($album = readdir($dir_handle2)){
    //                        if($album!="." && $album!=".." /* && (is_dir($file)) */  ) {
    //                               echo "[*]<a href=\"index.php?pagina=photogallery&cat=".$file."/".$album."\">".str_replace('_', ' ', $album)."</a>";
    //                        }//chiusura if link gallery
    //                    }//chiusura whilegenerazione relativa a sottocartella 
                        
                        
                        
                        
                        
                    
    echo "[/list]";
            }
    //CHIUSURA FOR
    echo "[/list]";
    ?>
    eppure num2 lo resetto di volta in volta...c'è qualcosa che mi sfugge evidentemente...

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    59
    la notte porta consiglio! ahahahahahah

    bastava svuotare l'array....in pratica con ogni lettura andavo a sostituire i valori "bassi" dell'array...ma quelli "alti" se non sostituiti rimanevano come stavano!

    ciao

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.