Problema con update

paperinik4

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

Devo fare l'aggiornamento di una tabella chiamata utenti. l'giornamento consiste fondamentalmente in tre campi come prova. Però mi da sempre erroree non capisco il motivo. Oraposto tutto il codice, magari qualche buon anima becca subito l'errore.

Questa è Tabella Utenti:

PHP:
create table utenti (

id		INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome		VARCHAR(30) NOT NULL,
cognome 		VARCHAR(30) NOT NULL,
username 		VARCHAR(30) NOT NULL,
email           	VARCHAR(40) NOT NULL,
password    	VARCHAR(255) NOT NULL,
id_immagine	INT(255) NOT NULL,
attivo        	 ENUM('1', '0') DEFAULT '0',	
accettatermini	 ENUM('1', '0') DEFAULT '0',	
datadinascita 	date,
sesso 		varchar(8) NOT NULL,	
Occupazione 	varchar(50)NOT NULL,
statocivile		varchar(12) NOT NULL,
città 		varchar(30) NOT NULL,
provincia 		varchar(3) NOT NULL,
titolo_studio 	varchar(30) NOT NULL,
anno_diploma 	year,
titolo_laurea 	varchar(30) NOT NULL,
anno_laurea 	year,
PRIMARY KEY (id)
);

Questo è il file che non mi fa fare l'update su più campi:

aggiornaprofilo.php

PHP:
<?php

require_once("connetti.php");


$datadinascita = mysql_real_escape_string(strtolower(trim ($_GET['datadinascita'])));  
$citta = mysql_real_escape_string(strtolower(trim ($_GET['citta'])));
$provincia = mysql_real_escape_string(strtolower(trim ($_GET['provincia'])));
 
$qry = "UPDATE utenti SET datadinascita='$datadinascita', citta='$citta', provincia='$provincia' ";

if (mysql_query($qry)) {
    echo "Aggiornasmento effettuato";
    
} else {
    echo "Errore: nell'aggiornamento";
}

?>

Ho provato anche con $_POST, ma il risultato è il seguente:

Errore: nell'aggiornamento

Spero in voi...... Grazie.
 
Ciao

Ciao Nefyt,

Ti espongo tutto spero in te in un vosto aiuto. La pagina che richiama l'aggiornamento del profilo è la seguente:

PHP:
<br><br> <center>
   <!--$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/iscrizionebymarco92jq/attivautente.php?email=' . $email-->
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
        <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>
        <!--<input type="button" onClick="<a href='aggiornaprofilo.php?id='.'$id';"style='padding:10px' value="Aggiorna Profilo" />-->
        
    
        <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?id=' . $id" style='padding:10px' value="Aggiorna Profilo" /> //Questa dovrebbe essere il link che va alla pagina chiamata aggiornaprogilo
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />

    
    </center>

E questa è la pagina aggiornaprofilo.php

PHP:
?php

require_once("connetti.php");

$id = $_GET['id'];


//Se io qua inizio a scrivere le seguenti cose:

$id = $_GET['id'];
$datadinascita = $_GET['datadinascita'];  //mi da tutti cartellini gialli
$citta = $_GET['citta'];   //mi da tutti cartellini gialli
$provincia = $_GET['provincia'];   //mi da tutti cartellini gialli


//$qry = "UPDATE utenti SET datadinascita='datadinascita', citta='citta', provincia='provincia' WHERE email='".$email."';"; //Questa è la query completa con i dati di prova da aggiornare

$qry = "UPDATE utenti SET citta='citta', provincia='provincia' WHERE email='".$email.";"; //questa è la query di prova

//, citta='citta', provincia='provincia'

echo"aaaaaaaaa". $qry;
if (mysql_query($qry)) {
    echo "Aggiornasmento effettuato";
    
} else {
    echo "Errore: aggiornamento db non effettuato";
}

?>

Ora con un campo solo, riesco ad aggiornalo, ma con più campi no. Vedi se puoi fare qualcosa per favor eperchè sono disperato. Grazie.
 
Setta $email e aggiungi la condizione where, non c'è bisogno di incasinare la pagina come hai fatto

PHP:
require_once("connetti.php"); 


$datadinascita = mysql_real_escape_string(strtolower(trim ($_GET['datadinascita'])));   
$citta = mysql_real_escape_string(strtolower(trim ($_GET['citta']))); 
$provincia = mysql_real_escape_string(strtolower(trim ($_GET['provincia']))); 
$email = mysql_real_escape_string(strtolower(trim ($_GET['email']))); 
  
$qry = "UPDATE utenti SET datadinascita='$datadinascita', citta='$citta', provincia='$provincia' WHERE email='$email'"; 

if (mysql_query($qry)) { 
    echo "Aggiornamento effettuato"; 
     
} else { 
    echo "Errore: nell'aggiornamento ".mysql_error(); 
}

Se non dovesse darti errori nella query allora controlla (stampandole o come vuoi) che tutte le variabili arrivino correttamente
 
Ciao

Allora Nefyt,


L'editor non mi da nessun errore e già questo è positivo. Però quando vado a fare "aggiorna profilo", mi da il seguente errore, dice che la pagina non la trova:

http://utenti/iscrizionebymarco92jq/undefined

Il risultato di questo messaggio è dato dalla seguente operazione:

PHP:
<br><br> <center>
   <!--$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/iscrizionebymarco92jq/attivautente.php?email=' . $email-->
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
        <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>
        <!--<input type="button" onClick="<a href='aggiornaprofilo.php?id='.'$id';"style='padding:10px' value="Aggiorna Profilo" />-->
        
    
        <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=' . $email" style='padding:10px' value="Aggiorna Profilo" />
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />

    
    </center>

Questa è la riga incriminata che riproduce quel messaggio la:

PHP:
        <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=' . $email" style='padding:10px' value="Aggiorna Profilo" />

Ora vorrei capire il perchè mi da questo risultato e se la sintassi è corretta oppure no. Grazie
 
Prova correggendolo cosi se non sei dentro ad un echo

PHP:
  <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=<?=$email?>'" style='padding:10px' value="Aggiorna Profilo" />

Se poi l'url è sbagliato questo lo devi sapere te non io
 
Prova correggendolo cosi se non sei dentro ad un echo

PHP:
  <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=<?=$email?>'" style='padding:10px' value="Aggiorna Profilo" />

Se poi l'url è sbagliato questo lo devi sapere te non io

Ciao,

Il bello è che l'url è giusto. L'ho verificato tre volte per essere sicuri.
 
Ciao

Ciao,

Il bello è che l'url è giusto. L'ho verificato tre volte per essere sicuri.

Ciao,

Allora, sembra che vada quell'errore dell'url non me lo da più meglio così. però mi da il seguente errore:

Errore: nell'aggiornamento Unknown column 'citta' in 'field list'

In pratica dice che non esiste il campo citta nel db. mi sembrava di avee messo tutti i campi giusti. ma ora ridò una controllata per essere sicuri. Inoltre è normale che nel campo date e nel campo year ci sia null ????

Risolto il problema credo, c'era scritto città (con la a accentata nel db) e citta nei campi da aggiornare, ecco perchè non mi trovava la città, e mi dava errore. Ora provo e spero che l'esito sia positivvo. Ho solo il dubbio della data e dell'anno.
 
Ultima modifica:
Ciao

Ciao,

Il bello è che l'url è giusto. L'ho verificato tre volte per essere sicuri.

Ciao Nefyt,

Allora, l'aggiornamento è andato a buon fine, ma alla fine non ha aggiornato una sega (scusa l'espressioene). Ti mostro l'immagine di qquello che visualizzo quando vado su phpmyadmin. Questo è quello che vedo quando vado su phpmyadmin. Allora ti riposto i codici con le modifiche.

Tabella utenti:

PHP:
create table utenti (

id		         INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome		         VARCHAR(30) NOT NULL,
cognome 		VARCHAR(30) NOT NULL,
username 		VARCHAR(30) NOT NULL,
email           	VARCHAR(40) NOT NULL,
password    	VARCHAR(255) NOT NULL,
id_immagine	INT(255) NOT NULL,
attivo        	 ENUM('1', '0') DEFAULT '0',	
accettatermini	 ENUM('1', '0') DEFAULT '0',	
datadinascita 	date  NOT NULL,
sesso 		varchar(8) NOT NULL,	
Occupazione 	varchar(50)NOT NULL,
statocivile		varchar(12) NOT NULL,
citta 		        varchar(30) NOT NULL,
provincia 		varchar(3) NOT NULL,
titolo_studio 	varchar(30) NOT NULL,
anno_diploma 	year  NOT NULL,
titolo_laurea 	varchar(30) NOT NULL,
anno_laurea 	year  NOT NULL,
PRIMARY KEY (id)
);

parte riguardate l'aggiornamento della tabella:

PHP:
<br><br> <center>
   <!--$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/iscrizionebymarco92jq/attivautente.php?email=' . $email-->
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
        <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>
<!--<input type="button" onClick="window.location.href='aggiornaprofilo.php';" style='padding:10px' value="Logout" />        -->
    
      <!--  <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=' . $email" style='padding:10px' value="Aggiorna Profilo" />-->

        <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=<?=$email?>'" style='padding:10px' value="Aggiorna Profilo" />     //P.S.: Mi segnala cartellino giallo
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />

    
    </center>

Come viene mostrato all'utente finale gli aggiornamenti. Mentto un altro screen.

P.S.: La data viene visualizzata in tre sequenze quando continui ad aggiornare il profilo, ma in realtà è un campo unico, che poi verrà visualizzato nel riepilogo finale. Spero di essermi spiegato bene cosa intendo dire. E sopratutto spero in tutti voi :P
 
Allora il problema sta nel form? Postalo e vediamo, non è che volevi recuperare i dati via $_POST e non $_GET?
 
Ciao

Guarda ti posto sia il form che riguarda l'aggiornamento, e sia l'aggiornamentoprofilo: Sciuramente c'è qualche casino.

aggiornamentoprofilo.php

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


$datadinascita = mysql_real_escape_string(strtolower(trim ($_GET['datadinascita'])));   
$citta = mysql_real_escape_string(strtolower(trim ($_GET['citta']))); 
$provincia = mysql_real_escape_string(strtolower(trim ($_GET['provincia']))); 
$email = mysql_real_escape_string(strtolower(trim ($_GET['email']))); 
  
$qry = "UPDATE utenti SET datadinascita='$datadinascita', citta='$citta', provincia='$provincia' WHERE email='$email'"; 

if (mysql_query($qry)) { 
    echo "Aggiornamento effettuato"; 
     
} else { 
    echo "Errore: nell'aggiornamento ".mysql_error(); 
}  
?>


form profilo (paginaris.php) è in pratica l'area riservata

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='logout.php';" style='padding:10px' value="Cancellati" />

<input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' disabled='disabled'/>  
</div>
 
<?php
    break;
    case 2:
    ?>
<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'];

?>

Da qua inizia l'aggiornamento profilo che sta sempre nell'area riservatao dopo il login

PHP:
<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>
   <!--$mail->MsgHTML('Grazie di esserti iscritto.  <a href="http://utenti/iscrizionebymarco92jq/attivautente.php?email=' . $email-->
        <input type='button' onclick='getpage("<?=$page-1?>")' value='Indietro' ?> 
        <input type='button' onclick='getpage("<?=$page+1?>")' value='Avanti' ?>
<!--<input type="button" onClick="window.location.href='aggiornaprofilo.php';" style='padding:10px' value="Logout" />        -->
    
      <!--  <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=' . $email" style='padding:10px' value="Aggiorna Profilo" />-->

        <input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=<?=$email?>'" style='padding:10px' value="Aggiorna Profilo" />
        
        <input type="button" onClick="window.location.href='logout.php';" style='padding:10px' value="Logout" />

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


Questo è quanto se ti occorre qualche altra cosa, fammi sapere che dopo il pisolino te la posto. Grazie
 
Scusami ma io non vedo nessun form, al click del pulsante fa il redirect passando via get solo email, e in questo modo nessuna variabile viene recuperata, crea un form col submit senza usare un redirect via js, ed eventualmente la mail passala come campo hidden controllando che sia quella dell'utente, anche se dai dati della sessione dovresti già recuperarla
 
Ciao

Scusami ma io non vedo nessun form, al click del pulsante fa il redirect passando via get solo email, e in questo modo nessuna variabile viene recuperata, crea un form col submit senza usare un redirect via js, ed eventualmente la mail passala come campo hidden controllando che sia quella dell'utente, anche se dai dati della sessione dovresti già recuperarla

Perdonami,

ma il modulo sono le selezioni che stanno nella stessa pagina dell'area riservata. Poi dovrebbero cambiare a secxonda di uno come si connette se pinco o pallino , quindi avranno due profili da compilare. E si può mettere tutt'uno o diventa complicato ????
 
Ultima modifica:
Perdonami,

ma il modulo sono le selezioni che stanno nella stessa pagina dell'area riservata. Poi dovrebbero cambiare a secxonda di uno come si connette se pinco o pallino , quindi avranno due profili da compilare. E si può mettere tutt'uno o diventa complicato ????
A parte ciò ora ti sto dicendo, da dove recuperi ad esempio $_GET['citta'] ? Se non viene spedita ne con l'url ne con un form? Utilizza un form con un submit perché fai il redirect con location.href passando solo la mail?
 
Ciao

Dunque se non ho capito male,

Posso fare in questa maniera:

PHP:
<input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=<?=$email?>'" //Originale tuo


modificato e aggiunto:
PHP:
<input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=<?=$email?> citta=<?=$citta?>'" //Modificato mio
 
Concatenali, è un url
Codice:
email=<?=$email?>&citta=<?=$citta?>

Poi andrebbe usato urlencode() ed urldecode() sulle variabili in modo da evitare interruzioni, comunque è un metodo bypassabile modificando semplicemente l'url del redirect se non ci sono controlli, scusa perché non usi una sessione?
 
Ciao

Concatenali, è un url
Codice:
email=<?=$email?>&citta=<?=$citta?>

Poi andrebbe usato urlencode() ed urldecode() sulle variabili in modo da evitare interruzioni, comunque è un metodo bypassabile modificando semplicemente l'url del redirect se non ci sono controlli, scusa perché non usi una sessione?

Scusami,

Mi puoi dire se è esatta ????
[PHP+
<input type="button" onClick="location.href='http://utenti/iscrizionebymarco92jq/aggiornaprofilo.php?email=<?=$email?>&citta=<?=$citta?>&citta=<?=$datdadinascita?>datadinascita=provincia=<?=$provincia?>'" style='padding:10px' value="Aggiorna Profilo" />

[/PHP]

Ho verificato e non mi da un bel niente di aggiornamento :(
 
Ultima modifica:

Discussioni simili