Cancellare record a tempo con formato data mktime

Max61

Utente Attivo
2 Mar 2014
712
3
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:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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)) . "'";
 

Max61

Utente Attivo
2 Mar 2014
712
3
18
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:

Max61

Utente Attivo
2 Mar 2014
712
3
18
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
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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'))) . "'";
 

Max61

Utente Attivo
2 Mar 2014
712
3
18
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:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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
 

Max61

Utente Attivo
2 Mar 2014
712
3
18
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
Autore Titolo Forum Risposte Data
ste80 [PHP] cancellare/aggiornare record DB PHP 24
A Cancellare record su più tabelle con PHP PHP 27
novello88 [MySQL] Delete Record (cancellare una riga) MySQL 1
P Cancellare record ASP.NET 0
grottafelix Cancellare un record Classic ASP 4
Cosina Cancellare una specifica email da un elenco in un file txt PHP 3
S Cancellare una riga MYSQL PHP 1
G Con Microsoft Outlook 2016 come si possono cancellare le mail doppie? Posta Elettronica 0
Cosina [PHP] Cancellare una riga da un file di testo in base al nome PHP 2
Cosina [PHP] Cancellare una riga da un file txt in base alla data PHP 1
L conferma prima di cancellare con javascript e php PHP 16
H cancellare avatar in codice PHP PHP 2
M [PHP] Cancellare singolo file da cartella su server PHP 3
A [PHP] Cancellare riga database a scelta dell'utente PHP 2
trattorino [PHP] sql aggiungere dato in una tabella senza cancellare contenuto PHP 6
C Cancellare un elemento del DOM jQuery 4
D [PHP] CANCELLARE MAILPLAN PHP 2
Trapano [PHP] Cancellare file da una cartella.... PHP 5
K [PHP] Cancellare e Stampare tabella PHP 3
felino [PHP] Cancellare directory con file al suo interno PHP 2
A Cancellare righe vuote in mysql Database 4
L Cancellare web site Weebly CMS (Content Management System) 0
G Pagina facebook da cancellare Social Media Marketing 4
JackIlPazzo Sostituire una riga specifica in un file di testo senza cancellare il rimanente PHP 13
E cancellare immagini che non sono nel db mysql PHP 1
max_400 Cancellare le prime 3 righe di un file PHP 4
voldemort Cancellare un file con 0 byte Java 1
filippino Come cancellare dati da un database MySQL? Database 1
IImanuII Cancellare righe doppie e ciclo. PHP 2
O Cancellare dati da una tabella mysql in modo automatico PHP 2
K Help cancellare manualmente plugin WordPress 2
A cancellare TUTTI i cookies PHP 2
S aiuto non so cancellare i dati: PHP 1
D Cancellare una Stringa di testo da un file txt PHP 8
M cancellare una immagine dal database PHP 3
F 2 Div uniti, cancellare bordo. HTML e CSS 1
ivarello Cancellare parole dopo ";" PHP 4
M cancellare del testo in sql PHP 1
C cancellare un elemento in un array memorizzato in una sessione PHP 12
F Devo cancellare un sito web su Google SEO e Posizionamento 2
D Non riesco a cancellare un href >.< Javascript 6
IImanuII Cancellare una cartella piena PHP 14
valient13 aprire un alert per cancellare Javascript 1
D Come cancellare Internet Explorer 8? Windows e Software 2
M Cancellare tutti i caratteri fra due caratteri PHP 6
L Come faccio a cancellare un account di posta su Apple Mail? Posta Elettronica 1
Web Designer Come cancellare file bloccati sul desktop Windows e Software 0
L Cancellare cookie / cache / cronologia da Safari di iPhone Smartphone e tablet 1
novello88 Cancellare un elemento con JQuery jQuery 1
M Script php per cancellare file PHP 1

Discussioni simili