problema con l'update della data

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve ragazzi,

Ho risolto un caso e ne apro un altro. Sono peggio dell'ispettore Colombo, ve lo ricordate ???? Risolveva i casi e poi la puntata successiva ne aveva un'altro fra le mani con il vecchio impermiabile, con la vecchia macchina, e citava sempre sua moglie nelle inchieste che faceva (secondo me non ne aveva manco una di moglie. Non si è ma vista....). A parte i ricordi degli anni 80. E siccome si tratta di date vengo subito al punto. Come in ogni forum che si rispetti, quando uno si registra viene chiesta in seguito la data di nascita in molto forum o chat (ad esempio fb), ci sono i classici 3 select giorno/mese/anno. Se seleziona la data e il gioco è fatto. Io vorei fare la stessa cosa. In parte l'ho fatta, ossia le select e l'array dei mesi. Però nel db myphpadmin, la data è in formato americano e con i trattini (yyyy-mm-gg), invece in fase di visualizzazione è italianizzata ossia gg/mm/aaaa. Ora quando vado a selezionare ovviamente non mi modifica la data. Come fare ???? Mi potete dare una mano per favore. Posto il codice di cosa ho combinato.

Questo è la parte riguardate alla selezione con i select:

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

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


?>
<form action= 'aggiornaprofilo.php' method="POST">

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

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

extract($_POST,EXTR_SKIP);

// Inizio Selezione data di nascita

//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>" ;


    echo "<center> <br><br>";
                    echo '<input type="submit" name="reg" value="Invio iscrizione" />';
                    echo '<input type="submit" name="uscita" value="Uscita" />';
                echo "</center> </form>";

?>

E poi c'è il file aggiornaprofilo.php:


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


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 = 'xxx@gmail.com'";  

if (mysql_query($qry)){ 
    echo "... Aggiornamento effettuato correttamente...."; 
     
} else { 
    echo "Errore: Non è stato possibile effettuare l'aggiornamento richiesto" or die (mysql_error()); 
} 

}

?>

Questa where, verrà successivamente sostituita con un controllo della sessione:

PHP:
  WHERE email = 'xxx@gmail.com'";

Mi potete aiutare per favore ??? Sono disperato non rieco a capire il perchè non gli piaccia.
 
Ciao, non ho visto un campo datadinascita
devi costruirtela prima di fare l'update
PHP:
$datadinascita = $anno . "-" . $mese . "-" . $giorno;
 
Ciao

Ciao criric,

Una cosa che non ho capito. Quindi la costruzione della data è come me l'hai postata te ????? Cioè così ????

PHP:
 $datadinascita = $anno . "-" . $mese . "-" . $giorno;

E poi volevo sapere, questa stringa, in quale modulo lo dovrei mettere, nel l'aggiungiprofilo.php oppure nell'index.php ^??????
 
lo devi aggiungere in aggiornaprofilo.php prima di fare l UPDATE
PHP:
if(isset($anno,$mese,$giorno, $citta, $provincia)){

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


$datadinascita = $anno . "-" . $mese . "-" . $giorno; 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma' 
    WHERE email = 'xxx@gmail.com'";
 
Ciao

Ciao cricric,

Ho fatto come da te suggerito ma ancora non va. Non mi updata la data. Ti posto il codice per intero. magari (sicuramente) ho sbagliato qualcosa io.

aggiornaprofilo.php

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);

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


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

 
 
if(isset($anno,$mese,$giorno, $citta, $provincia)){

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


$datadinascita = $anno . "-" . $mese . "-" . $giorno; 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma'  
    WHERE email = 'xxx@gmail.com'";  //ovviamente ho sostituito con la mia

//$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()); 

}
}
?>

perchè si ostina a non farmi l'update ???? Bah......
 
stampa la query, vedi se manca qualche dato
PHP:
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma'  
    WHERE email = 'xxx@gmail.com'";

echo $qry;
se non te la stampa vuol dire che non passi questa condizione
PHP:
if(isset($anno,$mese,$giorno, $citta, $provincia)){
 
Ciao

stampa la query, vedi se manca qualche dato
PHP:
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma'  
    WHERE email = 'xxx@gmail.com'";

echo $qry;
se non te la stampa vuol dire che non passi questa condizione
PHP:
if(isset($anno,$mese,$giorno, $citta, $provincia)){

Difatti su quella stringa c'è un cartellino giallo :( cosa debbo fare a questo punto ????
 
if(isset($anno,$mese,$giorno, $citta, $provincia)){
Non vedo nel form il campo per la citta e nemmeno quello della provincia
e non vedo nemmeno anno_diploma='$anno_diploma'
se vuoi aggiornare solo la data di nascita fai cosi
PHP:
if(isset($anno,$mese,$giorno)){
echo "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>"; 
$datadinascita = $anno . "-" . $mese . "-" . $giorno; 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita'
    WHERE email = 'xxx@gmail.com'";
 
Consiglio come ti avevo fatto vedere di fare un checkdate prima di compilare la data
PHP:
if(checkdate($mese,$giorno,$anno)){ //continui correttamente
 
Ciao

Non vedo nel form il campo per la citta e nemmeno quello della provincia
e non vedo nemmeno anno_diploma='$anno_diploma'
se vuoi aggiornare solo la data di nascita fai cosi
PHP:
if(isset($anno,$mese,$giorno)){
echo "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>"; 
$datadinascita = $anno . "-" . $mese . "-" . $giorno; 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita'
    WHERE email = 'xxx@gmail.com'";

Strano,

Città e proncia ci dovrebbero essere. Comunque, il punto era solo ora di modificare la data..... E' solo una prova che po lo dovrò assemblare nel vero form che sto facendo. anno_diploma l'avevo messo per vedere se aggiornava l'anno ma ancora non ho fatto nessun ciclo for e nessun aggiornamento, l'ho messo cos' tanto per metterlo.
 
Ciao

Non vedo nel form il campo per la citta e nemmeno quello della provincia
e non vedo nemmeno anno_diploma='$anno_diploma'
se vuoi aggiornare solo la data di nascita fai cosi
PHP:
if(isset($anno,$mese,$giorno)){
echo "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>"; 
$datadinascita = $anno . "-" . $mese . "-" . $giorno; 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita'
    WHERE email = 'xxx@gmail.com'";

Comunque i campi città e provincia stanno in index.php, non ti avevo postato il form perchè pensavo che non ti servisse...Comunque eccolo:

index.php

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

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


?>
<form action= 'aggiornaprofilo.php' method="POST">

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

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

extract($_POST,EXTR_SKIP);

//echo 'Città:  <input type="text" name="citta"  maxlength="80" size ="32"> <br> <br>';
//echo 'provincia:  <input type="text" name="provincia"  maxlength="30" size ="32"> <br> <br>';
//echo 'Data di nascita:  <input type="text" name="datadinascita"  maxlength="10" size ="32"> <br> <br>';

 
// Inizio Selezione data di nascita

//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>" ;

// Inizio selezione Città
echo"<br> <br>";

echo "Città: ";

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

 // Inizio selezione Province
 
echo " Provincia: ";

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


    echo "<center> <br><br>";
                    echo '<input type="submit" name="reg" value="Invio iscrizione" />';
                    echo '<input type="submit" name="uscita" value="Uscita" />';
                echo "</center> </form>";

?>
 
No, che centrano gli altri campi? Io intendevo proprio come ti ho mostrato prima di compilare la data

Scusami,

Quindi un if a parte, cioè un secondo if Ho fatto in questa maniera ma non va, me la puoi correggere per favore ????

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);


$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
if(checkdata($anno, $mese, $giorno));

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

$giorno = $_POST['giorno'];
$mese = $_POST['mese'];
$anno = $_POST['anno'];

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

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


$datadinascita = $anno . "-" . $mese . "-" . $giorno; 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma'  
    WHERE email = 'paperinik4@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()); 

}
}
?>
 
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); 

if(isset($citta, $provincia) && checkdate($mese, $giorno, $anno)){ 

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


$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
$qry = "UPDATE utenti SET  
    datadinascita='$datadinascita',  
    citta='$citta',  
    provincia='$provincia',  
    anno_diploma='$anno_diploma'   
    WHERE email = 'paperinik4@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());  

} 
}
 
Ciao

P.S.: Ho provato a farlo girare e mi restituisce questo errore:

Fatal error: Call to undefined function checkdata() in /volume1/web/utenti/provaaggiornaprofilo/aggiornaprofilo.php on line 12
 
Ciao

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); 

if(isset($citta, $provincia) && checkdate($mese, $giorno, $anno)){ 

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


$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
$qry = "UPDATE utenti SET  
    datadinascita='$datadinascita',  
    citta='$citta',  
    provincia='$provincia',  
    anno_diploma='$anno_diploma'   
    WHERE email = 'paperinik4@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());  

} 
}

Adesso va, ma non mi fa ugualmente l'aggiornamento della dataNon capisco il perchè......

P.S.: Mi da sempre ilcartellino giallo su if (isset ecc.ecc.)
 
Adesso va, ma non mi fa ugualmente l'aggiornamento della dataNon capisco il perchè......

P.S.: Mi da sempre ilcartellino giallo su if (isset ecc.ecc.)

Prima hai detto che $anno_diploma non lo avevi ancora settato e forse anche $citta e $provincia controlla il form e i valori, se non esegue la query vuol dire che quelle variabili non vengono inviate
 
Ciao

Ciao Nefyt,

Allora, sono sicuro su città e provincia, perchè mi hai aiutato sempre te a risolvere il problema del fatto che non riuscivo a fare l'update. Quindi le variabili ci sono e sono sicuro, l'unica variabile che c'è in più è anno_diploma che sta solo sulla query dell'update. poi mi sono dedicato alla data che non vuole sapere di essere aggiornata e ripeto ho fatto tutte le prove possibili con le tue correzioni e non capisco il perchè..... posso anche eliminare la variabile anno_diploma se può essere un elemento di disturbo, visto che non è settatat da nessuna parte ma solo dentro la query di uploda.
 

Discussioni simili