Comando mysql

marcomg

Utente Attivo
19 Nov 2011
204
0
16
Che comando posso lanciare tramite mysql in modo che vengono cancellate tutte le righe di una determinata tabella a condizione che il valore numerico sia minore di un tot?

Es:
tabella:"lil_urls"
idurldate
0www.ciao.it2012-01-28 10:02:48
L'ultima colonna è un timestamp.
Come faccio a cancellare tutte le righe che hanno un timestamp minore di uno che genero tramite php?

Per adesso ho scritto:
PHP:
<?php
// Script per eliminare tutto dal database
$indirizzo_del_server = '';
$nome_utente_mysql    = '';
$password_mysql       = '';
$nome_database_mysql  = '';



//Mi connetto al MySql Server
$myconn = mysql_connect($indirizzo_del_server, $nome_utente_mysql, $password_mysql) or die('Errore...');

//Mi connetto al database
mysql_select_db($nome_database_mysql, $myconn) or die('Errore...');


//Imposto ed eseguo la query
$query = "DELETE FROM lil_urls";
$result = mysql_query($query, $myconn) or die('Errore...');
print "Le tabelle sono state troncate con successo.";
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
se non ho capito male tu vuoi eliminare le righe con una data minore di una che vuoi tu, giusto?
se è così ti do un esempio
PHP:
<?php
$giorni=30;
$adesso=time();//data di oggi del server in secondi
$allora=$adesso-(30*24*60*60); //tolgo 30 giorni alla data attuale gg*ore*minuti*secondi
$query = "DELETE FROM lil_urls WHERE date < '$allora'";
//..ecc...
?>
oppure se vuoi impostare una data completa es. precedenti al 12/05/2011
prima trasformi la data in timestamp
PHP:
<?php
$anno=2011;
$mese=5;
$giorno=12;
$ore=9;
$min=5;
$sec=39;
$allora= mktime($ore, $min, $sec, $mese, $giorno, $anno);//se non interessano ore/min/sec mktime(0, 0, 0, $mese, $giorno, $anno)
$query = "DELETE FROM lil_urls WHERE date < '$allora'";
//..ecc...
?>
 

marcomg

Utente Attivo
19 Nov 2011
204
0
16
Credo di aver sbagliato qualcosa ...


Il file troncate.php raggiungibile a http://iliurl.comeze.com/troncate.php
PHP:
<?php
// Variabili da impostare:

// Giorni dopo quanto rimuovere il tutto
$giorni_da_rimovere=0;

// Da qui in poi non è necessario modificare per il corretto funzionamento dello script

// Includo il file di configurazione
include("./includes/conf.php");

//Mi connetto al MySql Server
$myconn = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Errore...');

//Mi connetto al database
mysql_select_db(MYSQL_DB, $myconn) or die('Errore...');

//Imposto ed eseguo la query
$timestamp=time();//data di oggi del server in secondi
$MYSQL_DB=MYSQL_DB;
$to_remove_from_data=$timestamp-($giorni_da_rimovere*24*60*60); //tolgo 30 giorni alla data attuale gg*ore*minuti*secondi
$query = "DELETE FROM $MYSQL_DB WHERE date < '$to_remove_from_data'";
?>


il file ./includes/conf.php

PHP:
<?php /* conf.php ( config file ) */

// page title
define('PAGE_TITLE', 'lilURL; URL Generator');

// MySQL connection info
define('MYSQL_USER', 'user');
define('MYSQL_PASS', 'password');
define('MYSQL_DB', 'database');
define('MYSQL_HOST', 'host');

// MySQL tables
define('URL_TABLE', 'lil_urls');

// use mod_rewrite?
define('REWRITE', false);

// allow urls that begin with these strings
$allowed_protocols = array('http:', 'https:', 'mailto:');

// uncomment the line below to skip the protocol check
// $allowed_procotols = array();

?>

Cosa sbaglio?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
l'istruzione
PHP:
$query = "DELETE FROM $MYSQL_DB WHERE date < '$to_remove_from_data'";
valorizza solo una stringa affinche questa operi sulla tabella ci vuole l'istruzione

PHP:
mysql_query($query);
io avevo messo //ecc.. perchè mi sembrava evidente
non so se è quello che vuoi, ma mettendo
PHP:
$giorni_da_rimovere=0;
la moltiplicazione ($giorni_da_rimovere*24*60*60) è zero
quindi in pratica avresti anche potuto scrivere
PHP:
$to_remove_from_data=time();
 

marcomg

Utente Attivo
19 Nov 2011
204
0
16
Che intendi dire per valorizza la stringa?
Mettergli gli apici?
Oppure?
Comunque ho messo 0 per vedere se funziona subito!

PHP:
<?php
// Variabili da impostare:

// Giorni dopo quanto rimuovere il tutto
$giorni_da_rimovere=0;

// Da qui in poi non è necessario modificare per il corretto funzionamento dello script

// Includo il file di configurazione
include("./includes/conf.php");

//Mi connetto al MySql Server
$myconn = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Errore...');

//Mi connetto al database
mysql_select_db(MYSQL_DB, $myconn) or die('Errore...');

//Imposto ed eseguo la query
$timestamp=time();//data di oggi del server in secondi
$MYSQL_DB=MYSQL_DB;
$to_remove_from_data=$timestamp-($giorni_da_rimovere*24*60*60); //tolgo 30 giorni alla data attuale gg*ore*minuti*secondi
$query = "DELETE FROM $MYSQL_DB WHERE date < '$to_remove_from_data'";
mysql_query($query);
print("ok");
?>


Ma non è che mi sono sbagliato?
Ho esportato il database in pdf, ma non mi da il timestamp, ma la data!!
http://www.autistici.org/mmarcoggue...adfile&filename=a5887057_data.pdf&directory=&

Però nel phpmyadmin mi dice che il tipo è di tipo timestamp
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
con valorizza intendo riassumere un dicitura più tecnica
l'istruzione
PHP:
$query = "DELETE FROM $MYSQL_DB WHERE date < '$to_remove_from_data'";
assega alla variabile $query il valore "DELETE......"
il fatto di assegnare quella stringa non fa eseguire nulla, per fare l'interrogazione/inserimento/uppaggio necessita l'istruzione
mysql_query($query);

poi
Ma non è che mi sono sbagliato?
dipende da come hai settato il campo.
per utilizzare il formato timestamp, che è un numero intero, il campo data va settato es int(15), se lo setti in qualche formato tipo date ti trasforma il timestamp in data.
in tutti i miei db il campo data lo setto a int(15), poi eventualmente lo trasformo tramite script dove mi serve
es.
PHP:
echo date("d-m-Y H:i:s", $data_in_timestamp);
che strasforma il timestamp nel formato leggibile giorno-mese-anno ore:minuti:secondi
secondo me salvare la data in timestamp facilita sia l'ordinamento per data che eventuali calcoli

se come sembra tu hai settato la data del campo in un formato date, l'errore è nel where perchè il confronto tra una data è un numero intero è come sommare le pere con le mele.

es se nel campo date hai 2012-01-30
e nella variabile $to_remove_from_data hai il time stamp (non sto a calcolarlo metto un valore a caso) = 123456789 la condizione
WHERE date < '$to_remove_from_data'
non sarà mai verificata perchè
2012-01-30 > 123456789
 

marcomg

Utente Attivo
19 Nov 2011
204
0
16
Ho risolto. Devo ringraziarti moltissimo!!!

Alla fine il codice è questo:

PHP:
<?php
// Variabili da impostare:

// Giorni dopo quanto rimuovere il tutto
$giorni_da_rimovere=0;

// Da qui in poi non è necessario modificare per il corretto funzionamento dello script

// Includo il file di configurazione
include("./includes/conf.php");

//Mi connetto al MySql Server
$myconn = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Errore...');

//Mi connetto al database
mysql_select_db(MYSQL_DB, $myconn) or die('Errore...');

//Imposto ed eseguo la query
$timestamp=time();//data di oggi del server in secondi
$URL_TABLE=URL_TABLE;
$to_remove_from_data=$timestamp-($giorni_da_rimovere*24*60*60); //tolgo 30 giorni alla data attuale gg*ore*minuti*secondi
$to_remove_from_data=date('Y-m-d H:i:s', $to_remove_from_data);
$query = "DELETE FROM $URL_TABLE WHERE date < '$to_remove_from_data'";
//$query = "DELETE FROM $URL_TABLE WHERE date > '0'";
//$query = "DELETE FROM $URL_TABLE WHERE date < '2012-01-30 09:23:30'";
mysql_query($query);
?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
E' possibile anche direttamente con mysql

PHP:
$query = "DELETE FROM $URL_TABLE WHERE date < DATE_SUB(CURDATE(),INTERVAL 30 DAY)";

Meglio sempre fare prima una select per assicurarsi di eliminare i record giusti

PHP:
$query = "SELECT * FROM $URL_TABLE WHERE date < DATE_SUB(CURDATE(),INTERVAL 30 DAY)";
 

marcomg

Utente Attivo
19 Nov 2011
204
0
16
E come si fa ad aggiungere un controllo?
Cioè che esegue quell'operazione solo se in un'altra colonna c'è 1? Se c'è 0 non lo cancella, mentre se c'è 1 fa il controllo?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Codice:
$query = "DELETE FROM $URL_TABLE WHERE date < DATE_SUB(CURDATE(),INTERVAL 30 DAY) && altracolonna = 1";
 

marcomg

Utente Attivo
19 Nov 2011
204
0
16
Grazie mille!

Ditemi se secondo voi questo codice va bene! (sembra funzionare)
Lo ho fatto per stikked. Non c'è verso di fargli cancellare automaticamente i pastes.


PHP:
<?php
// Definisco la variabile con una stringa a vaso per permettere l'inclusione del file di configurazione del database
define('BASEPATH', "STRINGA INUTILE");

// Includo il file di configurazione del database
include("./system/application/config/database.php");

// Assegno le variabili dal file di configurazione
$MYSQL_HOST = $db['default']['hostname'];
$MYSQL_USER = $db['default']['username'];
$MYSQL_PASS = $db['default']['password'];
$MYSQL_DB = $db['default']['database'];
$URL_TABLE = $db['default']['dbprefix'];
$URL_TABLE = "$URL_TABLE"."pastes";

//Mi connetto al MySql Server
$myconn = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) or die('Errore...');

//Mi connetto al database
mysql_select_db($MYSQL_DB, $myconn) or die('Errore...');

//Imposto ed eseguo la query
$timestamp=time();
// $query = "DELETE FROM $URL_TABLE WHERE date < '$to_remove_from_data'";
$query = "DELETE FROM $URL_TABLE WHERE expire < '$timestamp' && toexpire = 1";
mysql_query($query);
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
T comando esatto per MYSQL PHP 2
Monital [Mysql]Confronto tra tabelle ed inseirmento dati- Comando JOIN (Credo) MySQL 0
F [Javascript] comando innerHTML non funziona Javascript 5
L [PHP] comando curl ad una pagin web PHP 1
Francesco Oliviero Aggiungere comando a pulsante HTML HTML e CSS 1
C [PHP] Esecuzione comando contenuto in stringa PHP 2
G [PHP] composer: forzare l'uso del comando require-dev PHP 0
G [Javascript] eseguire test-case Selenium da riga di comando... Javascript 0
F [PHP] Comando mail() e lettere accentate PHP 10
L [PHP] problema parsing con comando file get contents PHP 7
D [Photoshop] Comando "inserisci" non disponibile. Photoshop 1
S Comando per trovare file PHP 0
I comando php con "argomento" PHP 6
G estrarre parametri dalla riga di comando PHP 0
C Aiuto comando spostamento dati tra tabelle MySQL 2
napuleone problema con comando HTML e CSS 5
D file batch con ripetizione comando ogni tot secondi Programmazione 6
max_400 Sostituire un div con un altro il comando innerHTML è bloccato Javascript 0
C Animazione di una Div al comando click HTML e CSS 0
Z [VB.NET] equivalente del comando Attribute (vb6) in VB.NET .NET Framework 1
F E' possibile inviare un comando DOS con javascript o altro linguaggio?? Javascript 1
D Funzionalità gps righe comando urgente Sviluppo app per Android 1
M esecuzione comando shell da applicazione php su client PHP 5
G comando include PHP 6
P comando implode() PHP 27
A Apertura pdf con comando close Javascript 1
M eseguire un comando da php PHP 2
F comando php per caricare delle scritte in una pagina html PHP 4
S Problema con un comando che non conosco www.prova.it/?id=2 PHP 26
C Problema con il CSS per il comando text-align HTML e CSS 10
C Sostituire il comando body onload Javascript 30
F saltare la prima riga con il comando fgetcsv PHP 1
A Comando POST PHP 4
S [Vb.net] Eseguire un programma richiamando l'explorer di windows o il comando esegui .NET Framework 1
G comando google link:miosito.xyz trova 0 links SEO e Posizionamento 2
S Comando per ricaricare animazione Flash 0
T comando Xconfig Linux e Software 4
T comando onclick in un'altra pagina HTML e CSS 9
P comando a pulsante Flash 2
S Problema eseguendo un comando linux PHP 2
L Newsletter con comando cdosys??? Classic ASP 11
Dragon Problema: prendere un comando da un iframe e passarlo ad un altro HTML e CSS 2
F Comando a ftp.exe Web Server 1
P Manipolare Immagini Tramite Riga di Comando Programmazione 2
G Come si esegue il comando "cd .." in Vbscript? Programmazione 1
U Esiste un comando che... HTML e CSS 1
S Casella di riepilogo e pulsante di comando HTML e CSS 4
C problemi con il comando input HTML e CSS 2
G Comando per far partire l'esecuzione di script se c'è settato un coocky. Javascript 2
Nik Comando If.. Then.. End If ecc ecc Classic ASP 2

Discussioni simili