Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117

    Aumentare valore variabile data

    Salve.

    Un form $_POST passa una data in formato DD/MM/YYYY in questo php:
    Codice PHP:
    $scadenza implode("-"array_reverse(explode("/"$_POST['titolo'])));
    $newscad strtotime(date("Y-m-d"strtotime($scadenza)) . " +12 month"); 
    Purtroppo se faccio un UPDATE nel mio database mi ritrovo 0000-00-00.
    La prima stringa la ho messa così perchè nel database MySQL la data è in formato YYYY-MM-DD.
    Una volta che il form passa la data nella variabile $scadenza nel formato analogo a quello del DB, vorrei che questa creasse un'altra variabile contenente una data aumentata di un anno esatto rispetto alla precedente. Ci tengo a precisare che deve aumentare di 1 anno, non 365 giorni, in modo che DD e MM rimangano sempre gli stessi.
    Le due variabili devono rimanere separate perché avranno due ruoli separati in due sql diversi.

    Cosa sto bagliando?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Usa la classe DateTime

    Codice PHP:
    $data '02/03/2017';
    $scadenza = new DateTime($data);
    $datadb $scadenza->format('Y-m-d');
    $scadenza->modify('+1 year');
    $newscad $scadenza->format('Y-m-d'); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117
    Copincollando quello che mi hai passato tu ma sostituiendo la prima riga con
    Codice PHP:
    $data $_POST['titolo']; 
    ovvero la data che l'utente inserisce dal form (formato DD/MM/YYYY), ogni volta che faccio submit l'anno effettivamente aumenta di 1, ma il mese ed il giorno si invertono.
    Ad esempio da 02/03/2018 mi escono i seguenti record:
    03/02/2019
    02/03/2020
    03/02/2021
    eccetera

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Deve esserci un errore da qualche parte perché con il codice che ti ho messo io il formato della data è sempre yyyy/mm/dd

    Hai controllato che la variabile $_POST['titolo'] contenga effettivamente la data nel formato che vuoi tu?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117
    Ti posto il pezzo di codice in questione, lo puoi vedere in azione qua: http://www.axive.it/polizza.php?id=1
    codice:
    <form method="post" action="<?php $_PHP_SELF ?>" id="incassatitolo">
    <span class="formlabel">Data Titolo</span>
    <input name="titolo" type="text" value="<?=$scadenza?>"><br><br>
    <span class="formlabel">Premio</span>
    <input name="premio" type="text"><br><br>
    <span class="formlabel">Foglio Cassa</span>
    <input name="fogliocassa" type="text"><br><br>
    <span class="formlabel">Pagamento</span>
    <select name="metodo" form="incassatitolo">
        <option value="Contanti">Contanti</option>
        <option value="Bonifico">Bonifico</option>
        <option value="POS">POS</option>
        <option value="Assegno">Assegno</option>
        <option value="Bollettino">Bollettino Postale</option>
        <option value="Mensilizzazione">Mensilizzazione</option>
    </select><br>
    <input  name="incasso" type="submit" id="incasso" value="INCASSA" style="float:  right; margin: 20px 80px 0 0; border: 0;" class="cash">
    <?
    if(isset($[underscore]POST['incasso']))
        {
        $data = $_POST['titolo'];;
        $scadenza = new DateTime($data);
        $datadb = $scadenza->format('Y-m-d');
        $scadenza->modify('+1 year');
        $newscad = $scadenza->format('Y-m-d');
        $premio = $_POST['premio'];
        $fogliocassa = implode("-", array_reverse(explode("/", $_POST['fogliocassa'])));
        $metodo = $_POST['metodo'];
         $incassa = mysql[underscore]query("INS[interruzione_per_post]ERT INTO titoli  (scadenza, premio, fogliocassa, polizza, metodo) VAL[interruzione_per_post]UES ('$datadb',  '$premio', '$fogliocassa', '$pid', '$metodo');");
         $modificapolizza = mysql[underscore]query("UP[interruzione_per_post]DATE polizze S[interruzione_per_post]ET  premio = '$premio', scadenza = '$newscad' WHERE id = '$pid';");
        echo "<meta http-equiv='refresh' content='0'>";
        }
    ?>
    </form>

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117
    Adesso ho tolto la modifica perché stavo incasinando un po' di roba. Comunque dentro a $_POST['titolo'] ci viene inserita una data del tipo 31/12/2016 (Giorno/Mese/Anno)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Colpa mia, ti avevo mandato il codice sbagliato
    Così dovrebbe andare.

    Codice PHP:
    $scadenza DateTime::createFromFormat('d/m/Y'$_POST['titolo']);
    $datadb $scadenza->format('Y-m-d');
    $scadenza->modify('+1 year');
    $newscad $scadenza->format('Y-m-d'); 

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    117
    Ti ringrazio molto! Così funziona perfettamente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.