Cancellare record a tempo con formato data mktime

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio

Max61

Utente Attivo
2 Mar 2014
760
4
18
Salve, ho creato una pagina che con il codice sotto mi cancella i record che sono più vecchi di 30 giorni, tutto ok se il formato data è Y-m-d o d-m-Y.

PHP:
$query = "SELECT from appuntamenti WHERE cancella_record_30giorni <= DATE_SUB(CURDATE(), INTERVAL 30 day)";

Ho la necessità di cancellare record con la data formato mktime
PHP:
mktime(0, 0, 0, $m, 1, $y));
,
vi chiedo aiuto nel modificare il codice
PHP:
$query = "SELECT from appuntamenti WHERE cancella_record_30giorni <= DATE_SUB(CURDATE(), INTERVAL 30 day)";
nel formato mktime.

Grazie

Max61
 
Ultima modifica:
Ciao, la funzione date() accetta come secondo parametro la data in formato timestamp
PHP:
$query = "SELECT from appuntamenti WHERE cancella_record_30giorni <='" . date("Y-m-d", mktime(0, 0, 0, $m, 1, $y)) . "'";
 
Ciao, la funzione date() accetta come secondo parametro la data in formato timestamp
PHP:
$query = "SELECT from appuntamenti WHERE cancella_record_30giorni <='" . date("Y-m-d", mktime(0, 0, 0, $m, 1, $y)) . "'";

Ciao e grazie per la sollecita risposta, ma siccome che sono novizio di php non riesco a farlo funzionare, mi da questi errori:

Notice: Undefined variable: m in C:\xampp\htdocs\prenotazioneauto\views\CancellaDopo30Giorni.php on line 13

Errore:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from appuntamenti WHERE str_data <='1999-12-01'' at line 1

Notice: Undefined variable: y in C:\xampp\htdocs\prenotazioneauto\views\CancellaDopo30Giorni.php on line 13
non trova riferimenti ai parametri $m e $y, ma non so come passarglieli.

Ti invio il codice completo della pagina ringraziandoti per l'infinita pazienza...

PHP:
<?php
     // connessione al database
include('Connessione.php');

	 $db= 'appuntamenti';
		
     $db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server");
			
     mysql_select_db($database, $db) or die ("impossibile connettersi al database");
	        
        function eliminaRegistrazioni() { 
			
			$query = "SELECT from appuntamenti WHERE cancella_record_30giorni <='" . date("Y-m-d", mktime(0, 0, 0, $m, 1, $y)) . "'";
            
            $res = mysql_query($query);  
                         
            if(!$res) { 
                die("Errore:" . mysql_error()); 
            } 

        } 
         
        // richiamiamo la funzione 
        eliminaRegistrazioni(); 

   header('location:../views/MenuPrincipale.php');//reindirizza alla pag        
        ?>

Max61
 
Ultima modifica:
Ciao e grazie per la sollecita risposta, ma siccome che sono novizio di php non riesco a farlo funzionare, mi da questi errori:

Notice: Undefined variable: m in C:\xampp\htdocs\prenotazioneauto\views\CancellaDopo30Giorni.php on line 13

Errore:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from appuntamenti WHERE str_data <='1999-12-01'' at line 1

Notice: Undefined variable: y in C:\xampp\htdocs\prenotazioneauto\views\CancellaDopo30Giorni.php on line 13
non trova riferimenti ai parametri $m e $y, ma non so come passarglieli.

Ti invio il codice completo della pagina ringraziandoti per l'infinita pazienza...

PHP:
<?php
     // connessione al database
include('Connessione.php');

	 $db= 'appuntamenti';
		
     $db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server");
			
     mysql_select_db($database, $db) or die ("impossibile connettersi al database");
	        
        function eliminaRegistrazioni() { 
			
			$query = "SELECT from appuntamenti WHERE cancella_record_30giorni <='" . date("Y-m-d", mktime(0, 0, 0, $m, 1, $y)) . "'";
            
            $res = mysql_query($query);  
                         
            if(!$res) { 
                die("Errore:" . mysql_error()); 
            } 

        } 
         
        // richiamiamo la funzione 
        eliminaRegistrazioni(); 

   header('location:../views/MenuPrincipale.php');//reindirizza alla pag        
        ?>

Max61


Sono riuscito a fare piccoli passi, ma ancora mi da errore di sintassi: Hai un errore nella sintassi SQL; controllare il manuale che corrisponde alla versione del server MySQL per la sintassi diritto di utilizzare nei pressi di '' 1412632800 ')' at line 1.

Qualche suggerimento?

PHP:
$query = "DELETE from appuntamenti WHERE str_data <= date ('d-m-Y',". "'" . mktime(0,0,0,date('m'),date('d')-30,date('Y')) .  "')" ;

Grazie
Max61
 
Hai messo male quasi tutti gli apici
PHP:
$query = "DELETE from appuntamenti WHERE str_data <= '" . date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 30, date('Y'))) . "'";
 
Hai messo male quasi tutti gli apici
PHP:
$query = "DELETE from appuntamenti WHERE str_data <= '" . date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 30, date('Y'))) . "'";

Grazie di nuovo per il tempo che mi stai dedicando e sicuramente non mi sono spiegato bene, riprovo:
con il codice che mi hai costruito te cancellerei un record con il formato data (Y-m-d), infatti quando lancio la tua query mi evidenzia il formato data str_data <= '2014-10-07''.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from appuntamenti
PHP:
WHERE str_data <= '2014-10-07'' at line 1


Io invece sto cercando di cancellare un record formato VARCHAR str_data <= date ('d-m-Y','1412632800')' at line 1 infatti la data del record che vorrei cancellare ha proprio questo valore: 1412632800 cioè un record di 30 giorni fa, 07-10-2014.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from appuntamenti
PHP:
WHERE str_data <= date ('d-m-Y','1412632800')' at line 1.

Grazie
Max61
 
Ultima modifica:
togli la funzione date()
PHP:
$query = "DELETE from appuntamenti WHERE str_data <= '" . mktime(0, 0, 0, date('m'), date('d') - 30, date('Y')) . "'";
ma non si fanno calcoli sui campi stringa, non funzionerà mai
 
Non mi chiedere come mai ma togliendo la funzione date() come hai suggerito tu FUNZIONA PERFETTAMENTE, cancella i record vecchi di 30 giorni e più.

Adesso mi farebbe comodo migliorare il calendario eventi, il codice l'ho copiato dal sito mrwebmaster alla pagina "https://www.mrw.it/php/calendario-agenda-php-mysql_7163_2.html" e modificato leggermente ma nella sostanza è quello. Ho reso cliccabili tutte le date, sia quelle occupate che quelle libere, si differenziano dallo sfondo rosso e verde. Le date occupate (rosse) linkano al record della prenotazione, vorrei fare la stessa anche con le giornate libere (colore verde), in parte già lo faccio infatti cliccandoci si apre la pagina di prenotazione ma vorrei che la data fosse inserita automaticamente, Esempio: clicco sul giorno 10 del mese di novembre (nel calendario verde, quindi libero) e all'apertura della pagina di inserimento la data fosse 10-11-2014. Non so se questo è possibile...

Per comodità aggiungo il codice del calendario:
PHP:
<?php

function ShowCalendar($m,$y)
{
  if ((!isset($_GET['d']))||($_GET['d'] == ""))
  {
    $m = date('n');
    $y = date('Y');
  }else{
    $m = (int)strftime( "%m" ,(int)$_GET['d']);
    $y = (int)strftime( "%Y" ,(int)$_GET['d']);
    $m = $m;
    $y = $y;
  }
  $precedente = mktime(0, 0, 0, $m -1, 1, $y);
  $successivo = mktime(0, 0, 0, $m +1, 1, $y);

  $nomi_mesi = array(
    "Gennaio",
    "Febbraio",
    "Marzo",
    "Aprile",
    "Maggio",
    "Giugno", 
    "Luglio",
    "Agosto",
    "Settembre",
    "Ottobre",
    "Novembre",
    "Dicembre"
  );
  $nomi_giorni = array(
    "Lun",
    "Mar",
    "Mer",
    "Gio",
    "Ven",
    "Sab",
    "Dom"
  );

  $cols = 7;
  $days = date("t",mktime(0, 0, 0, $m, 1, $y)); 
  $lunedi= date("w",mktime(0, 0, 0, $m, 1, $y));
  if($lunedi==0) $lunedi = 7;
  echo "<table>\n"; 
  echo "<tr>\n
  <td colspan=\"".$cols."\">
  

  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><span style=\"color:red; font-size: 12pt\"><a href=\"?d=" . $precedente . "\"><img src='../images/prev.gif' alt='previous' /></a>
  " . $nomi_mesi[$m-1] . "
  <a href=\"?d=" . $successivo . "\"><img src='../images/next.gif' alt='next' /></a></td></tr>";
  
  
  foreach($nomi_giorni as $v)
  {
    echo "<td><b>".$v."</b></td>\n";
  }
  echo "</tr>";

  for($j = 1; $j<$days+$lunedi; $j++)
  {
    if($j%$cols+1==0)
    {
      echo "<tr>\n";
    }

    if($j<$lunedi)
    {
      echo "<td> </td>\n";
    }else{
      $day= $j-($lunedi-1);
      $data = strtotime(date($y."-".$m."-".$day));
	  $oggi = strtotime(date("Y-m-d"));
      include 'config.php';
      $sql = "SELECT str_data FROM appuntamenti";
      $result = mysql_query($sql) or die (mysql_error());
      if(mysql_num_rows($result) > 0)
      {
        while($fetch = mysql_fetch_array($result))
        {
          $str_data = $fetch['str_data'];
          if ($str_data == $data)
          {
		  $day = "<a href=\"Prenotazioni.php?day=$str_data\"><span style=\"color:#FFFFCC; font-size: 14pt\"><span style=\"color:#FFFFCC height:1;width:1; background-color:red\">$day</span>";
		  }
        }
      }
      if($data != $oggi)
      {

           \\QUI VORREI CHE LA DATA SU CUI CLICCO FOSSE INSERITA ALL APERTURA DELLA PAGINA Prenotazione_insert.php
	    echo "<td><a href=\"Prenotazione_insert.php?day=$str_data\"><span style=\"color:#FFFFCC; font-size: 14pt\"><span style=\"color:#FFFFCC height:1;width:1; background-color:green\">$day<br></span>";

		}else{

           \\QUI VORREI CHE LA DATA SU CUI CLICCO FOSSE INSERITA ALL APERTURA DELLA PAGINA Prenotazione_insert.php
        echo "<td><a href=\"Prenotazione_insert.php?day=$str_data\"><span style=\"color:#FFFFCC; font-size: 14pt\"><span style=\"color:#FFFFCC height:1;width:1; background-color:#1D4F82\">$day<br></span>";
		
      }
    }

    if($j%$cols==0)
    {
      echo "</tr>";
    }
  }
  echo "<tr></tr>";
  echo "</table>";
}
ShowCalendar(date("m"),date("Y")); 
?>

Infinitamente GRAZIE da un neofita autodidatta

Max61
 
Ultima modifica:

Discussioni simili