Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Leggere una immagine per data

    Ciao ragazzi.
    Ho bisogno di leggere una immagine che si trova in una cartella con la data tipo 071206. Nella cartella principale ci sono molte cartelle tipo 051206 o 141206 etc...

    Io dovrei prendere sempre la cartella con la data più recente e leggere il contenuto delle immagini la dentro...come posso fare?

    Mi è venuto in mente di recuperare la data corrente così:
    Codice PHP:
    <?php
    $data
    =date("dmY");
    ?>
    Apparte il fatto che poi mi restituisce 07122006 mentre io volevo solo 071206, non ho trovato un sistema per leggere sempre la data più recente....come posso fare?

    Aspetto risposte, grazie, Fabio.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Secondo me se chiamassi le cartelle nel formato AAMMGG ti sarebbe molto più facile sfruttare le funzioni di ordinamento degli array e ricavare quella più recente. Con le date nel formato che hai tu non saprei.


    edit. In pratica dovresti giocare con substr per scomporre la data in giorno,mese,anno, riassemblarla nel formato che ti suggerivo e ordinarla su quella. Con array_shift o array_pop a seconda dell'ordinamento ricavi la più recente e reinverti la data per accedere alla cartella. Insomma, fai prima a cambiare il formato delle cartelle.

  3. #3
    Ah ok...Puoi spiegaermi solo un po come ordinare gli array?

    Grazie 1000!

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da gta3!
    Ah ok...Puoi spiegaermi solo un po come ordinare gli array?

    Grazie 1000!
    Codice PHP:
    // Le tue cartelle col formato che hai scelto :-(
    $array = array('061206','071206','081206','101005','201206');

    $cart = array();
    // Ciclo l'array e ne creo uno con le date nel formato AAMMGG
    foreach($array as $cartella) {
    $cart[] = substr($cartella,4,2).substr($cartella,2,2).substr($cartella,0,2);
    }

    rsort($cart); // Lo ordino in senso decrescente
    echo '<pre>';
    print_r($cart);

    $ultima array_shift($cart); // Estraggo l'elemento in testa (quello più recente)
    echo $ultima;
    echo 
    '
    '
    ;
    // Riconverto la data nel formato di originale
    $formato_originale substr($ultima,4,2).substr($ultima,2,2).substr($ultima,0,2);
    echo 
    $formato_originale// questa è la tua cartella più recente 

  5. #5
    Mi sono spiegato male mi sa...scusa

    Allora, io ho in una cartella chiamata ad esempio foto, tante sotto cartelle chiamate appunto per data come 031206 oppure 131206 e così via. All'interno di queste, ci sono delle foto. Queste cartelle sono il conteggio di ogni settimana, cioè ogni settimana deve cambiare la cartella e prendere le foto in essa contenute.

    Mettiamo il caso della data di oggi: 071206.
    Non essendo una domenica, dovrei far capire a php, di leggere le foto contenute nella prima domenica che viene, cioè il 101206...

    Ma non ci riesco ancora

    Come posso fare?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da gta3!
    Mettiamo il caso della data di oggi: 071206.
    Non essendo una domenica, dovrei far capire a php, di leggere le foto contenute nella prima domenica che viene, cioè il 101206...
    All'inizio parlavi di cartella con la data più recente.

    Ok, oggi è 071206, tu vuoi leggere dalla cartella 101206. Questa è la cartella con la data maggiore oppure ci possono già essere cartelle "future" con data maggiore di 101206 e tu vuoi sempre estrarre da quella più prossima?

  7. #7
    Potrebbe esserci cartelle future con un data maggiore ad esempio 171206...

    Però essendo il 071206, la data prim domenica è 101206 e quindi il 171206 non srvirebbe fino al'111206 che carica il 171206...

    Scusa il giro di parole, ma non riesco a spiegarmi molto bene

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non l'ho testata molto ma mi sembra vada bene. Volendo ne puoi fare un'unica funzione. Te la posto così sperando che ti sia comprensibile.

    Codice PHP:
    <?php
    $cartelle 
    = array();
    if (
    $handle opendir('./foto/')) { // apro la cartella foto
       
    while (false !== ($file readdir($handle))) {
            if (
    $file != "." && $file != ".." && preg_match("#^\\d{6}$#",$file) ) {
               
    $cartelle[] = strtotime('20'.substr($file,4,2).'-'.substr($file,2,2).'-'.substr($file,0,2));
               
    // salvo nell'array cartelle tutte le cartelle in formato timestamp
            
    }
       }
       
    closedir($handle);


    function 
    prossima($array){
    $prossimi = array();
    foreach(
    $array as $cartella) {
        
    // scorro l'array. Se il timestamp è maggiore di 0 vuol dire che la data è già passata
        // se è negativo vuol dire che sono date future ed estraggo la minore (la più prossima)
        
    if ( strtotime('now') - $cartella 0)
        
    $prossimi[] = $cartella;
        }
        return 
    min($prossimi);
    }

    $prossima date('dmY',prossima($cartelle));
    // Ritrasformo la data nel formato originale delle cartelle
    $prossima substr($prossima,0,2).substr($prossima,2,2).substr($prossima,-2);
    //echo $prossima;

    // Apro la sottocartella che mi interessa
    if ($handle opendir("./foto/$prossima/")) {
       while (
    false !== ($file readdir($handle))) {
           if (
    $file != "." && $file != ".." ) {
            echo 
    "<img src=\"foto/$prossima/$file\" alt=\"$file\" />";
           }
       }
       
    closedir($handle);

    ?>

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.