[PHP] Eliminare record automaticamente dopo una certa data

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Salve a tutti, ho un database con alcuni record nei quali registro la data di creazione. Volevo sapere se esiste un modo, senza alcuna azione da parte dell'utente,per eliminare automaticamente un record trascorsi tot giorni. Grazie mille.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
dal "task scheduler" del sistema operativo
puoi eseguire periodicamente un job che ti esegua la query direttamente,
oppure uno script php o simili, se hai bisogno di generare parametri complessi per la query

se poi il db che usi te lo permette, puoi schedulare l'attività eseguendo periodicamente una "stored procedure"

insomma, con un po' di fantasia si può trovare quello che serve,
ma senza conoscere il sistema operativo, il db che usi, la complessità della query, la risposta è solo generica, rispecchiando la domanda
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Ciao Marino51, grazie per il suggerimento. Provo ad essere più preciso: Ho un sito in PHP che permette l'inserimento di alcuni dati in un database MySQL. Tra questi dati viene registrata anche la data di sistema. Vorrei creare una quary che confronti questa data con quella attuale, e se quest'ultima è successiva a tot giorni (e al verificarsi di un altra condizione, es se un campo della quary ha un certo valore, quindi nella quary ci sarà anche un AND), deve cancellare il record. Questo però deve avvenire (se possibile) senza alcuna azione da parte dell'utente, quindi la quary dovrebbe avviarsi automaticamente. Per il momento volevo sapere se è una cosa fattibile con PHP/MySQL oppure no. Grazie ancora!
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
come detto, tutto dipende da quali oggetti sono in uso,

mysql è in grado di gestire la query con "event-scheduler", ma dipende dalla versione
http://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html
http://stackoverflow.com/questions/13872598/autorunning-query-in-mysql

se il sistema operativo è windows, è possibile pianificare uno script php con la query, per esempio guarda qui
https://technet.microsoft.com/en-us/library/cc721931(v=ws.11).aspx

se il sistema operativo è linux, "cron" consente di pianificare lo script

dovresti avere informazioni sufficienti o serve altro ?
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Grazie per i suggerimenti. Sono andato sul pannello del PhpMyAdmin dove gestisco i database e ho visto che effettivamente c'è la voce 'eventi'. Quindi ne ho creato un evento per fare una prova:

Codice:
DROP EVENT `my_old_data_cleaner_event`; CREATEDEFINER = `root`@`localhost` EVENT `my_old_data_cleaner_event` ON SCHEDULE EVERY 10 DAY_HOUR STARTS '2016-06-29 01:07:54' ON COMPLETION NOT PRESERVE ENABLE DO DELETE FROM prestazioni WHERE code='001'

In questo modo dovrebbe cancellare il record con 'code' = 001 alle 10, ma non funziona. Sai se ho sbagliato qualcosa?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Codice:
CREATE
DEFINER = `root`@`localhost`
EVENT `my_old_data_cleaner_event`
ON SCHEDULE EVERY 10 DAY_HOUR STARTS '2016-06-29 01:07:54'
ON COMPLETION NOT PRESERVE ENABLE
DO DELETE FROM prestazioni WHERE code='001'

hai scritto "CREATEDEFINER"
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
E' il copia-incolla che mi ha attaccato le parole. Diciamo che ho usato l'area per creare gli eventi e a fine processo mi ha restituito quel codice. Ora ho provato inserendo direttamente il codice sql sperando di risolvere. Una domanda, il problema potrebbe essere l'uso delle virgolette diverse tra `root`@`localhost` e '2016-06-29 01:07:54'?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
l' apice singolo è usato per delimitare valori testo, date-time (caso specifico) , non per valori numerici
l' apice "storto" (scusa non so come chiamarlo propriamente) si usa per i nomi delle tabelle, delle colonne, ovvero per tutti gli elementi che identificano un oggetto, non per i valori, MA, quando nel nome è contenuto uno spazio altrimenti sono inutili e dannosi (per la probabilità d'errore)
assegnare nomi, con spazi, ad oggetti è comunque deleterio ( a meno che non ci si voglia fare del male )
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Sinceramente non mi intendo di sql, chiedevo per capire se poteva essere quella la causa. Comunque mi crea l'evento, ma non elimina il record. Ti faccio la schermata del form per creare l'evento magari c'è qualcosa che sbaglio lì..
event.jpg

event2.jpg
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Ho risolto. Dovevo semplicemente attivare lo stato degli eventi che di defoult è disattivato. Grazie mille per i suggerimenti e l'aiuto Marino, l'ultimo link è stato utilissimo.
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Scusate se riapro la conversazione, volevo sapere se posso fare un unico evento per più tabelle di database. Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non posso fare prove, ma credo di si,
(con riferimento allo screenshot che hai postato) al termine della delete metti un ";"
e fai seguire un nuovo comando sql
 
Discussioni simili
Autore Titolo Forum Risposte Data
F eliminare un record grazie a PHP PHP 11
S [PHP] Eliminare doppioni array e rinumerare le posizioni PHP 2
maxnegri Eliminare url index.php con variabili e reindirizzare alla home del sito PHP 7
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
C [PHP] eliminare elemento da un array multidimensionale PHP 9
trattorino [PHP] Eliminare piu frasi PHP 1
C [PHP] RISOLTO - Eliminare elementi duplicati da array multidimensionale PHP 1
Monital [PHP] Eliminare la Barra di caricamento file alla fine dell'esecuzione PHP 11
S Eliminare immagine tramite php PHP 14
S non riesco ad eliminare dei caratteri in PHP - Excel PHP 10
F eliminare post php / mysql PHP 5
V Eliminare dati da db mysql con php PHP 14
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3

Discussioni simili