Piccolo aiutino per una query..

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Buonasera a tutti, vi chiedo un piccolo aiutino per una query. Vorrei creare un pulsante che provveda in automatico a rimuovere dal db tutti i post più vecchi di una settimana rispetto alla data odierna.
Partendo dalla query che utilizzo solitamente per cancellare.. vorrei produrre qualcosa che si adatti al caso, qualcosa simile a questa bozza sotto..

PHP:
// Cancello offerte settimanalmente

if (isset($_POST['action']) and $_POST['action'] == 'Ripulisci')
{
	include 'connection.php';
  try
  {
    $sql = 'DELETE FROM prodotti WHERE data < "'.$datax.'"';
    $s = $pdo->prepare($sql);
    $s->bindValue(':data', $_POST['data']); //sicuro andrà corretto (forse anche aliminato).. è giusto una bozza di partenza..
    $s->execute();
  }
  catch (PDOException $e)
  {
    $error = 'Error deleting product: ' . $e->getMessage();
    include 'ERRORDB/outputpage.php';
    exit();
  }

  header("location: ".$_SERVER['PHP_SELF'].""); 
  exit();
}
// Fine Cancello offerte settimanalmente

..dove $datax vorrei fosse il risultato di un calcolo fatto da Data oggi - 7gg.. E' possibile? Se si qualcuno ha idea di come realizzarla? Di come fare la sottrazione tra date? Vanno convertite? Se si come?

Se ci sono metodi più semplici .. suggerite pure :D Grazie
 
Ultima modifica:
Dite che potrei usare questa funzione Mysql??

mysql> select DATE_ADD(’2005-07-19′, INTERVAL -5 DAY);

+-----------------------------------------+
| DATE_ADD('2005-07-19', INTERVAL -7 DAY) |
+-----------------------------------------+
| 2005-07-14 |
+-----------------------------------------+
Dovrebbe togliere 7 giorni alla data impostata..
Che io potrei ricavarmi.. in quel formato.. Che ne pensate?? Potrebbe funzionare?


PHP:
if (isset($_POST['action']) and $_POST['action'] == 'Ripulisci')
{
	include 'connection.php';
  try
  {
    $sql = 'DELETE FROM prodotti WHERE data < DATE_ADD('"'.$datax.'"', INTERVAL -7 DAY)';
    $s = $pdo->prepare($sql);
    $s->bindValue(':id', $_POST['id']);
    $s->execute();
  }
  catch (PDOException $e)
  {
    $error = 'Error deleting product: ' . $e->getMessage();
    include 'ERRORDB/outputpage.php';
    exit();
  }

  header("location: ".$_SERVER['PHP_SELF'].""); 
  exit();
}


O anche questa.. che mi sembra fatta appositamente..
mysql> select DATE_SUB(’2005-07-19′,INTERVAL 5 DAY);

+---------------------------------------+
| DATE_SUB('2005-07-19',INTERVAL 5 DAY) |
+---------------------------------------+
| 2005-07-14 |
+---------------------------------------+
Sottrae direttamente..
 
Ultima modifica:
Forse ci sono... potrebbe essere questa la soluzione.. Trovata qui da voi.. sul sito..


PHP:
if (isset($_POST['action']) and $_POST['action'] == 'Ripulisci') 
{ 
    include 'connection.php'; 
  try 
  { 
    $sql = 'DELETE FROM prodotti WHERE data < DATE_SUB(CURDATE(),INTERVAL 7 DAYS)'; 
    $s = $pdo->prepare($sql); 
    $s->execute();
    echo $s->rowCount();  // Posso metterlo in una variabile e vederlo accanto al pulsante dopo l'esecuzione ??
  } 
  catch (PDOException $e) 
  { 
    $error = 'Error deleting product: ' . $e->getMessage(); 
    include 'ERRORDB/outputpage.php'; 
    exit(); 
  } 

  header("location: ".$_SERVER['PHP_SELF']."");  
  exit(); 
}
 
Alla fine a chiunque dovesse interessare ho risolto in questo modo..

PHP:
/*Inizio funzione ripulisci*/
if (isset($_POST['action']) and $_POST['action'] == 'Ripulisci') 
{ 
    include 'connection.php'; 
  try 
  { 
	$sql = 'DELETE FROM prodotti WHERE DATEDIFF(CURDATE(), data ) > 7'; // differenza tra la data di oggi e quella registrata nel db, se maggiore di 7 cancella.. 
    $s = $pdo->prepare($sql); 
    $s->execute();
  } 
  catch (PDOException $e) 
  { 
    $error = 'Error deleting product: ' . $e->getMessage(); 
    include 'ERRORDB/outputpage.php'; 
    exit(); 
  } 

  header("location: ".$_SERVER['PHP_SELF']."");  
  exit(); 
}  
/*Fine funzione ripulisci*/
 

Discussioni simili