- Home
- Categorie
- Coding e Sistemistica
- PHP
- Codice per scadenza annuncio
-
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
EDIT: per far vedere la data di scadenza basta aggiungere i 30 gg alla data pubblicazione annuncio ovviamente
-
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
-
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
}
-
@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.phpCambiando $conn con la mia connessione al db
Però non funge
-
@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.phpCambiando $conn con la mia connessione al db
Però non funge
Scusami to ho risposto troppo in fretta...
Stò ancora provando...:?
-
:)@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
-
@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
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',:?
-
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]
-
@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]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
-
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]