PHP Editar Utilizador

cryteck

Power Member
Eu fiz um sistema de login usando sessões, mas agora não estou conseguindo fazer a página de editar utilizador .
Eu faço o login página login.php, depois se errar o login, vai para a página errar_login.php senão cria a sessão e vai para a página principal.php onde aparece logout e editar utilizador.
Ao clicar em editar utilizador vai para a página editar_utilizador.php onde tem um formulario para por nova password e novo email.
Eu consigo actualizar a base de dados, mas só com o id que eu puser ex:

$sql="UPDATE user SET password='$password', email='$email' WHERE id='1'";
$resultado = mysql_query($sql);
$exe_resultado = mysql_query($sql) or die (mysql_error());

O que eu queria é que só actualizasse a base de dados com o id do utilizador que fez login.
Podiam-me dar sugestões como proceder, é que eu não estou a conseguir.
Abraços:-D
 
Como provavelmente o campo login é único, podes meter um hidden element dentro da form, com essa informação.

Outra solução era colocares na Sessão o id ou o login
 
O que estou a dizer é que, tens de ter a informação que identifique a linha da tabela users que queres mudar.

Por exemplo ao realizares a autenticação no login.php, se o utilizador estiver correcto crias uma sessão. Isso dá te acesso a variável Super Global $_SESSION que é um array. Assim antes de fazeres o redirect para a página principal.php, colocas algures no teu codigo

Código:
$_SESSION['username'] = $login;
Depois é so alterar o codigo que tens para algo parecido com

Código:
$sql="UPDATE user SET password='$password', email='$email' 
          WHERE nome="+$_SESSION['username']+"'";
 
Bem pessoal eu já consegui passar o id do utilizador pelo link.
Só que agora não consigo fazer o update á tabela na base de dados.

principal.php

Código:
<?php
include("config.php");
include("restrito.php");
 
$sql_pesquisa = "SELECT * FROM user WHERE login = '$login_utilizador'";
$exe_pesquisa = mysql_query($sql_pesquisa) or die (mysql_error());
$fet_pesquisa = mysql_fetch_assoc($exe_pesquisa);
$id= $fet_pesquisa['id'] ; 
?>
 
Olá <? echo $fet_pesquisa['login'];?>
<a href="logout.php">Logout</a> 
<a href="editar_utilizador.php?id=<? echo $id; ?>"> Editar Utilizador</a>
 
editar_utilizador.php
 
<?php
 
include("config.php");
 
$id = $_GET['id'];
$password = md5($_POST['password']);
$email = $_POST['email'];
 
$sql="UPDATE user SET password='$password', email='$email' WHERE id='$id'";
 
$resultado = mysql_query($sql);
$exe_resultado = mysql_query($sql) or die (mysql_error());
 
?>
 
 
 
<form id="form" name="form" method="post" action="editar_utilizador.php">
<table width="100%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>Alteração de Dados</strong></div></td>
</tr>
<tr>
<td width="14%"><span class="Style2">Nova Password</span></td>
<td width="86%"><span class="Style2">
<label>
<input name="password" type="password" id="password" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Confirmar Password:</span></td>
<td><span class="Style2">
<label>
<input name="password2" type="password" id="password2" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Novo Email:</span></td>
<td><span class="Style2">
<label>
<input name="email" type="text" id="email" />
</label>
</span></td>
</tr>
<tr>
<td><a href="logout.php">Logout</a></td>
<td><span class="Style2">
<label>
<input type="submit" name="Submit" value="Alterar Dados" />
</label>
</span></td>
</tr>
</table>
<p>&nbsp;</p>
</form>

O problema é quando clico no botão alterar dados, não altera nada na BD, parece que as caixas de texto estão sem texto, não sei o que se passa.
Ajudem-me se faz favor.

Abraços...
 
Última edição pelo moderador:
tenta colocar assim:

principal.php(onde mostra os dados do utilizador
PHP:
<?php
 include("config.php");
 
$id = $_GET['id'];
 $sql=mysql_query("SELECT * from WHERE id='$id'");
 while($x = mysql_fetch_array($sql)){
echo '
<table width="0%" border="0" cellspacing="1" bgcolor="#339900">
<tr>
<td width="557" align="center" bgcolor="#FFFFFF"><strong><font color="#FF0000" size="1" face="verdana">...:::::Mudar Dados::::......</font></strong></td>
</tr>
<tr>
<td height="50" valign="top" bgcolor="#FFFFFF"> <table width="862" height="50" border="0" cellspacing="0">
<tr>
<td width="44"><strong><font size="1" face="verdana">Senha:</font></strong></td>
<td width="214"><strong><font color="#009900" size="1" face="verdana">'.$x['password'].'</font></strong></td>

<td width="44"><strong><font size="1" face="verdana">Email:</font></strong></td>
<td width="214"><strong><font color="#009900" size="1" face="verdana">'.$x['email'].'</font></strong></td>
<td width="44" height="21"><strong></strong></td>
<td width="514" align="right"><strong><font color="#FF0000" size="2" face="verdana"><a href="editar_utilizador.php?id='.$x['id'].'">Editar</a></font></strong></td>
</tr>
</table>
';
?>
editar_utilizador.php(onde se coloca os novos dados.)
PHP:
<?php
include("config.php");

$id = $_GET['id'];
$sql=mysql_query("SELECT * from WHERE id='$id'");

while($x = mysql_fetch_array($sql)){

echo '
<form id="form" name="form" method="post" action="confirmar_editar_utilizador.php?id='.$x['id'].'">
<table width="100%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>Alteração de Dados</strong></div></td>
</tr>
<tr>
<td width="14%"><span class="Style2">Nova Password</span></td>
<td width="86%"><span class="Style2">
<label>
<input name="password" type="password" id="'.$x['password'].'" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Confirmar Password:</span></td>
<td><span class="Style2">
<label>
<input name="password2" type="password" id="'.$x['password2'].'" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Novo Email:</span></td>
<td><span class="Style2">
<label>
<input name="email" type="text" id="'.$x['email'].'" />
</label>
</span></td>
</tr>
<tr>
  <td><a href="logout.php">Logout</a></td>
  <td><span class="Style2">
  <label>
  <input type="submit" name="Submit" value="Alterar Dados" />
  </label>
  </span></td>
</tr>
</table>
<p>&nbsp;</p>
</form>
';
}

Confirmar_editar_utilizador.php(Onde é confirmada a troca)
PHP:
<?php
include("config.php");

$id = $_GET['id'];
$password = md5($_POST['password']);
$email = $_POST['email'];

$sql="UPDATE `user` SET `password`='$password', `email`='$email' WHERE id='$id'";

$resultado = mysql_query($sql);
if($resultado){
echo"Dados editados com sucesso <a href=\"principal.php\"> Voltar</a>";
}else{// se a variavel $x nao for verdadeiro ele nao ira alterar o cadastro ou seja ira ser falso
echo"o dadods nao puderam ser editado";
}
?>
 
Back
Topo