• User

    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_exp

    Io vorrei avere il valore giorni rimasti

    Grazie per aiuto


  • User Attivo

    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
    
    

  • User

    Grazie sei stato velocissimo e gentilissimo, vedrò di provare con questi esempi, nel caso non riesco o non mi funziona riscrivo qui.
    Buona serata


  • User

    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:

    https://ibb.co/kmVftk4

    image

    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


  • User

    purtroppo non posso mettere foto e link ancora


  • User

    ma se fai partire il file php capirai subito come risolvere il mio problema


  • User

    grazie ancora in anticipo per il tuo aiuto


  • User

    spero di poter ricambiare anche io un giorno


  • User

    se ti possono servire i file te li mando per test


  • User

    solo che non so come fare qui servirebbe tua mail


  • User

    al limite me lo scrivi e ci scambiamo mail


  • User Attivo

    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

  • User

    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


  • User

    Grazie alla fine con fatica sono riuscitk