Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    8

    errore grave su modifica date

    Ciao a tutti ci sto sbattendo la testa...
    ho uno script nel quale richiamo i dati di un utente da un db mysql
    tra questi dati c'è anche la data di nascita in unixtimestamp
    per la visualizzazione tutto ok
    per la modifica un po meno!
    Vi spiego:

    come prima cosa ricavo l'explode della stringa unixtimestamp per le singole variabili come già qualcuno di voi mi ha gentilmente consigliato:

    <?
    $data = date("F/d/Y", $row[datanascita]);
    list($mese, $giorno, $anno) = explode("/", $data);
    ?>

    ora preparo una select in cui voglio che mi appaia la data già inserita nel database come valore di default.

    questa la select per il giorno dove la prima è la data che ricavo dal database:

    <select name="modGIORNO">
    <option value="<? echo $giorno;?>"><? echo $giorno;?></option>
    <?
    for ($i=1; $i<=31; $i++)
    echo "<option value=\"$i\">$i</option>";
    ?>
    </select>

    questa la select per il mese:


    <select name="modMESE">

    <option value="<? echo $mese;?>"><? echo $mese;?></option>
    <option value="01">Gennaio</option>
    <option value="02">Febbraio</option>
    <option value="03">Marzo</option>
    <option value="04">Aprile</option>
    <option value="05">Maggio</option>
    <option value="06">Giugno</option>
    <option value="07">Luglio</option>
    <option value="08">Agosto</option>
    <option value="09">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    e questa per l'anno:

    <select name="modANNO">
    <option value="<? echo $anno;?>"><? echo $anno;?></option>
    <?
    for ($a=1930; $a<=2000; $a++)
    echo "<option value=\"$a\">$a</option>";
    ?>
    </select>




    Il tutto sembrerebbe funzionare ottimamente... tranne quando inserisco determinate date! tipo il 13 gennaio 1959 dice di modificarlo ma quando vado a vedere ha inserito in effetti 13 dicembre 1958! aiutooooooooooooooo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    8
    il codice era perfetto porca miseria!

    L'errore stava nel fatto che avessi fatto un addslashes e uno stripslashes nella pagina di invio...

    o almeno credo!

    ho eliminato:

    $modGIORNO= addslashes(stripslashes($modGIORNO));
    $modMESE= addslashes(stripslashes($modMESE));
    $modANNO= addslashes(stripslashes($modANNO));

    e pare funzionare... solo che credo di non capirne il motivo...
    per le slashes prima lo strippo e poi le aggiungo...
    non dovrebbe esserci problema!

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    8
    Non so che dire... mi rendo conto solo ora che continua a generare errori random!
    Tipo la prima volta che faccio una modifica a un record...
    possibile?
    ogni volta che faccio la prima modifica a un record mi cambia la data a cavolo!
    secondo me è qualcosa nel formato che non va...
    lo reinserisce in formato diverso...

    sto diventando matta!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    8
    non c'entra nulla se è la prima o la ennesima modifica
    ho capito ogni volta che la data rimane quella che legge dal database sbaglia a reinserirla!

    così inserisco la data nel database:

    $datanascita = mktime("0", "0", "0", $mese, $giorno, $anno);

    così la estrapolo:

    $data = date("F/d/Y", $row[datanascita]);
    list($mese, $giorno, $anno) = explode("/", $data);

    poi la visualizzo alll'interno delle select

    e la reinserisco:

    $modDATANASCITA = mktime("0", "0", "0", $modMESE, $modGIORNO, $modANNO);

    aiutoooooooooooooooooooooooooo

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    8
    Mi arrendo vado a dormire son quasi le tre...

    buonanotte!

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    A parte il fatto che fare addslashes e stripslashes assieme, senza altri controlli, è una cosa un po' demenziale, quello che mi lascia estremamente perplesso è la tua scelta di usare un timestamp unix per delle date di nascita.
    Immagino saprai che lo unix timestamp parte dal 1° gennaio 1970. Mi risulta che con i valori negativi si possa anche andare indietro, ma solo su sistemi Unix. Se lavori su Windows, escluderei che tu possa ottenere risultati presentabili con date inferiori al 1970. I campi di tipo DATETIME ti facevano tanto schifo?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    8
    Ciao! grazie infinite per la risposta! Beh dunque io sono su linux... comunque accetto il consiglio e cerco di modificare il tutto...
    provo a modificare sia l'inserimento primario e quindi anche il secondario!

    io sapevo diverso però... leggo da manuale:

    "il valido intervallo del timestamp è abitualmente
    da Fri, 13 Dec 1901 20:45:54 GMT
    a Tue, 19 Jan 2038 03:14:07 GMT."



    grazie infinite ti tengo aggiornato!

    Cecile

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.