- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Query data registrazione e scadenza
-
Query data registrazione e scadenza
Salve come da oggetto non sto riuscendo a ricavare il risultato tra 2 date in formato DATA in mysql.
Per spiegare meglio con php devo importare queste due date e ricavare i giorni rimasti alla scadenza.I valori sono:
data_reg
data_expIo vorrei avere il valore giorni rimasti
Grazie per aiuto
-
Ciao,
in PHP puoi usare il metodo diff() della classe DateTime, guarda l'esempio della documentazione ufficiale
[PHP]
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
[/PHP]il metodo diff() ritorna un oggetto della classe DateInterval e il metodo format() consente di formattare in formato stringa quest'intervallo, in base alle tue esigenze.
In MySQL potresti ottenere la stessa cosa con TIMESTAMPDIFF(), eccoti un esempio
SELECT TIMESTAMPDIFF(DAY, d.from, d.to) as periodoFROM dates as d
-
Grazie sei stato velocissimo e gentilissimo, vedrò di provare con questi esempi, nel caso non riesco o non mi funziona riscrivo qui.
Buona serata
-
ciao purtroppo non sono riuscito a eseguire il tuo consiglio, ti incollo qui il file completo cosi e tutto piu chiaro:
<?php
require("config1.php");
?><a href = "indexreg.php">Home Page</a><br><br><br>
<b>Login to check is key license registred</b><br><br>
<form action = "#/indexreg.php" method = "POST">
Username<br><input type = "text" name = "user"><br>
Password<br><input type = "text" name = "pass"><br><br>
<input type = "submit" value = "Send"><?php
$dbc = mysql_connect($dbhost,$dbuser,$dbpass) or die('can not connect to mysql');
$sdb = mysql_select_db($dbname,$dbc);// Strings
$user = $_POST['user'];
$pass = $_POST['pass'];$q = mysql_query("SELECT active FROM users WHERE user = '$user'");
$row = mysql_fetch_array($q);
$row = $row['my_key'];
$row = $row['reg_date'];
$cpas = mysql_query("SELECT pass FROM users WHERE user = '$user'");
$rpas = mysql_fetch_array($cpas);
$rpas = $rpas['pass'];
//IF empty
if(empty($user) or empty($pass)){
die("Please fill all fields");
}
//IF Login Incorrect
if($pass != $rpas){
die("Login Incorrect");
}
// Echo Error
if($q){
if($row){
die("Your Key License Is NOT Registred");
}}
// Echo Succes
if($row == NULL){
echo "<br/><br/><br/>Your key license Is Successfuly Registred ";
}$query = "SELECT reg_date, exp_date, serial, my_key from users WHERE user = '$user'";
$result = mysql_query($sdb, $query);// per eseguire la query
$result = mysql_query($query);// per stampare eventuali errori
if (!$result) {
echo "Errore query " . mysql_error($dbc);
}
// per contare i risultati
$num = mysql_num_rows($result);// per estrarre i risultati
while ($row = mysql_fetch_assoc($result)) {
echo $row['reg_date'] . "<br/>Your Key License Expyre " . $row['exp_date'] . "<br/>Your Serial Number " . $row['serial'] . "<br/>Your Key License Number " . $row['my_key'] . "<br/>";
}?>
</form>
</body>
</html>io ho solo bisogno di sapere dalla data di registrazione **reg_date alla data di scadenza exp_date **quanti giorni rimangono e passare il risultato a schermo, e possibile fare questo, per sono riuscito a fare il resto come da screen qui sotto:
come si vede dalla foto nel link io vorrei sapere quanti giorno rimangono alla scadenza ,
grazie ancora per il vostro aiuto, sono sicuro che mi risolverete il problemino
-
purtroppo non posso mettere foto e link ancora
-
ma se fai partire il file php capirai subito come risolvere il mio problema
-
grazie ancora in anticipo per il tuo aiuto
-
spero di poter ricambiare anche io un giorno
-
se ti possono servire i file te li mando per test
-
solo che non so come fare qui servirebbe tua mail
-
al limite me lo scrivi e ci scambiamo mail
-
Ma hai provato il codice che ti ho postato? Sembrerebbe di no
Quando estrai i risultati, hai $row['reg_date'] e $row['exp_date'].
Usale per darle "in pasto" alla classe DateTime
[PHP]
$datetime1 = new DateTime($row['reg_date']);
[/PHP]quindi ti calcoli la differenza con la funzione diff() e poi formatti con format(). Do per scontato che nel DB, i campi reg_date e exp_date siano di tipo DATE, quindi nel formato aaaa-mm-gg
P.S.
- Se devi aggiungere una breve risposta a seguire di un'altra tua risposta, usa il tasto "Modifica Messaggio", così eviti di accodare 50 messaggi uno dietro l'altro.
- Quando posti codice PHP, clicca su Modalità avanzata e poi sul pulsante "Racchiudi tra i tag [ PHP ] il testo selezionato".
- Se hai tempo e voglia, studiati la libreria PDO di PHP, serve a connettersi al database e rimpiazza le ormai obsolete e non più supportate funzioni native mysql. Questa risorsa è già un buon inizio http://it.phptherightway.com/#pdo_extension
-
si si sono in forma Date, ma ho difficolta a realizzare questa cosa, puoi scrivermi il tutto con diff e il resto , credimi non sto riuscendo.
grazie
-
Grazie alla fine con fatica sono riuscitk