Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Modificare una data

  1. #1

    Modificare una data

    SAlve, sto facendo un sito e per la prima volta ho a che fare con "problemi" di date.
    Sto facendo un sistema tipo bacheca, in cui l'utente può indicare la data di un avvenimento.
    I dati sono inseriti in un db mysql, in un campo del tipo "datetime", quindi nella forma YYYY-MM-DD HH:SS.
    Tale data viene inserita tramite un form con delle select, il problema è che l'amministratore del sito dovrà potere modificare tale data. Quindi, quando selezionerà "modifica evento", si caricherà la pagina del form con i dati preimpostati, da modificare.

    Domanda: come faccio per fare in modo che nelle select per anno, mese e anno siano "caricati" quelli inseriti nel db?

    Thanks,
    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Una volta che hai le tre variabili $giorno,$mese e $anno fai un semplice confronto tra le option delle tue select.

    Se la option è == alla variabile aggiungi l'attributo selected.

  3. #3
    Dopo aver preso con un select(sql) la riga che interessa fai uno switch con degli echo ad ogni case dove ogni volta la parte del select (html) uguale a quella del select(sql) ha l'attributo selected="selected".

  4. #4
    Originariamente inviato da nicola75ss
    Una volta che hai le tre variabili $giorno,$mese e $anno fai un semplice confronto tra le option delle tue select.

    Se la option è == alla variabile aggiungi l'attributo selected.
    Ma devo fare questo per tutti i 30 giorni e i 12 mesi?
    Scusate ma non sono molto pratico di cicli for :-(

    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  5. #5
    Niente for...
    switch

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Questo è un esempio per l'anno.
    Codice PHP:
    <?php
    $anno 
    2006// recuperato dal tuo db

    echo "<select name=\"anno\">";
    for (
    $i 2004$i <= 2010$i++)
    {
    echo (
    $i == $anno) ? "<option value=\"$i\" selected>$i</option>" "<option value=\"$i\">$i</option>";
    // le parentesi del for per una riga sono opzionali, le ho messe per chiarezza
    echo "</select>";
    ?>
    Stessa cosa fai per i giorni con un ciclo for da 1 a 31 e per i mesi da 1 a 12.
    In quello degli anni è a discrezione tua. Io qui per esempio ti ho messo da 2004 a 2010.

  7. #7
    Ok, perfetto, grazie.
    Ne approfitto per fare un'altra domanda: sto cercando di usare lo stesso codice per quanto riguarda il giorno, però se metto:

    Codice PHP:
    <select name=\"giorno\">");
        for (
    $i 01$i <= 31$i++)
            {echo (
    $i == $giorno) ? "<option value=\"$i\" selected>$i</option>" "<option value=\"$i\">$i</option>";
            } 
    // le parentesi del for per una riga sono opzionali, le ho messe per chiarezza
        
    echo ("</select> 
    il valori sono: 1, 2 -> 10, insomma, io dovrei avere un valore "01", "02", etc, sempre valori a due cifre (per poi inserire nel db). Faccio semplicemente una sostituzione del tipo:

    if ($giorno == "1") {$giorno = "01" ;}

    Thanks!
    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    prova così

    $giorno = $giorno < 10 ? substr($giorno,1) : $giorno;

    se il giorno è inferiore a 10 elimini lo 0 iniziale.

    Ora non ricordo a memoria però tra le opzioni di date_format c'è anche il parametro per recuperare giorni e mesi senza lo 0 iniziale se preferisci con quel metodo.
    Guarda tra le pillole di piero.mac.


    edit: ho fatto una prova adesso e funziona anche se ce lo 0 davanti senza bisogno di usare substr().

  9. #9
    Originariamente inviato da nicola75ss
    prova così

    $giorno = $giorno < 10 ? substr($giorno,1) : $giorno;

    se il giorno è inferiore a 10 elimini lo 0 iniziale.

    Ora non ricordo a memoria però tra le opzioni di date_format c'è anche il parametro per recuperare giorni e mesi senza lo 0 iniziale se preferisci con quel metodo.
    Guarda tra le pillole di piero.mac.


    edit: ho fatto una prova adesso e funziona anche se ce lo 0 davanti senza bisogno di usare substr().
    Ehm, sinceramente non ho capito dove dovrei inserire quel pezzo di codice :-/
    CMQ io DEVO inserire lo zero, davanti, non lo devo eliminare!!

    /me si sta incasinando...

    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da nicola75ss
    edit: ho fatto una prova adesso e funziona anche se ce lo 0 davanti senza bisogno di usare substr().
    VVoVe:


    Non ho ancora capito cosa te ne faccia di un campo datetime se poi vuoi modificare solo la data. Tieni conto che se da un campo di questo tipo estrai solo la data senza l'ora e dopo vai ad aggiornarla, l'ora verrà settata a zero.

    Per recuperare i 3 parametri di giorno, mese e anno lasciando la data nel formato originale all'interno della query basta che faccia

    list ($anno,$mese,$giorno) = explode("-",$data);

    mostri le 3 select come ti ho spiegato, usi un campo hidden per passare l'identificativo del record da aggiornare e prima dell'aggiornamento concateni le variabili.

    $data = $anno.'-'.$mese.'-'.$giorno;

    Anche se giorno e mese fossero inferiori a 10 mysql provvederà a metterci lo 0 davanti. ciao.

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.