Ho riunito le prove con le sessioni, ma l'update non va

paperinik4

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

Sono ritornato per ri-rompervi le scatole. Ho unito tutto quanto le prove che avevo fatto singolarmente le ho unite con quello del mio progetto ufficiale. Speravo di azzeccarci al primo colpo ed invece niente non va. Ora posto sia l'area riservata tutta quanta, che l'aggiornamentoprofilo. Spero come al solito in una vostra delucidazione.

paginaris.php (area riservata che poi richiama il file aggiornaprofilo)

PHP:
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">
 <link rel="stylesheet" type="text/css" href="thumb.css">
    <?php
require_once("connetti.php");
    session_start();
if(isset($_COOKIE["ultimoaccesso"])) {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $ultimo_cookie = $_COOKIE["ultimoaccesso"];
    $me= "Il tuo ultimo accesso è stato il:  $ultimo_cookie";
} else {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $me= "Non ti sei mai collegato a questa pagina";
}

session_start();

if(isset($_SESSION['nome'])) {

$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

 
 //  $array=mysql_fetch_array($array);  
    
}


  ?>
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>benvenuto</title>

<body>
    
<?php



$array =  strtoupper($_SESSION['nome'] );     
 if(isset($_SESSION['nome']))  {   

    echo "<div class=\"messaggio\"><h1>";

    
echo "BENVENUTO ".$array."<br />";
    
    echo $me;
    echo "</h1></div>";
    echo "</body></html>";

}else{
    header("Location:failed.php");      
    exit();   
 
//}

}

//Visualizza l'avatar contenuto nel db

//$query =mysql_query("SELECT immagine FROM immagine WHERE id = $id");
 
// Codice che unisce due o più tabelle

$query =mysql_query("SELECT utenti.id, utenti.nome, immagine.immagine FROM utenti INNER JOIN 
 immagine ON utenti.id =  immagine.id_nome WHERE id_nome = ".$_SESSION['id']);


while($foto=mysql_fetch_array($query))
    
{

 ?>
    <br> <br>        
    <img src="immages/<?php echo$foto["immagine"]?>" class="immages">
    
    <?php
}
?>

<!--Inizio procedura per accettazione dei termini e visualizzazione della seconda e terza pagina -->
  
<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title></title> 
    </head> 
    <body> 
 <center> <br> <br> 
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js'></script>
<!--  <body style='background:#000'> -->

<link rel="stylesheet" type="text/css" href="coloredisfondo.css">



    <style>
        
        input[type='button']{padding:10px;}
    </style>
 <?php 
require_once("connetti.php"); 
$id_user = $_GET['id']; # o $_GET['username']; 
$page = (int)$_GET['page']; 
if(EMPTY($page)) $page = 1; 
$query_user = "SELECT * FROM utenti WHERE id='$id_user'"; 
$result_query = mysql_query($query_user);
$assoc_rows = mysql_fetch_assoc($result_query);
switch($page)
{
    case 1:
?>
     <div style='width:600px;  font-family:Comic Sans MS'> 

    <!--Inizio bordatura testo arrotondato-->
    
  <style type="text/css">
.bordato{
	border:2px solid #000000;
	border-radius: 80px 80px 80px 80px;
	-moz-border-radius: 80px 80px 80px 80px;
	-webkit-border-radius: 80px 80px 80px 80px;
}
</style>
<body>
<div class="bordato">
<center>BENVENUTI NEL SOCIAL NETWORK PIU' LIBERO DEL MONDO 
================================================================= 
</center>  

<p align="left">  

Se stai leggendo questo regolamento è perchè ti sei iscritto a tale sito e di conseguenza, prima di andare avanti, devi accettare tre regole fondamentali. <br/> 

Tali regole, servono per non creare dispute e conversazioni spiacevoli sia con gli utenti, sia con gli amministratori.  

Non bisogna essere maggiorenni per iscriversi. Basta avere un'età dai 12 anni in su. Le tre regole fondamentali sono le seguenti:  <br></p> 
<p align="left"> 
1) Vietato bestemmiare pena si viene automaticamente cancellati dal sito senza possibilità di registrarsi con un ulteriore username; <br/></p> 
<p align="left">  

2) Vietato parlare di politica. La politica è causa di discussioni e punti di vista differenti l'uno dall'altro. Ci saranno tre avvisi,  
dopo di che pena esclusione dal sito e cancellazione perenne dal database;<br/> </p> 

<p align="left">  
3) Rispettare gli utenti iscritti. <br/> </p> 

<p align="left">          

Se accetti le seguenti regole, clicca su "avanti" altrimenti su "cancella", e sarai automaticamente cancellato dal database.  

Grazie di aver letto il regolamento e buon divertimento. 
</p>    
<input id='regolamento' type='checkbox' value='Accetta il regolamento'>Accetta il regolamento 

<br><br>
<input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />
<input type="button" onClick="window.location.href='cancellazione.php';" style='padding:10px' value="Cancellati" />

<input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' disabled='disabled'/>  



</div>
 
    

<?php
    case 2:
        
        //break;
    ?>
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">


    <?php

// Ricerca e visualizza l'utente che si è connesso con le info

$query = mysql_fetch_array(mysql_query("SELECT * FROM utenti WHERE id='".$_SESSION['id']."'"));


echo "<br> <br>";
        echo '<p align="left">';
        echo " Cognome: ". $query['cognome']; 
        echo '<p align="left">';
        echo '<p align="left">';
        echo "Nome: ". $query['nome']; 
        echo "<br> ";
        echo '<p align="left">';
        echo "Username: ". $query['username']; 
        echo "<br>";
        echo '<p align="left">';
        echo "EMail: ".$query['email'];

?>
    
<p align="left">          

Data di Nascita Giorno: 

<?php 

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

<align="left">

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

Mese:

<?php

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

 echo " Anno: ";
 
//anno
$da=1960;
$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>" 
 ?>
<align="left">          

<br>
<p align="left">          

Città:

<?php

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

Provincia:

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




<br><br> <center>
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
        <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>
        <!--<input type="button" onClick='getpage("<?=$page+1?>")' style='padding:10px' value="Aggiorna Profilo" />-->
    
       
<form action="aggiornaprofilo.php" method="post">

        <input type="submit"  style='padding:10px' value="Aggiorna Profilo" />
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />

</form>

    </center>
    <?php
    break;
    case 3:
    ?>
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
    <?php
    break;
}
?>
<script> 
$('input[id=regolamento]').click(function(){
    var input = $('input[value="Avanti"]');
    if($(this).is(':checked')) input.removeAttr('disabled');
    else input.attr('disabled','disabled');
});
function getpage(page)
{
    location.href = '?page='+page;
}
</script>

parte riguardante l'aggiornamento sempre nell'area riservata:

PHP:
<!--Inizio procedura per accettazione dei termini e visualizzazione della seconda e terza pagina -->
  
<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title></title> 
    </head> 
    <body> 
 <center> <br> <br> 
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js'></script>
<!--  <body style='background:#000'> -->

<link rel="stylesheet" type="text/css" href="coloredisfondo.css">



    <style>
        
        input[type='button']{padding:10px;}
    </style>
 <?php 
require_once("connetti.php"); 
$id_user = $_GET['id']; # o $_GET['username']; 
$page = (int)$_GET['page']; 
if(EMPTY($page)) $page = 1; 
$query_user = "SELECT * FROM utenti WHERE id='$id_user'"; 
$result_query = mysql_query($query_user);
$assoc_rows = mysql_fetch_assoc($result_query);
switch($page)
{
    case 1:
?>
     <div style='width:600px;  font-family:Comic Sans MS'> 

    <!--Inizio bordatura testo arrotondato-->
    
  <style type="text/css">
.bordato{
	border:2px solid #000000;
	border-radius: 80px 80px 80px 80px;
	-moz-border-radius: 80px 80px 80px 80px;
	-webkit-border-radius: 80px 80px 80px 80px;
}
</style>
<body>
<div class="bordato">
<center>BENVENUTI NEL SOCIAL NETWORK PIU' LIBERO DEL MONDO 
================================================================= 
</center>  

<p align="left">  

Se stai leggendo questo regolamento è perchè ti sei iscritto a tale sito e di conseguenza, prima di andare avanti, devi accettare tre regole fondamentali. <br/> 

Tali regole, servono per non creare dispute e conversazioni spiacevoli sia con gli utenti, sia con gli amministratori.  

Non bisogna essere maggiorenni per iscriversi. Basta avere un'età dai 12 anni in su. Le tre regole fondamentali sono le seguenti:  <br></p> 
<p align="left"> 
1) Vietato bestemmiare pena si viene automaticamente cancellati dal sito senza possibilità di registrarsi con un ulteriore username; <br/></p> 
<p align="left">  

2) Vietato parlare di politica. La politica è causa di discussioni e punti di vista differenti l'uno dall'altro. Ci saranno tre avvisi,  
dopo di che pena esclusione dal sito e cancellazione perenne dal database;<br/> </p> 

<p align="left">  
3) Rispettare gli utenti iscritti. <br/> </p> 

<p align="left">          

Se accetti le seguenti regole, clicca su "avanti" altrimenti su "cancella", e sarai automaticamente cancellato dal database.  

Grazie di aver letto il regolamento e buon divertimento. 
</p>    
<input id='regolamento' type='checkbox' value='Accetta il regolamento'>Accetta il regolamento 

<br><br>
<input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />
<input type="button" onClick="window.location.href='cancellazione.php';" style='padding:10px' value="Cancellati" />

<input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' disabled='disabled'/>  



</div>
 
    

<?php
    case 2:
        
        //break;
    ?>
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">


    <?php

// Ricerca e visualizza l'utente che si è connesso con le info

$query = mysql_fetch_array(mysql_query("SELECT * FROM utenti WHERE id='".$_SESSION['id']."'"));


echo "<br> <br>";
        echo '<p align="left">';
        echo " Cognome: ". $query['cognome']; 
        echo '<p align="left">';
        echo '<p align="left">';
        echo "Nome: ". $query['nome']; 
        echo "<br> ";
        echo '<p align="left">';
        echo "Username: ". $query['username']; 
        echo "<br>";
        echo '<p align="left">';
        echo "EMail: ".$query['email'];

?>
    
<p align="left">          

Data di Nascita Giorno: 

<?php 

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

<align="left">

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

Mese:

<?php

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

 echo " Anno: ";
 
//anno
$da=1960;
$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>" 
 ?>
<align="left">          

<br>
<p align="left">          

Città:

<?php

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

Provincia:

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




<br><br> <center>
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
        <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>
               
<form action="aggiornaprofilo.php" method="post">

        <input type="submit"  style='padding:10px' value="Aggiorna Profilo" />
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />

</form>

    </center>
    <?php
    break;
    case 3:
    ?>
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
    <?php
    break;
}
?>
<script> 
$('input[id=regolamento]').click(function(){
    var input = $('input[value="Avanti"]');
    if($(this).is(':checked')) input.removeAttr('disabled');
    else input.attr('disabled','disabled');
});
function getpage(page)
{
    location.href = '?page='+page;
}
</script>

In ultimo, il file aggiornaprofilo.php

PHP:
<?php
session_start();
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;   

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

if(isset($citta, $provincia) && checkdate($mese, $giorno, $anno)) {     //Qua da sempre cartellino giallo, è come se ci fosse un qualcosa che non gli piaccia.....
    
 
$qry = "UPDATE utenti SET  
    datadinascita='$datadinascita',  
    citta='$citta',  
    provincia='$provincia',  
    anno_diploma='$anno_diploma'  
    WHERE email = '".$_SESSION['id']."'"; 

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

}
}   
?>

Spero in voi nel vostro prezioso aiuto.

P.S.: Cosa cambia se ci metto la mia email oppure id_session ????? Tenete presente ch enon ho id_utente ma solo id autoincrement..
 
Quale è il problema? Spiega un po' cosa vorresti accadesse e cosa accade.
 
Ciao

Ciao Longo a tutto lo staff,

Il problema è il seguente. Non viene aggiornato il profilo con la session. Invece vorrei che il profilo si aggiornasse con la session come mi avevano consigliato. In pratica ti posto il codice per capire meglio. Ho fatto un piccolo esperimenti di aggiornamento senza la sessione aitato da Nefyt. I file sono i seguenti:

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


// 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\">";
echo "<option value=\"\"> seleziona </option>";

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

?>

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;   

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

if(isset($citta, $provincia) && checkdate($mese, $giorno, $anno)) { 
    echo $datadinascita;
 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma' 
    WHERE email = '[email protected]'";  

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

}
}   
?>

Eseguendo questa parte di codice, fa tutti gli aggiornamenti da me richiesti, quindi città, provincia e data di nascita. Però ora lo debbo inserire dove c'è il vero programma. ossia dove si entra con il login e la password. Ho provato, ma non gli piace. dove sbaglio ???? Questo che posto è solo la parte riguardante all'aggiornamento del profilo ossia i campi che vengono visualizzati, una volta iscritti e loggati:

il file si chiama paginaris.php (detta anche area riservata):

PHP:
<?php 

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

<align="left">

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

Mese:

<?php

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

 echo " Anno: ";
 
//anno
$da=1960;
$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>" 
 ?>
<align="left">          

<br>
<p align="left">          

Città:

<?php

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

Provincia:

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




<br><br> <center>
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
        <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>
        <!--<input type="button" onClick='getpage("<?=$page+1?>")' style='padding:10px' value="Aggiorna Profilo" />-->
    
       
<form action="aggiornaprofilo.php" method="post">

        <input type="submit"  style='padding:10px' value="Aggiorna Profilo" />
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />

</form>

    </center>
    <?php
    break;
    case 3:
    ?>
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
    <?php
    break;
}
?>

E questo invece, è il file aggiornaprofilo.php

PHP:
<?php
session_start();
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;   

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

if(isset($citta, $provincia) && checkdate($mese, $giorno, $anno)) { 
    echo $datadinascita;
 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    WHERE email = '['[email protected]']";  

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

}
}   
?>

A parte la sintassi sbagliata della WHERE, mi hanno consigliato di metterci id_session, ma non fa l'aggiornamento. :( In pratica la riga di codice che mi hanno consigliato è la seguente:

PHP:
    WHERE email = '".$_SESSION['id_utente']."'";


Ma purtroppo ho provato e non va. Ossia la query dell'update sarebbe così:

PHP:
<?php
session_start();
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;   

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

if(isset($citta, $provincia) && checkdate($mese, $giorno, $anno)) { 
    echo $datadinascita;
 
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma' 
//    WHERE email = '['[email protected]']";  
    WHERE email = '".$_SESSION['id_utente']."'";  


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

}
}   
?>

Fra le altre cose, forse sono io ignorante in materia sicuramente, id_utente (nel mio db non esiste), ma esiste solo id autoincrement.

So di sbagliare ma non so dove :( Mi potete aiutare per favore ???? Spero di essermi spiegato bene stavolta....
 
Intanto hai sbagliato a scrivere la query e (non sapendo ne leggere ne scrivere) ci si può accorgere dai colori :)
Inizia sostituendo la tua query con questa.
PHP:
$qry = "UPDATE utenti SET  
    datadinascita='$datadinascita',  
    citta='$citta',  
    provincia='$provincia',  
    anno_diploma='$anno_diploma',
//    WHERE email = '['[email protected]']";   
    WHERE email = '".$_SESSION['id_utente']."'";
 
Ciao

Ciao Longo,

Nella tua query mi da errore. Scusa ma stavo pisolando te la posto:

PHP:
$qry = "UPDATE utenti SET  
    datadinascita='$datadinascita',  
    citta='$citta',  
    provincia='$provincia',  
    anno_diploma='$anno_diploma',
//    WHERE email = '['[email protected]']";   
    WHERE email = '".$_SESSION['id_utente']."'";

Risolto l'errore, ho eliminato la riga commentata (strano non la doveva leggere per niente o sbaglio ????)

P.S.: L'ho modificata come da te consigliato, ma niente non mi fa alcuna modifica
 
Ultima modifica:
Prova a stampare la variabile che contiene la query e vediamo dove è il problema.
 
Ciao

Prova a stampare la variabile che contiene la query e vediamo dove è il problema.

Ok scusa per il ritardo nella risposta. Ma ho avuto qualche piccolo problemino. Ora sono di nuovo al pc e ti faccio sapere subito. Ho provato a stampare la query ho fatto in questa maniera, spero di non aver sbagliato:

PHP:
echo $qry;

Ma si ferma a questa scritta qua e non va avanti, ossia non mi stampa niente:

Esecuzione in corso dell'aggiornameto profilo...
 
ciao

Ciao a tutti,

Nessuna idea di come risolvere il problema ???? Ho fatto varie prove, ma sempre con lo stesso risultato. Ossia un piffero di aggiornamento. Sta li imbambolato on il messaggio: "esecuzione in corso....". Spero sempre in voi grazie.
 
// è dentro la query quindi non funzionerà

PHP:
$qry = "UPDATE utenti SET  
    datadinascita='$datadinascita',  
    citta='$citta',  
    provincia='$provincia',  
    anno_diploma='$anno_diploma'
    WHERE id = ".$_SESSION['id_utente'];  
//id dovrebbe essere di tipo int no? quindi non necessita di ulteriori apostrofi

Cosi se hai settato correttamente la sessione e tutte le variabili dovrebbe andare


Comunque ti consiglio di imparare le regole basi del debugging in php cosi da poter risolvere eventuali problemi minori anche da te:

-Analizza le condizioni e assicurati che avvengano
-var_dump(), print_r() e simili devono essere il tuo punto di riferimento
-Le query se non sei sicuro eseguile o cambiale sempre sul phpmyadmin, eviti di perdere tempo dopo
-Se non ti ricordi qualche funzione o qualcosa c'è sempre il vangelo o la bibbia
-L'ide o l'editor sono tuoi amici, ascoltali nel caso ti segnalino qualcosa
-Tieni sempre il codice ordinato o commentato in modo da potertici orientare
 
Ultima modifica:
ciao

Il campo id_utenti nel mio db non esiste, esiste solo id = int autoincrement, e poi quella query me l'avevi sitemata tu. Ricordi ???? Il codice dovrebbe essere giusto, perché prima senza session_start (); funzionava, amesso session_start (); non va. E non capisco il perchè. Facendo leprove e mettendo in where il semplice id non va ugualmente. Non va con nessun campo dove c'é WHERE.
 
Il campo id_utenti nel mio db non esiste, esiste solo id = int autoincrement, e poi quella query me l'avevi sitemata tu. Ricordi ???? Il codice dovrebbe essere giusto, perché prima senza session_start (); funzionava, amesso session_start (); non va. E non capisco il perchè. Facendo leprove e mettendo in where il semplice id non va ugualmente. Non va con nessun campo dove c'é WHERE.
Si ma la sessione dove l'hai settata? Dove dichiari $_SESSION['id_utente'] o il nome che vuoi? In pratica ti serve l'identificatore dell'utente che altro non sarebbe l'id per il database, la cosa più sensata sarebbe settarlo dopo il login oppure dopo una registrazione confermata, session_start() serve solo a startare le sessioni, quindi a generare il SID di sessione (nei cookie o nell'url)
 
Ciao

Si ma la sessione dove l'hai settata? Dove dichiari $_SESSION['id_utente'] o il nome che vuoi? In pratica ti serve l'identificatore dell'utente che altro non sarebbe l'id per il database, la cosa più sensata sarebbe settarlo dopo il login oppure dopo una registrazione confermata, session_start() serve solo a startare le sessioni, quindi a generare il SID di sessione (nei cookie o nell'url)

La sessione la apro nell'area riservata, ossia dopo avvenuo il login. Quindi in teoria mi dovrei trasportare su aggiornaprofilo, la parte riguardante la sessione se non ho capito male. Ti posto dove sta la sessione in questione.

area riservata (paginaris.php)

PHP:
<link rel="stylesheet" type="text/css" href="coloredisfondo.css">
 <link rel="stylesheet" type="text/css" href="thumb.css">
    <?php
require_once("connetti.php");
    session_start();
if(isset($_COOKIE["ultimoaccesso"])) {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $ultimo_cookie = $_COOKIE["ultimoaccesso"];
    $me= "Il tuo ultimo accesso è stato il:  $ultimo_cookie";
} else {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $me= "Non ti sei mai collegato a questa pagina";
}


// Da qui inizia la sessione e l'identificativo dell'utente che si è loggato
session_start();

if(isset($_SESSION['nome'])) {

$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

 
 //  $array=mysql_fetch_array($array);  
    
}

// E qua finisce

  ?>
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>benvenuto</title>

<body>
    
<?php



$array =  strtoupper($_SESSION['nome'] );     
 if(isset($_SESSION['nome']))  {   

    echo "<div class=\"messaggio\"><h1>";

    
echo "BENVENUTO ".$array."<br />";
    
    echo $me;
    echo "</h1></div>";
    echo "</body></html>";

}else{
    header("Location:failed.php");      
    exit();   
 
//}

}

//Visualizza l'avatar contenuto nel db

//$query =mysql_query("SELECT immagine FROM immagine WHERE id = $id");
 
// Codice che unisce due o più tabelle

$query =mysql_query("SELECT utenti.id, utenti.nome, immagine.immagine FROM utenti INNER JOIN 
 immagine ON utenti.id =  immagine.id_nome WHERE id_nome = ".$_SESSION['id']);


while($foto=mysql_fetch_array($query))
    
{

 ?>
    <br> <br>        
    <img src="immages/<?php echo$foto["immagine"]?>" class="immages">
    
    <?php
}
?>

In pratica ful file aggiornaprofilo.php, mi dovrei riportare questo codice sempre che non ho capito male:

PHP:
<?php
require_once("connetti.php");
    session_start();
// Da qui inizia la sessione e l'identificativo dell'utente che si è loggato
session_start();

if(isset($_SESSION['nome'])) {

$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

 
 //  $array=mysql_fetch_array($array);  
    
}

// E qua finisce


Sbaglioo ?????
 
Ciao

Salve Nefyt,

Allora, ho fatto dei vari tentativi ma con esito negativo. Ora posto l'ultimo esperimento ch eho fatto senza ripeto alcun esito:

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


if(isset($_SESSION['id'])) {

//$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

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;   

echo "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>"; 
$_SESSION['id_utente'] = $id_utente; 
if(isset($citta, $provincia) && checkdate($mese, $giorno, $anno)) { 
    echo $datadinascita;
 
$qry = "UPDATE utenti SET  
    datadinascita='$datadinascita',  
    citta='$citta',  
    provincia='$provincia',  
    anno_diploma='$anno_diploma',
   WHERE id = '".$_SESSION['id']."'";
echo $qry;

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

}
 }
 }
?>

Io non ho capito una cosa, id e id_utente è la stessa cosa oppure sono due cose distinte e separate ??? Perchè nel mio db c'è solo id = int autoincrement, mentre tu mi consigliavi id_utente. Comunque rimane con la seguente frase in sopseto senza stampar,mi la query:

Esecuzione in corso dell'aggiornameto profilo...

Spero in una soluzione definitav. grazie.
 
$_SESSION['id'] questa è un elemento dell'array globale delle sessioni puo essere anche $_SESSION['pincoballo'] non centra nulla col database

per avere un identificatore in sessione devi settarlo quindi
PHP:
//$row è il risultato di una query, ad esempio di login
$_SESSION['id'] = $row['id'];

Il session_start() basta metterlo una sola volta, dopo ti basi su quell'identificatore per capire se l'user è loggato o meno e per interagire con le query, capish?
 
Quindi secondo te aggiungendo quella riga, dovrebbe bastare a risolvere il problema ????
Fai a posta di non capire? xD

Non è mettendo quella linea che miracolosamente va tutti ma organizzando una logica con la quale tu identifichi l'utente, tu devi settare una sessione con l'id dell'utente no?

Quindi:
-Devi avere una query che puo ricavarlo
-Devi gestire la sessione in modo da valutare se loggato o meno

Allora puoi ben capire che quella sessione è logica settarla al login o dopo la conferma via e-mail ricavando il risultato da una query


E dopo nelle altre pagine avrai qualcosa del tipo
PHP:
if(!empty($_SESSION['pinco_pallo_id_utente'])) echo "L'utente è loggato"; else header('Location: login.php');
//non lo prendere alla lettere, è semplicemente un esempio
 
Ciao

No scusa,

Non facevo a posta a non capire, ora credo di aver capito. Quindi in pratica devo rivedere il fie aggiornaprofilo.php giusto ????? E modificarlo come mi hai detto con la query ecc ecc.
 
No scusa,

Non facevo a posta a non capire, ora credo di aver capito. Quindi in pratica devo rivedere il fie aggiornaprofilo.php giusto ????? E modificarlo come mi hai detto con la query ecc ecc.

Si, ma prima devi gestire il controllo del loggato o no come ti ho fatto vedere
 

Discussioni simili