[PHP] Aggiungere giorni e stampare risultato da data inserita in input

Discussione in 'PHP' iniziata da pizzettino, 2 Aprile 2019.

Tag (etichette):
  1. pizzettino

    pizzettino Nuovo Utente

    Registrato:
    1 Aprile 2019
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Buonasera a tutti
    Non riesco e stampare la data corrispondente a data_inizio + durata_giorni, nel formato Y/m/d
    Di seguito i codici html e php

    FILE HTML
    PHP:
    <html>
    <
    form action="validazione.php" method="POST">
    <
    head>
    <
    title>Esercizio di validazione date </title>
    <
    h1>Gestiamo la validazione delle date</h1
    </
    head>
    <
    body bgcolor="#ff99ff"Inserisci la data di inizio:
    <
    br>
    <
    input type="text" name="data" value="data">
    <
    br> <br>
    Inserisci la durata:
    <
    br>
    <
    input type="text" name="durata" value="durata">
    <
    br><br>
    <
    input type="submit" name="Inserisci date" value="Inserisci date">
    </
    body>
    </
    form>
    </
    html>
    FILE PHP
    PHP:
    <?php
    $data
    =$_POST['data'];
    $durata=$_POST['durata'];
    $limite=strtotime("2019-01-27");
    $datainserita=strtotime($data);
    if (
    $datainserita>$limite && $durata>=&& $durata<=10)
    {
    $timestamp=strtotime("+$durata day");
    echo 
    date('Y/m/d',$timestamp);
    }
    else
    {
    echo 
    "Erroreeeeeeeeeeeeeee";
    }
    ?>   
    Come faccio a dire al sistema di aggiungere alla data che io inserisco (data) i giorni che inserisco (durata) e stamparmi il tutto in formato data?

    Attualmente con il codice che le ho allegato il sistema correttamente mi stampa il formato data Y/m/d aggiungendo i giorni di durata che io inserisco, ma non a partire dalla data che ho inserito, ma a partire dalla data odierna (2019-04-02)

    Esempio:
    Inserisco come data il valore 2019-03-22
    Inserisco come durata il valore 3
    Inviando i dati la pagina PHP mi stampa il valore 2019-04-05 (considera data odierna +3 giorni)
    In realtà vorrei che mi stampasse il valore 2019-03-25 (ovvero la data da me inserita + 3 giorni)
    Probabilmente e su questo pezzo di codice che dovrei dirgli di considerare la data da me inserita ma non riesco a capire come:

    PHP:
    $timestamp=strtotime("+$durata day");
    echo 
    date('Y/m/d',$timestamp);
    Qualcuno riesce ad aiutarmi?
    Grazie mille in anticipo
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    966
    Mi Piace Ricevuti:
    56
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
  3. pizzettino

    pizzettino Nuovo Utente

    Registrato:
    1 Aprile 2019
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao Macus_Adi

    Ho controllato il link da te citato ma ho notato che li si parla di addizione e sottrazione di date, mentre nel mio caso deve aggiungere un numero ad una data
    Alla fine sono riuscito ad uscirne in questo modo:

    PHP:
    $data=$_POST['data'];
    $durata=$_POST['durata'];
    $limite=strtotime("2019-01-27");
    $datainserita=strtotime($data);
    if (
    $datainserita>$limite && $durata>=&& $durata<=10)
    {
        
    $timestamp=strtotime("$data+$durata day");
        echo 
    date('Y/m/d',$timestamp);
    }
    ovvero aggiungendo semplicemente $data prima del +$durata

    Grazie mille

    Stefano
     
  4. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    966
    Mi Piace Ricevuti:
    56
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Forse non hai letto bene....
    Quello che hai fatto qui:
    É esattamente qusto:
    Che forse non ho specificato in quanto scritto tra le linee....
    Il relativo codice è:
    PHP:
    $format='%Y-%m-%d %H:%i:%s'
    $interval=1;
    $dt=new DateTime($start);
    $dt->add(new DateInterval('P'.$interval.'D'));
    return 
    $dt->format($format);
    Presente anche in altre discussioni....
    In definitiva la doc è qui: https://www.php.net/manual/en/datetime.add.php
     
Sto caricando...

Condividi questa Pagina