• Home
  • Forum
  • Hosting, Server e Sistemi
  • Database
  • MySQL

Comando mysql

  • Creatore Discussione Creatore Discussione marcomg
  • Data di inizio Data di inizio 28 Gen 2012
M

marcomg

Utente Attivo
19 Nov 2011
204
0
16
  • 28 Gen 2012
  • #1
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"
[table="width: 500"]
[tr]
[td]id[/td]
[td]url[/td]
[td]date[/td]
[/tr]
[tr]
[td]0[/td]
[td]www.ciao.it[/td]
[td]2012-01-28 10:02:48[/td]
[/tr]
[/table]
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.044
150
63
PR
www.borgo-italia.it
  • 28 Gen 2012
  • #2
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...
?>
 
M

marcomg

Utente Attivo
19 Nov 2011
204
0
16
  • 29 Gen 2012
  • #3
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.044
150
63
PR
www.borgo-italia.it
  • 29 Gen 2012
  • #4
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();
 
M

marcomg

Utente Attivo
19 Nov 2011
204
0
16
  • 30 Gen 2012
  • #5
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: 30 Gen 2012

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 30 Gen 2012
  • #6
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......"
Clicca per allargare...
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?
Clicca per allargare...
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
 
M

marcomg

Utente Attivo
19 Nov 2011
204
0
16
  • 30 Gen 2012
  • #7
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.606
54
48
TN
  • 30 Gen 2012
  • #8
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)";
 
M

marcomg

Utente Attivo
19 Nov 2011
204
0
16
  • 30 Gen 2012
  • #9
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.606
54
48
TN
  • 30 Gen 2012
  • #10
Codice:
$query = "DELETE FROM $URL_TABLE WHERE date < DATE_SUB(CURDATE(),INTERVAL 30 DAY) && altracolonna = 1";
 
M

marcomg

Utente Attivo
19 Nov 2011
204
0
16
  • 30 Gen 2012
  • #11
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);
?>
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

T
comando esatto per MYSQL
  • theseo
  • 5 Gen 2018
  • PHP
Risposte
2
Visite
976
PHP 5 Gen 2018
theseo
T
[Mysql]Confronto tra tabelle ed inseirmento dati- Comando JOIN (Credo)
  • Monital
  • 10 Lug 2010
  • MySQL
Risposte
0
Visite
3K
MySQL 10 Lug 2010
Monital
F
comando di inclusione file audio in I-Pad non funziona
  • francescoschino
  • 10 Apr 2023
  • HTML e CSS
Risposte
1
Visite
1K
HTML e CSS 14 Gen 2024
Alex Mercer
A
F
[Javascript] comando innerHTML non funziona
  • #Fede5
  • 13 Nov 2019
  • Javascript
Risposte
5
Visite
3K
Javascript 14 Nov 2019
mr.x
M
L
[PHP] comando curl ad una pagin web
  • luigi falcone
  • 9 Mag 2019
  • PHP
Risposte
1
Visite
1K
PHP 9 Mag 2019
Max 1
Aggiungere comando a pulsante HTML
  • Francesco Oliviero
  • 7 Giu 2018
  • HTML e CSS
Risposte
1
Visite
3K
HTML e CSS 7 Giu 2018
Max 1
C
[PHP] Esecuzione comando contenuto in stringa
  • chicchik
  • 5 Gen 2018
  • PHP
Risposte
2
Visite
1K
PHP 5 Gen 2018
marino51
G
[PHP] composer: forzare l'uso del comando require-dev
  • gio661
  • 28 Set 2017
  • PHP
Risposte
0
Visite
1K
PHP 28 Set 2017
gio661
G
G
[Javascript] eseguire test-case Selenium da riga di comando...
  • gio661
  • 7 Lug 2017
  • Javascript
Risposte
0
Visite
1K
Javascript 7 Lug 2017
gio661
G
F
  • Bloccata
[PHP] Comando mail() e lettere accentate
  • Francesco_72
  • 12 Mag 2017
  • PHP
Risposte
10
Visite
6K
PHP 10 Giu 2020
websilvia
L
[PHP] problema parsing con comando file get contents
  • larosa.cristian
  • 7 Apr 2017
  • PHP
Risposte
7
Visite
2K
PHP 8 Apr 2017
larosa.cristian
L
D
[Photoshop] Comando "inserisci" non disponibile.
  • discotec70
  • 11 Mar 2017
  • Photoshop
Risposte
1
Visite
3K
Photoshop 15 Mar 2017
filomeni
S
Comando per trovare file
  • system90
  • 8 Mar 2015
  • PHP
Risposte
0
Visite
1K
PHP 8 Mar 2015
system90
S
I
comando php con "argomento"
  • ienavespa
  • 7 Mar 2015
  • PHP
Risposte
6
Visite
2K
PHP 9 Apr 2015
ienavespa
I
G
estrarre parametri dalla riga di comando
  • gio661
  • 27 Gen 2015
  • PHP
Risposte
0
Visite
2K
PHP 27 Gen 2015
gio661
G
C
Aiuto comando spostamento dati tra tabelle
  • cromaplus
  • 7 Gen 2015
  • MySQL
Risposte
1
Visite
1K
MySQL 10 Gen 2015
HolidaySoft.it
problema con comando
  • napuleone
  • 12 Nov 2014
  • HTML e CSS
Risposte
5
Visite
1K
HTML e CSS 13 Nov 2014
glm1986ITALY
D
file batch con ripetizione comando ogni tot secondi
  • djjunior
  • 13 Ott 2014
  • Programmazione
Risposte
6
Visite
13K
Programmazione 26 Ott 2014
djjunior
D
Sostituire un div con un altro il comando innerHTML è bloccato
  • max_400
  • 17 Ago 2014
  • Javascript
Risposte
0
Visite
2K
Javascript 17 Ago 2014
max_400
C
Animazione di una Div al comando click
  • Ciakko
  • 5 Giu 2014
  • HTML e CSS
Risposte
0
Visite
3K
HTML e CSS 5 Giu 2014
Ciakko
C
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Hosting, Server e Sistemi
  • Database
  • MySQL
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?