Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Formattazione data proveniente da mysql

    Salve a tutti
    il problema è così banale che mi vergogno un pò a rappresentarlo... siate buoni...

    Ho un db mysql con un campo dove viene registrato automaticamente la data e l'ora di inserimento del record (campo timestamp che si autoalimenta con CURRENT_TIMESTAMP)

    Qua ndo leggo il record con:
    Codice PHP:
    SELECT FROM TAB000 WHERE TAB000_id $w_TAB000_id_ric 
    il contenuto del campo è TAB000_i_data_ora: 2014-09-02 09:50:21 (corretto)

    se voglio visualizzare questa informazione scrivo:
    Codice PHP:
    echo date("d-m-Y"$TAB000_obj->TAB000_i_data_ora); 
    Ma ottengo 01-01-1970

    Da stamattina mi sono letto quasi tutti gli articoli del sito sulla formattazione delle date,
    e anche buona parte degli articoli di questo forum, ma le indicazioni sono sempre le stesse:
    il codice che ho scritto è giusto.
    E allora cosa sbaglio?
    Cosa posso avere combinato che crea questo problema?

    Potrei fare una operazione di estrazione stringa... ma mi sembra assurdo...
    grazie per la pazienza
    Pino

  2. #2
    Ti consiglio di estrarre la data dal DB già formattata:

    Codice PHP:
    SELECT DATE_FORMAT(campo_data'%d-%m-%Y') AS d FROM tabella WHERE condizione;

    echo 
    $TAB000_obj->d
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Ti consiglio di estrarre la data dal DB già formattata:

    Codice PHP:
    SELECT DATE_FORMAT(campo_data'%d-%m-%Y') AS d FROM tabella WHERE condizione;

    echo 
    $TAB000_obj->d
    grazie ora provo, ma nel codice che ho scritto cosa c'è di sbagliato?

  4. #4
    La funzione date() prende in input il formato ed il timestamp. Nel tuo caso il timestamp passato non è corretto. Prova ad utilizzare la funzione strtotime()

    Codice PHP:
    echo date("d-m-Y"strtotime($TAB000_obj->TAB000_i_data_ora)); 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Ti consiglio di estrarre la data dal DB già formattata:

    Codice PHP:
    SELECT DATE_FORMAT(campo_data'%d-%m-%Y') AS d FROM tabella WHERE condizione;

    echo 
    $TAB000_obj->d
    purtroppo non funge...
    questo il contenuto nel campo nel db:
    data1.JPG
    e queste le istruzioni
    Codice PHP:
    $TAB000_sql $data->query("SELECT DATE_FORMAT(TAB000_i_data_ora, '%d-%m-%Y') As ddd FROM TAB000 WHERE TAB000_id = $w_TAB000_id_ric");
    echo 
    '<br>ddd:'.$TAB000_obj->ddd
    inoltre un inconveniente di estrarre la data già formatta è che non posso usare "SELECT *",
    ma devo specificare tutti i campi che voglio estrarre
    Immagini allegate Immagini allegate

  6. #6
    Ma il campo TAB000_i_data_ora di che tipo è? Se è di tipo date, datetime o timestamp la query è corretta a meno che non ci sia un altro errore. Prova a stampare la query prima di eseguirla e provala a mano e vedi cosa ti restituisce.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Ma il campo TAB000_i_data_ora di che tipo è?
    è timestamp
    infatti, come dicevo all'inizio, tutto quanto ho letto conferma la sintassi del codice

  8. #8
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Ma il campo TAB000_i_data_ora di che tipo è? Se è di tipo date, datetime o timestamp la query è corretta a meno che non ci sia un altro errore. Prova a stampare la query prima di eseguirla e provala a mano e vedi cosa ti restituisce.
    Ho ricopiato in una nuova pagina web il codice essenziale e adesso con DATE_FORMAT funziona
    GRAZIE

    Ma mi rimane ancora la domanda sul perchè non funziona la formattazione della data
    con date ("d-m-Y", TAB000_i_data_ora)

    Questo è il codice che funziona con DATE_FORMAT
    Codice PHP:
    // forzo id record da leggere
    $w_TAB000_id_ric 2
    // istanza della classe
    $data = new MysqlClass();
    // chiamata alla funzione di connessione
    $data->connetti();

    // Lettura record con DATE_FORMAT
    $TAB000_sql $data->query("SELECT DATE_FORMAT(TAB000_i_data_ora, '%d/%m/%Y') As ddd FROM TAB000 WHERE TAB000_id = $w_TAB000_id_ric");
    if(
    mysql_num_rows($TAB000_sql) > 0){
        
    // estrazione dei record
        
    $TAB000_obj $data->estrai($TAB000_sql);
        echo 
    '<br>ddd:'.$TAB000_obj->ddd;

    E questo è quello che non mi dà il risultato sperato:
    Codice PHP:
    $TAB000_sql $data->query("SELECT * FROM TAB000 WHERE TAB000_id = $w_TAB000_id_ric");
    if(
    mysql_num_rows($TAB000_sql) > 0){
          
    // estrazione dei record
        
    $TAB000_obj $data->estrai($TAB000_sql);
        
    $_d1 $TAB000_obj->TAB000_i_data_ora;
        
    $_d2 date("d-m-Y"$TAB000_obj->TAB000_i_data_ora);
    // visualizzo il contenuto delle variabili    
        
    echo '<br>TAB000_i_data_ora:'.$TAB000_obj->TAB000_i_data_ora;
        echo 
    '<br>d1:'.$_d1;
        echo 
    '<br>d2:'.$_d2;

    Questo è l'output che ottengo, con il solito 01-01-1970:
    Lettura record con DATE_FORMAT:
    ddd:02/09/2014
    --------------------------------
    Lettura record senza DATE_FORMAT:
    TAB000_i_data_ora:2014-09-02 17:35:59
    d1:2014-09-02 17:35:59
    d2:01-01-1970

    QUalcuno sa spiegare perchè?

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Nella funzione date, passa come secondo parametro la data elaborata da strtotime(campo data)

  10. #10
    Quote Originariamente inviata da clasku Visualizza il messaggio
    Nella funzione date, passa come secondo parametro la data elaborata da strtotime(campo data)
    YEEEEEEEEEEEEEEEEES
    funge!!! GRAZIE
    ma cosa fa esattamente STRTOTIME?
    stamattina avevo letto questa funzione ma non avevo ben capito a cosa servisse.

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.