Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Query con Timestamp

  1. #1
    Utente di HTML.it L'avatar di inc40
    Registrato dal
    Sep 2004
    Messaggi
    319

    Query con Timestamp

    Salve,
    questa cosa mi sa proprio di incredibile....

    Con EasyPHP 1.8.0.1 ho creato una tabella che ho chiamato "prenotazione", la quale contiene solo un campo che ho chiamato "data" il cui tipo è "timestamp".
    Da http://localhost/mysql/ inserisco nella tabella una riga che rappresenta la data attuale, il cui codice SQL è

    Codice PHP:
    INSERT INTO `prenotazione` ( `data` ) VALUES (NOW( ) ) 

    Dopodichè effettuo la seguente query SQL:

    Codice PHP:
    SELECT UNIX_TIMESTAMP(dataFROM prenotazione ORDER BY data DESC 
    la quale mi restituisce il timestamp corretto (ho verificato in diversi modi, tra cui utilizzando la funzione date() in una pagina php).

    Successivamente creo la mia brava pagina php nella quale, dopo le operazioni di connessione al database, ho inserito il seguente "complicatissimo" codice:


    Codice PHP:
    <?
    $query 
    "SELECT UNIX_TIMESTAMP(data) FROM prenotazione ORDER BY data DESC";
    $ris MYSQL_QUERY ($query,$conn);
    $riga mysql_fetch_array($ris);
    if (
    $riga == FALSE)
        {
        echo(
    "Nessuna prenotazione inserita"."
    "
    );
        }
    else
    {
    echo(
    "Le prenotazioni sono state effettuate nelle seguenti date:

    "
    );
        do
            {
            
    $dp $riga[data];   //   ho provato anche con   $dp = $riga['data'];
            
    echo ("N° secondi = $dp
    "
    );        
            
    $giorno date('l',$dp);   //   ho provato anche con    $giorno = date('l',dp);                
            
    echo ("Giorno = $giorno


    "
    );        
            switch(
    $giorno){
                case 
    Monday $giorno Lunedì; break;
                case 
    Tuesday :$giorno Martedì; break;
                case 
    Wednesday$giorno Mercoledì; break;
                case 
    Thursday$giorno Giovedì; break;
                case 
    Friday $giorno Venerdì; break;
                case 
    Saturday$giorno Sabato; break;
                case 
    Sunday$giorno Domenica; break;
            }                
            echo(
    "Data Prenotazione :  ".$giorno." ".date("d-m-Y H:i:s"$dp));
            echo(
    "
    "
    );        
            }
        while (
    $riga mysql_fetch_array($ris));
    }

    MYSQL_CLOSE ($conn);
    ?>


    La cosa stranissima è che l'output di questa "complicatissima" pagina è:

    Codice PHP:
    Le prenotazioni sono state effettuate nelle seguenti date:

    N° secondi 
    Giorno Thursday


    Data Prenotazione 
    Giovedì 01-01-1970 01:00:00 

    Mi sembra di aver capito che viene perso il contenuto della variabile $dp. Ma allora mi chiedo...come ha fatto date() a "ricavare" Thursday?
    Se date() riesce a "ricavare" il giorno della settimana, perchè non riesce a "ricavare" una data più completa ?

    Grazie
    Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Prova ad aggiungere l'alias.

    $query = "SELECT UNIX_TIMESTAMP(data) as data FROM prenotazione ORDER BY data DESC";


    Mi sembra di capire che usi lo unix timestamp solo per poi ricavare il giorno in formato italiano.
    Puoi usare direttamente un array

    Codice PHP:
    $giorni = array(=> 'Domenica','Lunedì','Martedì','Mercoledi','Giovedì','Venerdì','Sabato');

    $query mysql_query("SELECT date_format(data,\"%d-%m-%Y %T\") as data ,dayofweek(data) as giorno from prenotazione ORDER BY data DESC");

    //così hai la data già nel formato gg-mm-aa hh:mm:ss e poi li recuperi come

    $riga['data']
    //e
    $giorni[$riga['giorno']] 
    Si potrebbe anche ricavare il giorno in italiano direttamente da query ma così è più semplice.

    edit. Per rispondere alla tua domanda non usando un alias
    $dp = $riga[data] non è mai definita e quindi non essendoci un timestamp valido ti viene restituito il giorno corrente, cioè giovedì.

  3. #3
    Utente di HTML.it L'avatar di inc40
    Registrato dal
    Sep 2004
    Messaggi
    319
    Grande nicola75ss....
    e poi è una soluzione elegantissima

    Grazie
    Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.

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.