Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    126

    App laravel 8 - creare contatore giornaliero dinamico

    Ciao a tutti,

    Sto sviluppando un gestionale con Laravel 8, ed ho bisogno di generare file che devono avere una specifica nomenclatura, seguita dal contatore di giornata così come nel titolo.
    In pratica i file hanno la struttura
    codice:
    $nomeFile = 'nome_del_file'.$variabile1.'_'.$contatore;
    $variabile1 è presa dal DB mentre $contatore deve essere dinamico poiché deve incrementare di 1 ogni volta che genero un file, e ogni nuovo giorno resettarsi e ripartire da 0.

    Esiste un modo per fare ciò in PHP?

    Per ora avevo pensato di definire una variabile $contatore definita come array chiave valore, dove la chiave è una data.
    Se la chiave è diversa dalla data odierna quindi resettarlo a 0, impostare la chiave alla data del nuovo giorno.

    Codice PHP:
     private $contatore = [ '2000-01-01' => 0]; 
    dopodiché definire una funzione checkContatore()

    Codice PHP:
    private checkContatore(){

         if(
    array_keys($this->contatore) != date("Y-m-d")){
               
    // qui resetto il contatore
         
    }


  2. #2
    Partendo dal giorno "zero", vai a cercare file con data "oggi" (es: 2021109_ef_0.txt per oggi, 9 ottobre 2021, con l'indice dal db che vale "ef"). Se non esiste, allora sei all'inizio della creazione, se esiste cerchi il "maggiore" e prosegui con l'ultimo indice giornaliero trovato.
    Se fai come dici tu, devi tenere traccia (sul db per esempio) dell'ultimo id/contatore altrimenti a ogni giro dello script ti si resetta il contatore che varrà sempre 0...

    Un modo per farlo con php quindi è creare il nome "zero" da mettere in una variabile, es: $today_first_file = "20211009_ef_0.txt"
    Ovviamente la data la crei dinamicamente con date("Ymd").
    A questo punto verifichi con file_exists se esiste. Se esiste, significa che hai già creato un file per "oggi", quindi dovrai cercare il più "alto" contatore (o dal db o da un file di testo "contatore.txt" per esempio).

    Volendo evitare di scrivere un file per il contatore o usare una tabella del db, puoi anche usare le funzioni di scan delle directory, ovvero scandir, a cui passerai il nome della directory e l'ordinamento (siccome cerchi "il più alto", ti conviene fare il reverse, cioè SCANDIR_SORT_DESCENDING, così il primo valore dell'array, cioè l'indice 0, sarà alfabeticamente il più "alto").

    A questo punto hai tutto ciò che ti serve

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    126
    Quote Originariamente inviata da Dascos Visualizza il messaggio
    Partendo dal giorno "zero", vai a cercare file con data "oggi" (es: 2021109_ef_0.txt per oggi, 9 ottobre 2021, con l'indice dal db che vale "ef"). Se non esiste, allora sei all'inizio della creazione, se esiste cerchi il "maggiore" e prosegui con l'ultimo indice giornaliero trovato.
    Se fai come dici tu, devi tenere traccia (sul db per esempio) dell'ultimo id/contatore altrimenti a ogni giro dello script ti si resetta il contatore che varrà sempre 0...

    Un modo per farlo con php quindi è creare il nome "zero" da mettere in una variabile, es: $today_first_file = "20211009_ef_0.txt"
    Ovviamente la data la crei dinamicamente con date("Ymd").
    A questo punto verifichi con file_exists se esiste. Se esiste, significa che hai già creato un file per "oggi", quindi dovrai cercare il più "alto" contatore (o dal db o da un file di testo "contatore.txt" per esempio).

    Volendo evitare di scrivere un file per il contatore o usare una tabella del db, puoi anche usare le funzioni di scan delle directory, ovvero scandir, a cui passerai il nome della directory e l'ordinamento (siccome cerchi "il più alto", ti conviene fare il reverse, cioè SCANDIR_SORT_DESCENDING, così il primo valore dell'array, cioè l'indice 0, sarà alfabeticamente il più "alto").

    A questo punto hai tutto ciò che ti serve
    Grazie per la risposta così esaustiva...procederò con l'implementazione seguendo il consiglio con scan_dir ...infatti avevo pensato anche di usare una tabella su db, ma volevo evitarlo nel caso fosse stato possibile

  4. #4
    Quote Originariamente inviata da EziT90 Visualizza il messaggio
    Grazie per la risposta così esaustiva...procederò con l'implementazione seguendo il consiglio con scan_dir ...infatti avevo pensato anche di usare una tabella su db, ma volevo evitarlo nel caso fosse stato possibile
    L'uso della tabella su DB può essere utile come inutile, dipende dall'uso che dovrai fare di queste informazioni...
    Se i file che crei dovrai anche successivamente "manipolarli" (chessò, cercarli, oppure vederne il contenuto, oppure zipparli e inviarli via mail ecc ecc) alora l'uso di una tabella nel db è quasi indispensabile.
    Se devi solo crearli e l'uso di questi file "muore lì", allora non serve. Per questo ti ho fornito entrambe le strade :-D

Tag per questa discussione

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 © 2021 vBulletin Solutions, Inc. All rights reserved.