delete where data<

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
cerco anima pia che mi dia un piccolo cocchio a questo script in quanto ho già popolato (con fatica) una tabella, finito il lavoro mi è venuto in mente di eliminare i record con una data precedente es tutti quelli più vecchi d due mesi dalla data odierna. ho fatto lo script ma temo a lanciarlo non vorrei rifare tutto il lavoro

PHP:
<?php
function diminusciData($data,$meno){
	$dataEx=explode(" ",$data);
	//$dataEx[0] anno
	//$dataEx[0] mese
	//$dataEx[0] giorno
	$dataEx[2]="01";//porto a 01 evito complicazioni per 30,31, 28 e 29
	$dataOggi=$dataEx[0]."-".$dataEx[1]."-".$dataEx[2];//implode("-", $dataEx) NON SERVE;

	$togli=$dataEx[1]-$meno;
	if( $togli<1){//sone nell'anno precedente
		$meseMeno=abs($dataEx[1]-$meno);//intervallo da 12
		$dataEx[1]=12-$meno;//riporto a 12
		$dataEx[0]=$dataEx[0]-1;// diminuisco di un anno
	}else{
		$dataEx[1]=$dataEx[1]-$meno; //tolgo i mesi
	}
	if (strlen($dataEx[1])<2){$dataEx[1]= "0".$dataEx[1];}
	$dataPrec=$dataEx[0]."-".$dataEx[1]."-".$dataEx[2];//implode("-", $dataEx);
	return $dataPrec;
}//fine function



$dataOggi="2008 09 30";//solo per prova
$dataMeno=3;
//$dataOggi=date("Y m d");//decommentare
//dati di test da eliminare
$dataProva=array("2008-01-25","2008-02-25","2008-03-25","2008-04-25","2008-05-25","2008-06-25","2008-07-25","2008-08-25","2008-09-25","2008-10-25","2008-11-25","2008-12-25");
echo "devo eliminare tutte le date che sono precedenti di ".$dataMeno." mesi alla data ".$dataOggi." odierna<br><br>";

$dataMinore=diminusciData($dataOggi,$dataMeno);
//ciclo di test da eliminare
for ($k=0; $k<=11;$k++){// foreach ($dataProva as $value)
	if($dataProva[$k]<$dataMinore){
		echo "<br> la data di prova ".$dataProva[$k]." è precedente a ".$dataMinore." quindi da eliminare";
	}else{
		echo "<br> la data di prova ".$dataProva[$k]." è successiva a ".$dataMinore." quindi da conservare";
	}

}
//include_once "connessione.php";
//$Elimina="DELETE mia_tabella  WHERE data<='".$dataMinore."'";
//$queryDel=mysql_query($Elimina);
//mysql_close();


?>

grazie in anticipo
 
Per fare una prova modifica la query di cancellazione con una SELECT, in questo modo sei sicuro di non fare danni.
 

Discussioni simili