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

pizzettino

Nuovo Utente
1 Apr 2019
9
0
1
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>=2 && $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
 

pizzettino

Nuovo Utente
1 Apr 2019
9
0
1
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>=2 && $durata<=10)
{
    $timestamp=strtotime("$data+$durata day");
    echo date('Y/m/d',$timestamp);
}
ovvero aggiungendo semplicemente $data prima del +$durata

Grazie mille

Stefano
 

macus_adi

Utente Attivo
5 Dic 2017
1.080
61
48
IT/SW
mentre nel mio caso deve aggiungere un numero ad una data
Forse non hai letto bene....
Quello che hai fatto qui:
if ($datainserita>$limite && $durata>=2 && $durata<=10)
{
$timestamp=strtotime("$data+$durata day");
echo
date('Y/m/d',$timestamp);
}
É esattamente qusto:
Che forse non ho specificato in quanto scritto tra le linee....
Sia diff che add!
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