• User Attivo

    ciao!
    allora, visto il ragionamento che hai fatto tu mi sono subito messo a lavoro, ma non capisco perchè non riesco a farlo funzionare, non vengono ordinate le immagini.

    ti faccio un esempio di quello che faccio io.

    File:

    immagine_campo_1.jpg
    immagine_inaugurazione_campo_2.jpg
    ```e poi il codice php.
    Tutti i nomi delle immagini vengono trovati tramite la "scansione" della cartella, quindi:
    
    [php]
    //inizio ciclo..
    
    $file_diviso = explode ("_" , $file); //faccio l'explode del nome del file e lo metto nell'array $file_diviso
    $last = count($file_diviso) - 1; //Trovo l'ultima porzione del nome del file in cui e contenuto il numero e l'estensione
    list($num_image , $ext) = explode ("."  , $file_diviso[$last]); //Faccio l'explode dell'ultima posizione dell'array del nome del file per estrapolare il numero
    $image [$num_image] = $file; //Inserisco il file in un array ordinato con i numeri estrapolati ad ogni passaggio del ciclo
    
    //...fine ciclo
    
    arsort ($image); //Ordino le immagini
    [/php]

  • User

    Ciao,
    Io avrei risolto provando a partire dalla fine:hai 4 caratteri standard sempre presenti alla fine(".jpg" o anche se fsse ".png" sempre 4). dal quinto carattere in poi partendo dalla fine hai le tue cifre.
    [php]$temp = substr( $file_name,0,(strlen($filename)-4) );[/php]Cosi dovresti avere in $temp il nome meno l'estensione. Ora, visto che tra il numero file e il resto c'è l'underscore sfrutti l'explode come hai fatto
    [php]$temp = explode("_",$temp);[/php]e prendi il risultato
    [php]$temp = $temp[(count($temp)-1)];[/php]


  • User Attivo

    Se sono tutte immagini con estensione jpg, potresti rovesciare i nomi del file con strrev ed inserirli in un array. Poi ordini l'array in ordine alfanumerico e alla fine rovesci di nuovo i nomi dei file.

    Ti torna?


  • ModSenior

    @olaola said:

    Se sono tutte immagini con estensione jpg, potresti rovesciare i nomi del file con strrev ed inserirli in un array. Poi ordini l'array in ordine alfanumerico e alla fine rovesci di nuovo i nomi dei file.

    Ti torna?

    però se i file sono

    1.jpg
    11.jpg
    2.jpg

    mi sa che non li ordina bene


  • User Attivo

    @Thedarkita said:

    però se i file sono

    1.jpg
    11.jpg
    2.jpg

    mi sa che non li ordina bene

    ehm, hai azzecato in pieno. Avevo provato a fare così, però non li ordina bene... qualche suggerimento?


  • User Attivo

    Ops, avete ragione 😉

    Inverter, mi sembra che la soluzione che tu hai proposto per prima debba funzionare.

    Cosa ottieni stampando a video il contenuto di $image prima e dopo il riordinamento?

    Come fai a scrivere il contenuto dell'array?

    :gthi:


  • User Attivo

    mm si, anche secondo me dovrebbe funzionare la prima soluzione.

    Facciamo una cosa, domani mattina ci lavoro e soprattutto riordino il codice che praticamente non capisco più neanche io.

    Grazie mille, vi faccio sapere


  • User Attivo

    ok, sono riuscito ad orsinare le immagini, ma mi sorge un dubbio:

    qualora io dovessi cancellare un immagine, non avrei più un indice dell'array consecutivo, bensì rischierei di avere un indice come, per esempio, 1,2,3,4,9,12.

    Perciò, se, sempre per esempio, io sto visualizzando l'immagine che ha un indice 9 come faccio a sapere quale è l'id della foto precedente e quale quello della foto successiva?


  • ModSenior

    beh l'array viene modificato quindi indice 4 dell'array ha 9 come valore... tu prendi l'indice 3 che ha valore 7 per esempio, e usi quello


  • User Attivo

    mmm.. fose sto completamente sbagliando io.

    Ricapitolo un pò la situazione:

    1. ho delle immagini in una cartella chiamate "1_x_y.jpg", "2_b_z_d.jpg" eccetera (ho cambiato la posizione del numero per comodità nel fare l'explode)
    2. queste immagini devono essere ordinate in modo decrescente rispetto al numero presente nel nome dell'immagine.
    3. il sistema deve essere il più elastico possibile, nel senso che se volessi eliminare una foto vorrei poterlo fare senza dover modificare un eventuale codice (ma questo mi sembra ovvio dato che il php è fatto per questo :D)

    tutto qui... scusate, sono io che sto complicando il problema che in realtà è più semplice di quello che sembra

    Grazie mille!:)


  • ModSenior

    allora tu ha l'array cosi

    indice - valore
    0 - 1
    1 - 2
    2 - 3
    3 - 4
    4 - 5
    ecc

    togli l'immagine 3 e l'array diventa cosi:
    0 - 1
    1 - 2
    2 - 4
    3 - 5
    ecc

    se sei sull'immagine 4, che ha indice 2 è sufficiente prendere il valore dell'indice precedente, e ottieni l'immagine precedente...


  • User Attivo

    eh, ma al momento io per ordinare le foto utilizzo come indice il numero che c'è nella immagine... quindi nel caso io ne elimini una l'indice ha un buco...


  • ModSenior

    potresti controllare ke l'indice precendente sia settato, se p settato allora è quella l'immagine precendente, altrimenti scorri tutto l'array all'indietro alla ricerca del indice precedente... oltre questo non mi viene nulla in mente


  • User Attivo

    stavo pensando che forse potrei creare un array multidimensionale in cui:
    in un indice inserisco il normale indice 1 2 3 4 e via dicendo (creato dinamicamente così che di ricostruisca anche in caso elimini una foto).
    nell'altro indice inserisco il numero che metto nella immagine (uppure anche la data di creazione presa con filemtime).

    Il problema sarevbbe ordinare questo array 😮