[MySql] Una query che proprio non va..
[MySql] Una query che proprio non va.. postato il 12/03/2009 09:55:47 nel forum programmazione, open source e hosting
$MySql = "SELECT * FROM Asta";
$Rimuovi=mysql_query($MySql) or die (mysql_error);
$i=0;
while($scadenza[$i]=mysql_fetch_array($Rimuovi)){
$i++;
$dataOgg=strtotime($scadenza[$i]['Data']);
if (time()>$dataOgg){
$MySql = "DELETE * FROM Asta Where IDAsta='".$scadenza[$i]['IDAsta']."'";
$elimino=mysql_query($MySql) or die("lol2");
}
}
mi ritorna il die("lol2") e non so perché fallisca quella query, magari è un errore stupido, any help?
Pagine → 1
12/03/2009 10:44:13
leva asterisco dalla delete
12/03/2009 10:59:18
perfetto, ora non da' più il problema della die() però comunque non cancella un bel niente!
nella tabella Asta il campo "Data" è un datetime... io vorrei fare in modo che le righe che presentano una data anteriore alla data odierna vengano cancellate, ma non funziona. E' possibile che la funzione
time()>strtotime($scadenza[$i]['Data'])
non funzioni correttamente?
12/03/2009 11:08:05
time() restituisce la data in formato timestamp, se non sbaglio il campo data di mysql resistitusce la data in formato umano (gg/mm/yy).
Se ricordo bene il problema è quindi quello.
Per fare confronti con le date ti conviene fare in modo che i campi di data siano comunque di tipo bigint e salvare dentro il timestamp di una data.
Poi in lettura te la converti in modo da poterla vedere in maniera più intelleggibile.
12/03/2009 11:16:50 e modificato da zacharia il 12/03/2009 11:17:33
clemence ha scritto: time() restituisce la data in formato timestamp, se non sbaglio il campo data di mysql resistitusce la data in formato umano (gg/mm/yy).
Se ricordo bene il problema è quindi quello.
ma infatti non li confronto direttamente, uso la funzione strtotime() che converte la stringa in formato timestamp.
12/03/2009 13:19:45
WHERE nomeCampo<(DATE_ADD(NOW(),INTERVAL -1 DAY))
ovviamente prima della clausola WHERE ci va altro =)
12/03/2009 15:07:01 e modificato da darkside of breakfast il 12/03/2009 15:07:25
non ho ben capito perchè tu debba fare un ciclo...
Cioè è sulla stessa tabella..
Basta che fai una delete con condizione where, il db cerca automaticamente tutte le righe che soddisfano la condizione, mica uno solo.
12/03/2009 22:36:40
arry_blu ha scritto:
WHERE nomeCampo<(DATE_ADD(NOW(),INTERVAL -1 DAY))
ovviamente prima della clausola WHERE ci va altro =)
ho risolto semplicemente così:
$MySql = "DELETE FROM Asta Where Data<NOW()";
13/03/2009 02:13:49
zacharia ha scritto: [quote]arry_blu ha scritto:
WHERE nomeCampo<(DATE_ADD(NOW(),INTERVAL -1 DAY))
ovviamente prima della clausola WHERE ci va altro =)
ho risolto semplicemente così:
$MySql = "DELETE FROM Asta Where Data<NOW()";
[/quote]hemm..
come ha detto faber qui sopra, una condizione simile (credo) è completamente inutile. Infatti questa query cancella tutti i record esistenti visto che è impensabile che esistano record con una data futura rispetto a quella, se vogliamo definirla, massima cioè quella dell'istante in cui viene avviata la query.
La query è equivalente a TRUNCATE, se ti serviva qualcosa di simile allora o non l'avevo capito oppure ti sei espresso male ^^'
13/03/2009 12:17:40
si hai ragione avevo letto male io, infatti avevo fornito una condizione che cancella i record più vecchi di un giorno ;)
14/03/2009 09:32:16
oorazoroo ha scritto: [quote]arry_blu ha scritto: [quote]zacharia ha scritto:
ho risolto semplicemente così:
$MySql = "DELETE FROM Asta Where Data<NOW()";
hemm..
come ha detto faber qui sopra, una condizione simile (credo) è completamente inutile. Infatti questa query cancella tutti i record esistenti visto che è impensabile che esistano record con una data futura rispetto a quella, se vogliamo definirla, massima cioè quella dell'istante in cui viene avviata la query.
La query è equivalente a TRUNCATE, se ti serviva qualcosa di simile allora o non l'avevo capito oppure ti sei espresso male ^^'[/quote]
Beh no, quella query funziona alla perfezione se la data inserita nel campo corrisponde al futuro e non al passato. Per esempio se nel campo data viene inserita la data di scadenza (che può essere tra una settimana per esempio) allora la query funziona alla perfezione, perchè eliminerà solo le aste la cui scadenza è già passata.[/quote]
Infatti è proprio quello che fa. XD
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Imperion ↗
Crossout ↗
RAID Shadow Legends ↗
Tiles Survive ↗
CRSED: F.O.A.D. ↗
AlterEgo ↗
State of Survival ↗
Fallen Gods ↗
Cafuné ↗
Enlisted ↗
The Coven ↗