• User Newbie

    passaggio data da php a mysql

    ciao a tutti
    uso php5 e mysql5

    devo gestire delle date per ordinare degli acquisti per data (order by data_acquisto asc) usando le query sql su mysql e fare operazioni di confronto sulle date (where data_acquisto > oggi-3mesi).

    ho un dubbio:
    come gestisco le date nel form quando vado a inserire un'acquisto?
    cioe' nel form di inserimento vorrei che compaia la data di oggi nel formato gg/mm/yyyy (cosi' suggerisco il formato, e nella maggior parte dei casi sara' quella definitiva)
    **poi salvo nel database la data in un campo di tipo DATE. **

    In quale formato la salvo? (cioe' che valore gli passo al db)
    Timestamp()
    time()
    o altro...

    grazie mille. e' veramente un forum interessante, ha molte sezioni che altri non hanno


  • ModSenior

    Per facilità di utilizzo ti conviene mettere nel database nel formato time()


  • User Newbie

    allora un possibile procedimento mi e' venuto in mente. ma non e' troppo complicato?

    • nel form scrivo la data nel formato italiano gg/mm/yyyy
    • quando passo i dati nella insert ci sara' una funzione che
    • da data italiana la passi nel formato php yyyy-mm-dd
    • poi una funzione che la trasformi in valore di secondi (la inversa di time() )
    • cosi la memorizzo nel campo in formato DATE in mysql come secondie' giusto?
      grazie mille

  • ModSenior

    Si
    puoi usare un explode per ottenere giorno,mese e anno
    e usare la funzione mktime per trasforamre la data nel formato time


  • User Newbie

    ok, forse per mysql non serve neanche portarlo a secondi il valore della data.
    per il confronto in sql pensavo a timestampdiff(month, data1, data2) dove le date sono nel formato yyyy-mm-dd.

    quindi se devo trovare gli acquisti di luglio faro'
    SQL="SELECT * FROM acquisti WHERE TIMESTAMPDIFF(month, data_acquisto, '2008-07-01') = 0 ORDER BY data_acquisto ASC"

    si lho provato funziona, mi sembra il modo meno complicato


  • User

    Per le conversioni di date in MySQL sarebbe meglio utilizzare str_to_date()...

    IMHO è molto più versatile.


  • User

    Io di solito per gestire delle date creo nel form 3 campi (giorno - mese - anno) così poi tramite 'mktime' la trasformo in Timestamp e la posso gestire in Mysql (con FROM_UNIXTIME vado a scrivere e con UNIX_TIMESTAMP vado a leggere).

    Le select sulle date invece le puoi effettuare con le funzioni MONTH e YEAR in fase di estrazione dati dal DataBase.

    Cosa ne pensate ??


  • User Newbie

    penso senza passate in unixtime e' piu semplice. non so se a lungo termine puo' dar problemi fare come sto facendo: mostro una data in formato ita gg/mm/yyyy, con explode la faccio diventare yyyy-mm-dd e la memorizzo nel campo in formato date. poi l'sql di mysql da' vari strumenti per lavorarci su.

    poi se vogliono modificare l'ordine faccio di nuovo il passaggio (inverso questa volta) e la mostro gg/mm/yyyy nel campo.quando salvano si passa al passaggio di prima.:ciauz: