- Home
- Categorie
- Coding e Sistemistica
- PHP
- Codice per scadenza annuncio
-
@StartSale said:
In allegato c'è la tabella prodotti
Buogiorno Jeeves,
ho postato la tabella prodotti.
Forse non va bene?:(
-
Mazza che tabella, quanto occupa?
Comunque il fatto è che ti consiglio di usare mysql_fetch_assoc() che fa un'array con $car['nomecampo'] e non $var[0, 1, 2...]
-
Comunque non ho sentito parlare di mktime. Per il controllo della data secondo me è il massimo
-
@mikslap said:
Comunque non ho sentito parlare di mktime. Per il controllo della data secondo me è il massimo
Ciao
non ho capito bene, non hai mai sentito parlare di mktime, ma per il controllo della data è il massimo?
Che significa!
Scusami mi sembra un controsenso..:?
-
Ho detto che non ho visto nei messaggi precedenti un chiaro riferimento ad MKTIME di php
-
@mikslap said:
Ho detto che non ho visto nei messaggi precedenti un chiaro riferimento ad MKTIME di php
Ciao Mikslap,
sono un neofita sul php e mysql, dopo 6 mesi ho messo su un sito web di annunci per auto , pian pianino vado sistemadolo aggingendo nuove funzionalità.
Ora il mio problema è legato alla scadenza dell'annuncio .
Ho fatto più di una ricerca sui vari motori e forum ma non ho trovato un chiaro riferimento, sulla funzione da integrare, al momento dell'inserimento dell'annuncio.
Cioè desideravo una funzione tipo che dicesse alla Sql : questa è la data di inserimento aggiungi 30 gg, fai un conto alla rovescia e alla fine elimina l'annuncio.
Più o meno cerco un qualcosa di simile, l'importante è che dopo l'inserimento dell'annuncio l'utente sappia che tra 30 giorni scade dunque sarà eleminato.
Spero in un aiutino da parte di chi ha già fatto un qualcosa di simile.
Grazie anticipatamente
-
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]