• User Attivo

    problema con data

    Buongiorno a tutti,

    ho una tabella di articoli in un db mysql;
    ogni articolo ha un record chiamato "data" di tipo "DATE";
    nella mia pagina php per estrarre la data uso: <?php print $row['data'] ?>
    e il risultato è una cosa del genere: 2014-08-10
    io invece vorrei fosse 10-08-2014, giorno/mese/anno
    ho fatto diverse prove, con guide trovate online, ma nulla.

    qualcuno mi può aiutare?

    grazie 1000 in anticipo
    buona domenica


  • User

    Ciao!!
    Benvenuto nel forum!!

    La funzione che cerchi è "strtotime()" (string-to-time), utilizzata in coppia con la funzione "date()".

    
    <?php 
    
    $data_eng= $row['data']; 
    $data_it= date('d-m-Y', strtotime($data_eng)); 
    
    echo $data_it;
    
    ?>
    
    

    E' un problema comune e per fortuna la soluzione è molto semplice.
    Spero di essere stato d'aiuto.
    Ciao


  • User Attivo

    ciao smartix! sono ancora io 😄

    il codice funziona; ho provato il tuo e un'altra soluzione:

    <?php print date("d-m-Y", strtotime($row['data'])); ?>

    e me lo fa vedere bene: giorno/mese/anno

    avrei un altro quesito sempre riguardante le date però:

    ho la schermata di inserimento articolo del mio piccolo cms, nel campo data ho messo un calendarietto fatto con jquery,

    <input name="data" id="datepicker" type="text" class="campi" placeholder="">

    e il calendarietto mi mette la data in formato: mese/giorno/anno

    quella pagina ne chiama un'altra che carica i dati nel db:

    questa è la riga che li carica:

    $data = $_POST['data'];

    ma non me la prende giusta;

    probabilmente devo settare il formato sia in entrate che in uscita;

    mi puoi aiutare?

    grazie 1000
    buona serata


  • User Attivo

    Come ti prende la data?
    Comunque il datepicker di Jquery può essere settato in base alle tue esigenze
    http://stackoverflow.com/questions/1328025/jquery-ui-datepicker-change-date-format


  • User

    Ciao!!
    Ecco un paio di osservazioni sul tuo ultimo messaggio:

    *<?php print date("d-m-Y", strtotime($row['data'])); ?>*
    

    E' esattamente la stessa cosa, l'esempio che ti ho fatto è scritto in forma "didattica". Nelle tue pagine php però ti conviene inserire tutto in una funzione ad hoc "date_eng_it()" che converte le date e che potrai richiamare al bisogno. Forse ci eri già arrivato da solo 😉

    Per quanto riguarda il calendario e l'inserimento nel database basta tenere a mente tre concetti:
    a) Il database lavora con le date in formato inglese/americano 'Y-m-d'

    Dalla documentazione ufficiale di MySQL:

    The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.

    The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

    b)Ne consegue che ogni volta che devi INSERIRE una data nel database dovrai prima manipolarla (se in formato diverso) per trasformarla in formato 'Y-m-d'

    c)Quando invece fai il procedimento inverso, ovvero recuperi una data dal database e la stampi a video, allora dovrai convertire la data in formato italiano 'd-m-Y' per facilitare la lettura all'utenza italiana.

    Quanto detto si riferisce al SOLO PHP e MySQL.

    In questo contesto si inserisce il datepicker Jquery.

    Se guardi la documentazione scoprirai che è possibile cambiare il formato con cui compare la data (e usare quello italiano).
    http://jqueryui.com/datepicker/#date-formats

    Fatto ciò verifica con quale formato viene inviata la data in post (echo $data nella pagina alla quale viene inviato il form)

    Se la data non è in formato compatibile con il database convertila con il codice di cui abbiamo discusso nei post precedenti.

    Dammi conferma quando hai letto il messaggio.
    Buona giornata


  • User Attivo

    ciao smartix!

    letto e recepito il messaggio; ho capito in teoria come fare, questi giorni provo e magari se ho difficoltà chiedo qui;

    grazie di tutto a tutti intanto, magari pubblico quello che sto facendo, così mi dai un parere tecnico;

    di dove sei te?

    buona serata


  • User Attivo

    riuscito!

    posto se a qualcuno interessasse.

    Sistemato tutto con jquery;

    ho seguito questa guida:
    mynamespace.it/2010/06/13/gestione-di-date-con-php-mysql-e-jquery-ui-datepicker/

    di fatto ci sono 2 input:

    <input name="data_finta" id="datepicker" type="text" class="campi" placeholder="Inserisci la Data dell'Articolo nel Formato GG/MM/AAAA">
    <input name="data" id="data" type="hidden">

    uno solo visuale per l'utente e l'altro con la data buona per il db;

    script:

    <script type="text/javascript" >
    $(function() {
    $("#datepicker").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "dd-mm-yy",

    altField: '#data',
    altFormat: 'yy-mm-dd' // formato timestamp
    });
    });
    </script>

    grazie 1000 a tutti!


  • User

    Bravo per essere riuscito ad implementare la soluzione,
    e bravo per aver condiviso il codice e il link alla documentazione.

    P.s. Nei messaggi, quando inserisci un pezzo di codice, racchiudi tutto tra i tag "CODE" così automaticamente avrà il layout corretto.


  • User Attivo

    grazie smartixx!

    la prossima volta metto i tag "CODE".

    graze di tutto!


  • User Attivo

    Il tag "CODE" è buono, ma è molto meglio quello "PHP" perché colora la sintassi del codice (lo si trova premendo il pulsante "Modalità Avanzata" in basso a destra), come già prescritto nel regolamento di sezione.