• Consiglio Direttivo

    Ciao starsale

    credo che potresti implementare un semplicissimo codice di php all'apertura della home o dell'area annunci che cancelli tutti gli annunci più vecchi di 30 gg rispetto alla data odierna. (immagino che la data sia salvata nel formato aaaa-mm-dd sul db)

    ovvero:
    [php]$data=time(); // prendo il timestamp attuale
    $data=$data - 2592000; //sottraggo il numero di secondi equivalente a 30 gg
    $data=date('Y-m-d', $data); //formatto la data in aaaa-mm-dd

    $sql="DELETE FROM annunci WHERE data_pubblicazione <= '$data'"; // cancello dalla tabella tutti gli annunci più vecchi o uguali a $data
    $query=mysql_query($sql) or die (mysql_error());[/php]ed il gioco è fatto 😉
    facci sapere se risolvi
    :ciauz:

    EDIT: per far vedere la data di scadenza basta aggiungere i 30 gg alla data pubblicazione annuncio ovviamente 😉


  • User Attivo

    Proprio adesso ho scaricato la e-mail ed ho visto la tua risposta. Adesso non posso ma tra qualche ora ti dico come fare per ignorare o cancellare il messaggio i giorni desiderati.
    Ci sentiamo dopo.
    Ciao


  • User Attivo

    Adesso ti posto uno script creato al momento per riconoscere la differenza di giorni che intercorrono tra la data scritta nel DATABASE e la data attuale.

    list($anno, $mese, $giorno) = explode("-",$variabile_DB); // $variabile_DB E' LA VARIABILE DATA SCRITTA NEL DATABASE
    // calcolo la differenza tra il timestamp della data definita e la data attuale
    // il risultato dovrò dividerlo per 86400 (il numero di secondi in un giorno)
    // MI RICAVO IL NUMERO DI GIORNI CHE INTERCORRONO DALLA DATA DEL DATABASE E LA DATA DI OGGI
    $differenza_esa=(strtotime("$anno/$mese/$giorno") - strtotime(date("Y/m/d")))/(86400);
    $differenza = number_format($differenza_esa, 0, ",", "."); // QUI HO IL NUMERO DI GIORNO FORMATTATO (ANCHE SE E' LA STESSA COSA)
    // qui stampo giorni o giorno a seconda se la differenza è composta da 1 (uno) o più giorni
    // funziona anche con i numeri negativi
    $pluraleosingolare = ((ceil(abs($differenza_esa)>1)) or ceil($differenza_esa)==0)?"giorni":"giorno";
    // CONTROLLO I NUMERI DI GIORNI TRASCORSI
    if ($differenza > 30)
    {
    // IL CODICE PER CANCELLARE O MEGLIO (SECONDO ME) FARE UN UPLOAD DELLA TABELLA DEL SOLO CAMPO (MANCANTE) CHE CHIAMERO'
    // "valore" INT(1), (NOME CAMPO: valore | TIPO: INT(1)) CHE PER DEFAULT E' 0 (ZERO) QUINDI VALIDO CON L'UPLOAD AL CAMPO
    // GLI DAREMO IL VALORE DI 1 (UNO). QUINDI NELLA VISUALIZZAZIONE DEGLI ANNUNCI LA CLAUSULA
    // SELECT * FROM tabella WHERE valore='0'
    $UP = "UPDATE tabella SET valore='1' WHERE id='$id'"; // LA VARIABILE $id SAREBBE L'ID AUTOINCREMENT DELLA TABELLA DEGLI ANNUNCI
    mysql_query($UP,$conn); // $conn E' LA VARIABILE DI CONNESSIONE AL DATABASE CHE DI SOLITO SI METTE NEL FILE config.php
    }


  • User

    @mikslap said:

    Adesso ti posto uno script creato al momento per riconoscere la differenza di giorni che intercorrono tra la data scritta nel DATABASE e la data attuale.

    list($anno, $mese, $giorno) = explode("-",$variabile_DB); // $variabile_DB E' LA VARIABILE DATA SCRITTA NEL DATABASE
    // calcolo la differenza tra il timestamp della data definita e la data attuale
    // il risultato dovrò dividerlo per 86400 (il numero di secondi in un giorno)
    // MI RICAVO IL NUMERO DI GIORNI CHE INTERCORRONO DALLA DATA DEL DATABASE E LA DATA DI OGGI
    $differenza_esa=(strtotime("$anno/$mese/$giorno") - strtotime(date("Y/m/d")))/(86400);
    $differenza = number_format($differenza_esa, 0, ",", "."); // QUI HO IL NUMERO DI GIORNO FORMATTATO (ANCHE SE E' LA STESSA COSA)
    // qui stampo giorni o giorno a seconda se la differenza è composta da 1 (uno) o più giorni
    // funziona anche con i numeri negativi
    $pluraleosingolare = ((ceil(abs($differenza_esa)>1)) or ceil($differenza_esa)==0)?"giorni":"giorno";
    // CONTROLLO I NUMERI DI GIORNI TRASCORSI
    if ($differenza > 30)
    {
    // IL CODICE PER CANCELLARE O MEGLIO (SECONDO ME) FARE UN UPLOAD DELLA TABELLA DEL SOLO CAMPO (MANCANTE) CHE CHIAMERO'
    // "valore" INT(1), (NOME CAMPO: valore | TIPO: INT(1)) CHE PER DEFAULT E' 0 (ZERO) QUINDI VALIDO CON L'UPLOAD AL CAMPO
    // GLI DAREMO IL VALORE DI 1 (UNO). QUINDI NELLA VISUALIZZAZIONE DEGLI ANNUNCI LA CLAUSULA
    // SELECT * FROM tabella WHERE valore='0'
    $UP = "UPDATE tabella SET valore='1' WHERE id='$id'"; // LA VARIABILE $id SAREBBE L'ID AUTOINCREMENT DELLA TABELLA DEGLI ANNUNCI
    mysql_query($UP,$conn); // $conn E' LA VARIABILE DI CONNESSIONE AL DATABASE CHE DI SOLITO SI METTE NEL FILE config.php
    }

    Ciao mikslap,
    ho inserito il codice che mi hai gentilmente postato sul file invia esattamente questo:
    list($anno, $mese, $giorno) = explode("-",$variabile_DB); // $variabile_DB E' LA VARIABILE DATA SCRITTA NEL DATABASE
    // calcolo la differenza tra il timestamp della data definita e la data attuale
    // il risultato dovrò dividerlo per 86400 (il numero di secondi in un giorno)
    // MI RICAVO IL NUMERO DI GIORNI CHE INTERCORRONO DALLA DATA DEL DATABASE E LA DATA DI OGGI
    $differenza_esa=(strtotime("$anno/$mese/$giorno") - strtotime(date("Y/m/d")))/(86400);
    $differenza = number_format($differenza_esa, 0, ",", "."); // QUI HO IL NUMERO DI GIORNO FORMATTATO (ANCHE SE E' LA STESSA COSA)
    // qui stampo giorni o giorno a seconda se la differenza è composta da 1 (uno) o più giorni
    // funziona anche con i numeri negativi
    $pluraleosingolare = ((ceil(abs($differenza_esa)>1)) or ceil($differenza_esa)==0)?"giorni":"giorno";
    // CONTROLLO I NUMERI DI GIORNI TRASCORSI
    if ($differenza > 30)

    e la restante parte nel file prodotto cioè:

    {
    // IL CODICE PER CANCELLARE O MEGLIO (SECONDO ME) FARE UN UPLOAD DELLA TABELLA DEL SOLO CAMPO (MANCANTE) CHE CHIAMERO'
    // "valore" INT(1), (NOME CAMPO: valore | TIPO: INT(1)) CHE PER DEFAULT E' 0 (ZERO) QUINDI VALIDO CON L'UPLOAD AL CAMPO
    // GLI DAREMO IL VALORE DI 1 (UNO). QUINDI NELLA VISUALIZZAZIONE DEGLI ANNUNCI LA CLAUSULA
    // SELECT * FROM tabella WHERE valore='0'
    $UP = "UPDATE tabella SET valore='1' WHERE id='$id'"; // LA VARIABILE $id SAREBBE L'ID AUTOINCREMENT DELLA TABELLA DEGLI ANNUNCI
    mysql_query($UP,$conn); // $conn E' LA VARIABILE DI CONNESSIONE AL DATABASE CHE DI SOLITO SI METTE NEL FILE config.php

    Cambiando $conn con la mia connessione al db

    Però non funge😢


  • User

    @StartSale said:

    Ciao mikslap,
    ho inserito il codice che mi hai gentilmente postato sul file invia esattamente questo:
    list($anno, $mese, $giorno) = explode("-",$variabile_DB); // $variabile_DB E' LA VARIABILE DATA SCRITTA NEL DATABASE
    // calcolo la differenza tra il timestamp della data definita e la data attuale
    // il risultato dovrò dividerlo per 86400 (il numero di secondi in un giorno)
    // MI RICAVO IL NUMERO DI GIORNI CHE INTERCORRONO DALLA DATA DEL DATABASE E LA DATA DI OGGI
    $differenza_esa=(strtotime("$anno/$mese/$giorno") - strtotime(date("Y/m/d")))/(86400);
    $differenza = number_format($differenza_esa, 0, ",", "."); // QUI HO IL NUMERO DI GIORNO FORMATTATO (ANCHE SE E' LA STESSA COSA)
    // qui stampo giorni o giorno a seconda se la differenza è composta da 1 (uno) o più giorni
    // funziona anche con i numeri negativi
    $pluraleosingolare = ((ceil(abs($differenza_esa)>1)) or ceil($differenza_esa)==0)?"giorni":"giorno";
    // CONTROLLO I NUMERI DI GIORNI TRASCORSI
    if ($differenza > 30)

    e la restante parte nel file prodotto cioè:

    {
    // IL CODICE PER CANCELLARE O MEGLIO (SECONDO ME) FARE UN UPLOAD DELLA TABELLA DEL SOLO CAMPO (MANCANTE) CHE CHIAMERO'
    // "valore" INT(1), (NOME CAMPO: valore | TIPO: INT(1)) CHE PER DEFAULT E' 0 (ZERO) QUINDI VALIDO CON L'UPLOAD AL CAMPO
    // GLI DAREMO IL VALORE DI 1 (UNO). QUINDI NELLA VISUALIZZAZIONE DEGLI ANNUNCI LA CLAUSULA
    // SELECT * FROM tabella WHERE valore='0'
    $UP = "UPDATE tabella SET valore='1' WHERE id='$id'"; // LA VARIABILE $id SAREBBE L'ID AUTOINCREMENT DELLA TABELLA DEGLI ANNUNCI
    mysql_query($UP,$conn); // $conn E' LA VARIABILE DI CONNESSIONE AL DATABASE CHE DI SOLITO SI METTE NEL FILE config.php

    Cambiando $conn con la mia connessione al db

    Però non funge😢

    Scusami to ho risposto troppo in fretta...
    Stò ancora provando...:?


  • User

    :)@StartSale said:

    Scusami to ho risposto troppo in fretta...
    Stò ancora provando...:?

    Non mi funziona , mi stampa sempre 0 giorni.
    Forse dipende dal fatto che nella tabella prodotti il fomata data deve essere cambiato!!
    Oppure ho sbagliato inserendo nel file invia :
    list($anno, $mese, $giorno) = explode("-",$data);
    $differenza_esa=(strtotime("$anno/$mese/$giorno") - strtotime(date("Y/m/d")))/(86400);
    $differenza = number_format($differenza_esa, 0, ",", ".");
    $pluraleosingolare = ((ceil(abs($differenza_esa)>1)) or ceil($differenza_esa)==0)?"giorni":"giorno";
    if ($differenza > 30)
    {
    $UP = "UPDATE prodotti SET valore='1' WHERE id='$id'";
    }

    e nel file prodotti (visualizzazione annunci):

    list($anno, $mese, $giorno) = explode("-",$data); // $variabile_DB E' LA VARIABILE DATA SCRITTA NEL DATABASE
    // calcolo la differenza tra il timestamp della data definita e la data attuale
    // il risultato dovrò dividerlo per 86400 (il numero di secondi in un giorno)
    // MI RICAVO IL NUMERO DI GIORNI CHE INTERCORRONO DALLA DATA DEL DATABASE E LA DATA DI OGGI
    $differenza_esa=(strtotime("$anno/$mese/$giorno") - strtotime(date("Y/m/d")))/(86400);
    $differenza = number_format($differenza_esa, 0, ",", "."); // QUI HO IL NUMERO DI GIORNO FORMATTATO (ANCHE SE E' LA STESSA COSA)
    // qui stampo giorni o giorno a seconda se la differenza è composta da 1 (uno) o più giorni
    // funziona anche con i numeri negativi
    $pluraleosingolare = ((ceil(abs($differenza_esa)>1)) or ceil($differenza_esa)==0)?"giorni":"giorno";
    // CONTROLLO I NUMERI DI GIORNI TRASCORSI
    if ($differenza > 30)
    $query = "SELECT * FROM prodotti WHERE valore='0'";
    $UP = "UPDATE prodotti SET valore='1' WHERE id='$id'";
    mysql_query($UP,$db_conn);

    Non mi sto raccapezzando più.
    Ti prego l'ultimo sforzo 🙂


  • User

    @Samyorn said:

    Ciao starsale

    credo che potresti implementare un semplicissimo codice di php all'apertura della home o dell'area annunci che cancelli tutti gli annunci più vecchi di 30 gg rispetto alla data odierna. (immagino che la data sia salvata nel formato aaaa-mm-dd sul db)

    ovvero:
    [php]$data=time(); // prendo il timestamp attuale
    $data=$data - 2592000; //sottraggo il numero di secondi equivalente a 30 gg
    $data=date('Y-m-d', $data); //formatto la data in aaaa-mm-dd

    $sql="DELETE FROM annunci WHERE data_pubblicazione <= '$data'"; // cancello dalla tabella tutti gli annunci più vecchi o uguali a $data
    $query=mysql_query($sql) or die (mysql_error());[/php]ed il gioco è fatto 😉
    facci sapere se risolvi
    :ciauz:

    EDIT: per far vedere la data di scadenza basta aggiungere i 30 gg alla data pubblicazione annuncio ovviamente 😉

    Finalmente!!!
    funziona perfettamente..
    L'ultima domanda...per aggiungere i 30 gg alla data di pubblicazione??
    ,NOW()'+ 30 day',:?


  • Consiglio Direttivo

    L'inverso di questo:
    [php]$data=$data - 2592000; //sottraggo il numero di secondi equivalente a 30 gg[/php]ovvero:
    [php]// $data in questo caso sarà il valore della data pubblicazione annuncio che ti prelevi dal Db, in formato timestamp
    $data_scadenza=$data + 2592000; //aggiungi il numero di secondi equivalente a 30 gg[/php]:ciauz:


  • User

    @Samyorn said:

    L'inverso di questo:
    [php]$data=$data - 2592000; //sottraggo il numero di secondi equivalente a 30 gg[/php]ovvero:
    [php]// $data in questo caso sarà il valore della data pubblicazione annuncio che ti prelevi dal Db, in formato timestamp
    $data_scadenza=$data + 2592000; //aggiungi il numero di secondi equivalente a 30 gg[/php]:ciauz:

    Grazie mille ,
    ma....mi restituisce tutto in secondi...
    L'ultima stringa per stampare la data + i famosi 30gg
    Scusami ma è da una settimana che provo..
    Non ne vengo a capo:smile5:


  • Consiglio Direttivo

    Come da post precedente poi ti trasformi il timestamp in formato data...
    [php]$data=date('Y-m-d', $data); //formatto la data in aaaa-mm-dd[/php]
    😉