Visualizzazione dei risultati da 1 a 4 su 4

Discussione: notifica aggiornamento

  1. #1

    notifica aggiornamento

    Ciao, vi illustro subito il problema... allora io ho una cartella nella quale carico via ftp dei pdf, volevo sapere se era possibile e se si come stampare una notifica sulla home quando vengono caricati file nuovi

    es:

    mio sito:
    -cartella:
    -pdf1
    -pdf2
    -pdf3

    sulla home la scritta

    sono disponibile 3 nuovi file nella cartella etc...

  2. #2
    Dovresti segnarti nel database la data dell'ultimo aggiornamento ed il numero di file aggiornati, poi, in modo casuale, utilizzando una probabilità di uscita elevata, all'accesso all'homepage, ti cicli i file presenti nella directory e verifichi quali hanno la data di modifica successiva a quella che hai salvato nel database salvandoti alla fine il nuovo conteggio conteggio e la nuova data di aggiornamento. Quando ovviamente non scatta la procedura visualizzi direttamente i dati presenti nel database

    Inoltre sarebbe utile farlo ad hoc per utente, altrimenti non si capirebbe se io che accedo ho già visto quei file nuovi o meno ... in un cookie nel database (se non lo hai già) salvi l'ultima visita e quindi devi stampare l'elenco dei nuovi file semplicemente prendi quella data, fai una query per estrarre tutti i conteggi successivi a quella data sommandoli e gli dici "sono presenti XYZ nuovi file"

  3. #3
    detta cosi sembra quasi facile... ma ion codici mi sa che è un tantino piu complicato non ce mica un codice che in tabella visualizzi per esempio la data dell'ultima moidfica e faccia la tabella in ordine di data

  4. #4
    ma è facile

    STEP 1: La tabella
    ---

    Direi che la tabella potrebbe, semplicemente, contenere 2 campi ove il primo è la data/orario, in formato unixtime, ed il secondo è il conteggio dei nuovi file rispetto alla data precedente

    Quindi qualcosa tipo
    Codice PHP:
    CREATE TABLE newfiles (
        `
    newfiles_datetimeINT(10UNSIGNED NOT NULL,
        `
    newfiles_countSMALLINT(5UNSIGNED NOT NULL DEFAULT '0',
        
    PRIMARY KEY (`newfiles_datetime`)


    STEP 2: Quando effettuare il controllo?
    ---

    Ad esempio se vogliamo che almeno il 30% degli accessi alla homepage causino la ricerca, si può usare un codificillo del genere:
    Codice PHP:
    mt_srand(microtime());
    if (
    mt_rand(0100) > 70)
    {
    // codice di aggiornamento del database


    STEP 3: Operazione di ricerca
    ---
    La prima cosa che deve fare il codice di ricerca è acquisire la data più alta, quindi
    Codice PHP:
    $query mysql_query('SELECT MAX(newfiles_datetime) FROM newfiles');
    list(
    $newfiles_datetime_max) = mysql_fetch_row($query);
    mysql_free_result($query); 
    una volta acquisita la data più alta, accediamo alla cartella contenente i file uploadati tramite ftp, quindi facciamo

    Codice PHP:
    $ftpPath 'ftp/';
    $newfiles_datetime 0;
    $newfiles_count 0;
    foreach(
    $file in glob($ftpPath '*'GLOB_NOSORT))
    {
      if ((
    $filemodificationtime filemtime($ftpPath $file)) > $newfiles_datetime_max)
      {
        
    // Aggiorna il contatore
        
    $newfiles_count++;
        
        
    // Abbiamo bisogno della data più grande tra quelle dei file modificati
        
    if ($file_modification_datetime $newfiles_datetime)
        {
          
    $newfiles_datetime $file_modification_datetime;
        }
      }

    una volta acquisito il nuovo conteggio nel database si va a scrivere il record

    Codice PHP:
    if ($newfiles_count 0)
    {
      
    mysql_query('INSERT INTO newfiles VALUES(' $newfiles_datetime ', ' $newfiles_count ')');

    Lo STEP 3 va dentro l'if precedente.


    STEP 4: L'utente ha già avuto accesso? Se si acquisiamo i dati
    ---

    E' inutile, far vedere all'utente, che ci sono nuovi N file se non ha mai avuto accesso, quindi
    Codice PHP:
    $newfiles_count 0;
    if (isset(
    $_COOKIE['newfiles_lastaccess']) === true && is_numeric($_COOKIE['newfiles_lastaccess']) === true)
    {
      
    $query mysql_query('SELECT SUM(newfiles_count) FROM newfiles WHERE newfiles_datetime >= ' . ((int)$_COOKIE['newfiles_lastaccess']));
      list(
    $newfiles_count) = mysql_fetch_row($query);
      
    mysql_free_result($query);

    Il codice parla da sé! In questo modo, per verificare se devi visualizzare o meno l'avviso di nuovi file presenti fai

    Codice PHP:
    if ($newfiles_count 0)
    {
    // codice per visualizzare l'avviso

    come hai potuto vedere sono poche righe di codice in fin dei conti, poco più di 20 righe

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.