Le Famigerate Date del PHP.

IlDottore Pek Davide

Nuovo Utente
25 Lug 2012
15
0
0
Ciao a tutti,
sto realmente impazzendo dietro alle date in PHP, mi spiego meglio, ho trovato tutorial su come si scrivono le date e su come si fanno calendari, ma non ho trovato quello che mi serve, e se l'ho trovato non l'ho capito assolutamente, premetto che io faccio sito per hobby ad amici, e ho fatto L'ITI informatica, quindi sono una via di mezzo tra chi sa bene e chi non sa niente.
Allora, il mio problema è che non riesco a capire come gestire le scadenze, mi spiego meglio, ho un database con una colonna di data firma contratto, il mio amico vuole che dopo un anno (qualche giorno prima) lo avverta che quel contratto sta scadendo, ho provato ad aggiungere 1 nel formato date ed è comprensibilmente sbagliato, ho provato a trasformare tutto in interi, ed è una cosa improponibile, come fare ? come posso aggiungere un tot di tempo in un formato date ???

è molto importante xk sono bloccato, spero nell'aiuto di qualcuno,
saluti a tutti.





:book: BUONO SCRIPT:book:
 
Ciao,
se usi come tipo campo DATE puoi provare una query del genere:

PHP:
<?php
$query = "SELECT * FROM tabella WHERE dataScadenza < DATE_SUB(CURDATE(), INTERVAL 1 YEAR)";
?>

dovresti riuscire a estrarre tutte le date piu vecchie di un anno

non l'ho provata
 
Il problema, è che io devo inserire tempi precisi, non intervalli di tempo, una scadenza precisa dopo un tot tempo inserito dall'utente, e con preavviso, quindi quello script penso funzioni ma nn mi aiuta, grazie comunque .
 
se togli il segno di minore (<) e usi quello di uguaglianza (=) recuperi le date precise di un anno fa

cmq il mio consiglio è di provare delle query direttamente sul db fino a che non recuperi i dati che ti servono
 
Ciao, mi sono ritrovato nella tua identica situazione. La mia necessita era di avvisare il cliente via email della scadenze delle fatture mensilmente. Dopo varie prove sono arrivato alla soluzione, che al momento che viene inserito il documento faccio inserire sia la data di scadenza sia la data di avviso. Se anche tu inserisci tu i dati del contratto potrebbe funzionare, altrimenti se vuoi che il tutto avvenga in automatico, aspetta qualche altro consiglio. Mi iscrivo alla discussione, perchè interessa anche a me l'argomento.
 
e' incredibile, però che un problema così semplice, che col c++ o qualsiasi altro linguaggio si risolverebbe tranquillamente, è impossibile che non esista un modo decente di gestire queste date...
cmq il mio problema anche se faccio inserire la data di scadenza, è che gli deve mandare l'email qualche gg prima, quindi effettuo sempre operazioni con le date, che mi sembra di capire alla fine la cosa migliore da fare è usare il time, anche se si complica inutilmante il tutto...
 
Io insisto con la mia

PHP:
<?php

$conn = mysql_connect("localhost", "root", "");
$db = mysql_select_db("database");

// recuperi gli account di 1 anno e 3 giorni fa (368 gg)
$query = "SELECT mail,dataAttivazione FROM tabella WHERE dataAttivazione = DATE_SUB(CURDATE(), INTERVAL 368 DAY)";
// la esegui
$result = mysql_query($query);
// cicli se ci sono risultati
while ($row = mysql_fetch_assoc($result)) {
    $mail = $row['mail'];
    $data = explode("-", $row['dataAttivazione']);
    $dataScadenza = $data[2] . "/" . $data[1] . "/" . date('Y');
    $oggetto = "Scadenza account";
    $body = "Avvisiamo che il " . $dataScadenza . " ti scade l'account";

    // invii la mail con phpmailer o altro
}
?>

ho scritto senza testare cmq l'idea si capisce

PS : formato dataAttivazione DATE ( YYYY-MM-GG )
 
Ultima modifica:
Grazie comunque della pazienza,
ma mi puoi spiegare quell'interval ??? nn l'ho trovato da nessuna parte, come funziona ???
e poi php capisce la scrittura 368 days ? xk facendo diversi tentativi ho notato che cmq il formato date, è un formato a parte che nn si piò comparare con interi ad esempio,
io avevo provato a scompattare la data in gg mm aaaa come quattro var intere, con i vari vincoli di integrità, tuttavia quando vado a prendere la data odierna non c'è verso compararla, o trasformarla comunque in 3 distinti numeri interi.
 
nn l'ho trovato da nessuna parte, come funziona ???
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

in pratica la WHERE vuol dire
DATE_SUB -> togli
CURDATE -> data corrente
INTERVAL 368 DAY -> 368 giorni

Togli da oggi 368 giorni

e poi php capisce la scrittura 368 days
non è php che deve capire ma MYSQL e lo capisce benissimo
puoi usare:
INTERVAL 1 DAY -> un giorno
INTERVAL 1MONTH -> un mese
INTERVAL 1 YEAR -> un anno

Questo vale per il formato DATE o DATETIME (credo) o TIMESTAMP (credo) credo perche non ho provato

Se vuoi usare numeri interi il discorso cambia e dovrai affidare il lavoro a PHP
Cmq lavorare sulle date con php è come lavorarci con qualsiasi altro linguaggio
 
funziona,
ma ho dovuto lasciare minore, xk con = da dei problemi con le ore etc..
ma non capisco come mai ultimamente non mi va niente, puoi controllare, visto che ci intendi cosa c'è di sbagliato in questo : (è il form per aggiungere i dati )

PHP:
<form method="post" action ="#">
Inserisci qui i dati Contrattuali: <br>
Nome Azienda : <input type="text" name="nomeazienda" value=""/><br>
Referente    : <input type="text" name="referente" value=""/><br>
Indirizzo    : <input type="text" name="indirizzo" value=""/><br>
Numero tel.  : <input type="text" name="numero" value=""/><br>
P.Iva        : <input type="text" name="piva" value=""/><br>
Data         : <input type="date" name="data" value=""/><br><br>
<input type="submit" name="submit">
</form>
 <?php
 if (isset($_post['submit'])) {
 @include ("config.php");
 conn ();
 $nomeazienda = mysql_real_escape_string($_POST['nomeazienda']);
 $referente = mysql_real_escape_string($_POST['referente']);
 $indirizzo = mysql_real_escape_string($_POST['indirizzo']);
 $numerot = mysql_real_escape_string($_POST['numero']);
 $piva = mysql_real_escape_string($_POST['piva']);
 $date = $_POST['data'] ;
        
 
 $sql = "INSERT INTO  `my_emanuelecipriani`.`contratti` (
'id' ,
`nomeazienda` ,
`referente` ,
`indirizzo` ,
`ntelefono` ,
`p.iva` ,
`data`
)
VALUES (
'$nomeazienda',  '$referente',  '$indirizzo',  '$numerot',  '$piva',  ' $date'
);
";
				$result = mysql_query($sql);
 
      if (!$result) {
		die("Errore nella query $query: " . mysql_error());
	}
 
                    } ;?>
grazie 1000 comunque..
 
Ultima modifica di un moderatore:
Nuovo problema = Nuova discussione

togli 'id' , dalla query
 
Pardo'n

tolto, il problema rimane, cmq non ho fatto una nuova discussione perchè almeno lo vedevi te, che te ne intendi, poi nn volevo assillare il forum :D
cmq il problema è che si connette ma non inserisce i dati nella tabella.
 

Discussioni simili