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

    Ordinare elenco in base alla data attuale del server

    Allora pongo un po' questo quesito:

    Tengo un elenco di una 30 di fiere annue con gli anni aumenteranno quindi vorrei far visualizzare la fiere + prossima alla data attuale...

    La struttura della tabelle diciamo che è cosi:

    id - data inserimento - titolo - testo - data evento - citta

    dove data inserimento è la data di quando è stata inserita la fiera online la data evento invece è composta così 22-25 Ottobre 2008 ineffetti è solo un campo di testo

    in un primo momento facevo visulizzare l'elenco in base all'ultima data inserita... poi pensandoci su ho detto modifico la data di inserimento con la data di inizio della fiere.

    il problema sorge che nella query mysql come devo strutturala?

    facevo così:
    Codice PHP:
    Select from fiere Order by data_inserimento 
    dovrei fare un if nella query?

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    secondo me devi rivedere la struttura della tabella, la data di inserimento non ti da informazioni riguardo la fiera.

    Se inserisco oggi una fiera per il 2010 e domani una per il 2009 l'ordine non sarà valido.


  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Per prima cosa fai due colonne separate data di inizio e data di fine.
    E poi fai una select dove la data di inizio e' < NOW() ordinata in modo ascendente.

    Avendo le date separate puoi anche sbizzarrirti su altre cose tipo scrivere le fiere in corso
    la loro durata ecc ecc


    Andrea

  4. #4
    infatti appunto...

    in un primo momento avevo pensato di utilizzare il campo testo dove inserisco "22-25 Ottobre 2008" e di suddividere la stringa in modo da ottenre 22 Ottobre 2008 solo che però essendo sito multi lingua poi essendo che a gestirlo ci sarà un'altra persona meno esperta ho pensato di utilizzare il campo data di inserimento ....

    che poi la data di inserimento non la visualizzo perchè si potrebbe confondere cn la data dell'evento.

    quindi di settare la data di inserimento con la data del primo evento... che poi l'inserimento verrà fatta o da me o da un'altro quindi diciamo è fattibile il fatto...

    la struttura va bene quindi dicevo di fare tipo nella query un controllo con la data attuale e data inserimento

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Ti sconsiglio caldamente di scrivere nel db una data inquesto formato 25 ottoble 2008 o anche
    25 10 2008

    O usi il campo data e quindi la memorizzi 2008-10-25 oppure un campo intero e usi il timestamp
    questo per un evidente problema di ordinamento.


    Poi in fase di visualizzazione la fai vedere come preferisci.

    Detto questo cosa centra la data di inserimento con quella dell'inizio della fiera.
    Se vuoi visualizzare le fiere che stanno per iniziare concentrati sulla data di inizio fiera non su quella dell'inserimento.



    Andrea

  6. #6
    @Andrea premetto che il tempo è sempre poco quindi sto utilizzando la tabella delle news duplicata per visualizzare le fiere che infine hanno la stessa struttura di tabella a differenza che le news mostro la data di inserimento mentre per le fiere la data di inserimento nn viene visualizzata...

    per la data dell'evento salvo nel db in qeusto modo 22 - 25 Ottobre 2008

    per la data di inserimento che viene automaticamente messa nel campo di testo ma che io la data di inserimento della fiere la posso anche modificare e quindi mettere una data anche oltre quella attuale però nel db viene salvata così 1224712800

    Non posso lavorare sul campo della data dell'evento perchè essendo utilizzando un campo di testo perchè io posso anche mettere diversamente quindi non posso fare ulteriori controlli mentre lavorando sulla data di inserimento c'è già il controllo utilizzando il sistema del TigreCalendar che se l'output della data nn è corretto mi segnala errore infatti salvo sempre 11-09-2008.

    Allora io pensavo di fare il controllo della data del server con quella dell'inserimento e quindi mostrare la query in ordine successiva alla data del server

    Ps scuste l'imbroglio di parole e la netta confusione

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Scusa se insisto ma per non fare 3 righe di codice che ti salvano le date in modo corretto
    fai dei giri assurdi per ottenere una cosa raffazzonata.

    Se hai già una struttura che ti visualizza quella data e non vuoi toccarla per questione di tempo
    allora aggiungi 2 ulteriori colonne con data di inizio e data di fine in fase di inserimento delle news prendi la data scritta 22 - 25 Ottobre 2008 la elabori un attimo per ottenere
    2008-10-22 e 2008-10-25 e te le salvi.

    A quel punto tutto quello già fatto rimane invariato e continua a funzionare pero se devi fare delle select sulle date il tutto ti viene immensamente semplificato.


    Andrea

  8. #8
    ok andrea faccio come dici tu ma io a ciò che non riesco ad arrivare come strutturare la query....

    se faccio semplicemente select * from fiere order by data

    mi da ordinato in base alle date ma tutte sia partendo esempio da oggi che fra 3 anni

    io devo visualizzare l'elenco delle date in base alla data attuale quindi vedere le prossime fiere quelle recenti si possono anche buttare a mare...

    diciamo che a fine sito dovrò mettere le vecchie fiere del 2007 fino al 2009

    però intando di farmi comparire a inizio elenco quelle partendo dalla data attuale del server

    nn so se rendo l'idea solo che io la query non la riesco astrutturare


  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Ti scrivo delle query a mano libera giusto per rendere l'idea non le ho provate


    le fiere che verranno dalla piu vicina alla piu lontana dell'anno corrente
    SELECT fiere WHERE dataInizio > NOW() and YEAR(dataInizio) < YEAR(NOW())

    le verie scadute vecchie di due anni dalla piu vicina alla piu lontana
    SELECT fiere WHERE dataFine < NOW() and YEAR(dataFine) > YEAR(NOW()) - 2 ORDER BY dataFine ASC

    le fiere in corso
    SELECT fiere WHERE dataInizio <= NOW() and dataFine > NOW()


    Andrea

  10. #10
    raga grazie dell'aiuto... ho risolto così:

    Codice PHP:
    $data=date("d-m-Y"time());
    $appoggio1=explode("-",$data);
    $data=mktime(0,0,0,$appoggio1[1],$appoggio1[0],$appoggio1[2]); 
    mi ricavo la data odierna del server e mi stampa: 1221084000

    mo le date sia di inizio che di fine evento sono salvate nel database così: 1222898400 oppure 1224712800

    nella query faccio: SELECT * FROM fiere WHERE data_inizio >= {$data} ORDER BY data_inizio

    raga ho risolto così e funziona mo quello che dico io se oggi è 11 settembre 2008 e tengo un evento dal 9 settembre al 15 settembre 2008 questo non mi viene visualizzato perchè la data di inizo è inferiore alla data attuale quindi mo come devo fare per fare la condizione e dire se inizio e fine data è compresa con la data attuale?

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.