Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    100

    Problema date con ciclo while

    Ciao a tutti,
    ho il problema di convertire una data proveniente da una query dal formato AAAA.mm.gg al formato gg.mese.AAAA, contestualmene se il campo data è NULL vorrei che non venisse riportata come data 1970/01/01 (data di default se il campo è NULL).
    posto il codice e vi chiedo di darmi una mano, anticipatamente grazie a tutti:

    //Fino a che ci sono righe che estraggo con $dati
    while ( $dati = mysql_fetch_assoc($result) )

    {
    $date=$dati["DATE"];

    $pattern = "/[0-9]{4}-[0-9]{2}-[0-9]{2}/" ;
    $new_date=date("d M Y", strtotime($date));


    //echo "<td> Modifica </td>";
    //echo "<td> Elimina </td>";





    print "<td> $dati[STATUS] </td>";
    print "<td> $new_date </td>";
    print "<td> $dati[PROVINCE] </td>";
    print "<td> $dati[Luogo] </td>";
    print "<td> $dati[COMMENT] </td>";
    print "<td> $dati[Celebrante] </td>";
    print "<td> $dati[VARIE] </td>";



    echo "</tr> \n";
    }
    echo "</table>\n";
    //chiudo la connessione

    mysql_close($conn);

  2. #2
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314
    il problema di convertire una data proveniente da una query dal formato AAAA.mm.gg al formato gg.mese.AAAA
    Potresti fare un explode della stringa con il . come carattere di controllo.

    Del tipo

    Codice PHP:
    $data=explode('.',tuocampo);
    $giorno $data[3];
    $mese$data[2];
    anno=$data[1];
    $data="$giorno/$mese/$anno"
    se il campo data è NULL vorrei che non venisse riportata come data 1970/01/01 (data di default se il campo è NULL).
    Codice PHP:
    If (tuocampo=='1970/01/01')
    {
    stampa qualcosa
    }
    else
    {
    $data=explode('.',tuocampo);
    $giorno $data[3];
    $mese$data[2];
    anno=$data[1];
    $data="$giorno/$mese/$anno";


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Usando datetime la stampi in tutti i formati che vuoi

    Codice PHP:

    $date 
    = ($dati["DATE"]!=null) ? $dati["DATE"] : 'data di default?';
    $data date_create($date);

    echo 
    date_format($data'd-m-Y'); 
    $data=explode('.',tuocampo);
    $giorno = $data[3];
    $mese= $data[2];
    anno=$data[1];
    Lo sai vero che i valori di un array iniziano da 0 in ordine numerico?

  4. #4
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314
    Originariamente inviato da RoTeam
    Usando datetime la stampi in tutti i formati che vuoi

    Codice PHP:

    $date 
    = ($dati["DATE"]!=null) ? $dati["DATE"] : 'data di default?';
    $data date_create($date);

    echo 
    date_format($data'd-m-Y'); 

    Lo sai vero che i valori di un array iniziano da 0 in ordine numerico?
    Ehm RoTeam, è meglio che in questo periodo evito il php, tra l'impostare Ore minuti secondi come H:m:s e questa sto battendo i miei record.. Ho ufficialmente bisogno di vacanze

    Comunque quoto la tua soluzione..

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    100
    Per funzionare Funziona, solo che riporta questo errore, quindi riporto il codice e l'errore:

    -------------------------CODICE----------------------
    while ( $dati = mysql_fetch_assoc($result) )

    {

    $date = ($dati["DATE"]!=null) ? $dati["DATE"] : 'data di default?';
    $data = date_create($date);
    $dati["DATE"]=date_format($data, 'd-M-Y');


    print "<td> $dati[STATUS] </td>";
    print "<td> $dati[DATE] </td>";
    print "<td> $dati[PROVINCE] </td>";
    print "<td> $dati[Luogo] </td>";
    print "<td> $dati[COMMENT] </td>";
    print "<td> $dati[Celebrante] </td>";
    print "<td> $dati[VARIE] </td>";


    -------------------------ERRORE RIPORTATO----------------------

    Warning: date_format() expects parameter 1 to be DateTime, boolean given


  6. #6
    I campi data/time mysql non sono mai EMPTY o NULL (mai vuoti o con valori nulli).
    quindi questo
    Codice PHP:
    $date = ($dati["DATE"]!=null) ? $dati["DATE"] : 'data di default?'
    non ha alcun senso.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da oly1982
    I campi data/time mysql non sono mai EMPTY o NULL (mai vuoti o con valori nulli).
    quindi questo
    Codice PHP:
    $date = ($dati["DATE"]!=null) ? $dati["DATE"] : 'data di default?'
    non ha alcun senso.
    Si invece, basta settare l'attributo null quando si va a creare un campo in una tabella

    Quindi dato che chiedeva "se il campo data è NULL" ho dedotto che lo aveva settato
    nel db invece di not null come null in caso sia vuoto

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    100
    Grazie ora funziona, mi chiedevo se era possibile al posto di inserire la data di default non far visualizzare niente, posto il codice:

    ------------------------CODICE----------------------

    $date = ($dati["DATE"]!='0000.00.00') ? $dati["DATE"] : 'data di default?';
    $data = date_create($date);
    $dati["DATE"]=date_format($data, 'd-M-Y');

    print "<td> $dati[STATUS] </td>";
    print "<td> $dati[DATE] </td>";
    print "<td> $dati[PROVINCE] </td>";
    print "<td> $dati[Luogo] </td>";
    print "<td> $dati[COMMENT] </td>";
    print "<td> $dati[Celebrante] </td>";
    print "<td> $dati[VARIE] </td>";

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da archivio
    Grazie ora funziona, mi chiedevo se era possibile al posto di inserire la data di default non far visualizzare niente, posto il codice:

    ------------------------CODICE----------------------

    $date = ($dati["DATE"]!='0000.00.00') ? $dati["DATE"] : 'data di default?';
    $data = date_create($date);
    $dati["DATE"]=date_format($data, 'd-M-Y');

    print "<td> $dati[STATUS] </td>";
    print "<td> $dati[DATE] </td>";
    print "<td> $dati[PROVINCE] </td>";
    print "<td> $dati[Luogo] </td>";
    print "<td> $dati[COMMENT] </td>";
    print "<td> $dati[Celebrante] </td>";
    print "<td> $dati[VARIE] </td>";
    Potresti gestirlo con un semplice if no?

    Codice PHP:
    $date = ($dati["DATE"]!='0000.00.00') ? $dati["DATE"] : null;
    if(!
    is_null($date)){
    $data date_create($date);
    $dati["DATE"]=date_format($data'd-M-Y');
    }else 
    $dati["DATE"] = ""//per non fare stampare 0000.00.00

                       
    print "<td> $dati[STATUS] </td>";
               print 
    "<td> $dati[DATE] </td>";
               print 
    "<td> $dati[PROVINCE] </td>";
               print 
    "<td> $dati[Luogo] </td>";
               print 
    "<td> $dati[COMMENT] </td>";
               print 
    "<td> $dati[Celebrante] </td>";
               print 
    "<td> $dati[VARIE] </td>";
     :
    messner

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    100
    Originariamente inviato da RoTeam
    Si invece, basta settare l'attributo null quando si va a creare un campo in una tabella

    Quindi dato che chiedeva "se il campo data è NULL" ho dedotto che lo aveva settato
    nel db invece di not null come null in caso sia vuoto
    L'attributo è settato a NULL !

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.