Visualizzazione risultati 1 fino 2 di 2

Discussione: Problema update con data di nascita

  1. #1
    Guest

    Predefinito Problema update con data di nascita

    Salve ragazzi,

    Ho il seguente problema. Avete presente com'è composta la data di nascita che si compila nei vai forum ??? In genere ci sono tre campi con tre menu a discesa. Ebbene, il problema è proprio questo, quando vado ad aggiornare il campo, siccome nel database di mysql è in formato americano quindi yyyy-gg-mm (o mm-gg nonm ricordo), invece nella fase di visualizzazione viene italianizzato ossia gg/mm/aaaa. Ovviamente quando vado ad aggiornare nonmi aggiorna un bel tubo. Posto una parte di codice, non so come risolvere il problema spero ch emi date una mano voi. Il codice è il seguente:

    Codice PHP:

    //Giorno

    echo "Giorno: ";
    echo
    "<select name=\"giorno\">";
    echo
    "<option value=\"\"> seleziona </option>";
    for(
    $gg=1; $gg<=31; $gg++){
    if(
    strlen($gg)< 2){$gg = "0".$gg;}
    echo
    "<option value=\"$gg\"> $gg </option>";
    }
    echo
    "</select>";


    //Mese

    echo " Mese: ";

    echo
    "<select name=\"mese\">";
    foreach(
    $mese as $valore){
    echo
    "<option value=\"$valore\">$valore";
    //echo "<option value=\"$valore\">$valore";
    echo "</option> ";
    }
    echo
    "</select>";

    //Anno

    echo " Anno: ";
    $da=1972;
    $al=2014;
    echo
    "<select name=\"anno\">";
    echo
    "<option value=\"\"> seleziona </option>";
    for(
    $aa=$da; $aa<=$al; $aa++){
    echo
    "<option value=\"$aa\"> $aa </option>";
    }
    echo
    "</select>" ;
    Questo che ho postato, fa vedere solo la parte del menù a tendine a discesa. Invece questo è il file che si occupa di fare l'update di tutti i campi richiesti.

    aggironaprofilo.php

    Codice PHP:

    <?php
    require_once("connetti.php");

    echo
    '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';

    foreach(
    $_POST as $key => $value) $_POST[$key] = mysql_real_escape_string(strtolower(trim ($value)));

    extract($_POST,EXTR_SKIP);

    //formatta la data di nascita



    //$email NON VIENE RECUPERATA DA NESSUNA PARTE, RIVEDILA

    if(isset($datadinascita, $citta, $provincia)){


    echo
    "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>";


    $qry = "UPDATE utenti SET
    datadinascita='
    $datadinascita',
    citta='
    $citta',
    provincia='
    $provincia',
    anno_diploma='
    $anno_diploma'
    WHERE email = 'miaemail@gmail.com'"
    ;

    //$qry="UPDATE utenti SET datadinascita='$datadinascita', citta='$citta', provincia='$provincia' WHERE email='".$email."";

    if (mysql_query($qry)){
    echo
    "... Aggiornamento effettuato correttamente....";

    } else {
    echo
    "Errore: Non è stato possibile effettuare l'aggiornamento richiesto" or die (mysql_error());
    }

    }

    ?>
    Considerate una cosa, questo è un form di prova, per non incasinare l'originale. Come vedete non c'è nessun login e passqword per entrare. Quindi un semplice form. Invece una volta che ho risolto il problema, dovrò fare in modo che ogni utente possa continuare a modificare il suo profilo senza che viene visualizzato i dati dell'altro utente. Mi hanno consigliato a posto di questa riga:

    Codice PHP:

    WHERE email
    = 'miaemail@gmail.com'"; //'laggiornamento avviene solo se metto la mia emal non so il perchè....
    A posto dell'email dovrei controlla re il tuoo con id_session. Spero in un vostro aiuto, sono rimasto bloccato e non riesco ada ndare avanti. Grazie.

  2. #2
    Guest

    Predefinito

    devi farti una funzione che trasformi la data dal formato italiano a quello usato da MySQL. Una cosa del tipo che ti allego... è banale ma funziona, devi solo adattarla al formato originale della tua variabile $datadinascita.

    Codice PHP:

    // RICEVE UNA DATA AMERICANA E LA RESTITUISCE ITALIANA
    function dataitalia($dataamerica)
    {

    $anno = substr($dataamerica,0,4);
    $mese = substr($dataamerica,5,2);
    $giorno = substr($dataamerica,8,2);

    $ritorno = $giorno."-".$mese."-".$anno;

    return
    $ritorno;

    }

    // RICEVE UNA DATA ITALIANA E LA RESTITUISCE AMERICANA
    function dataamerica($dataitalia)
    {

    $anno = substr($dataitalia,6,4);
    $mese = substr($dataitalia,3,2);
    $giorno = substr($dataitalia,0,2);

    $ritorno = $anno."-".$mese."-".$giorno;

    return
    $ritorno;

    }
    Ultima modifica di pastamadre : 05-02-2013 alle ore 11.21.32 Motivo: correzione codice PHP

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •