Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Danny89

Como permitir que o usuário altere o seu proprio cadastro?

Recommended Posts

Por exemplo, o usuário, uma vez cadastrado, ao clicar no item "meu perfil" visualizaria todos os seus dados e poderia editar qualquer campo, sem a necessidade do aministrador fazer isso.

 

Eu poderia começar retornando somente os dados do usuário logado na session?

 


<?php
session_start();
if(!isset($_SESSION["email"]) || !isset($_SESSION["senha"])) {
header("Location: login.php");
exit;
}
if(isset($_SESSION["email"])){
echo "Bem-Vindo: " . $_SESSION["email"];
}
if(isset($_GET["acao"]) && $_GET["acao"] == "sair") {
unset($_SESSION ["email"]);
unset($_SESSION ["senha"]);
session_destroy();
header("Location: home1.php");
}

if (isset($_GET["id"]))
    $id=$_GET["id"];

$sql = mysql_query("SELECT * candidatos WHERE id=".$id);
$registro = mysql_fetch_assoc($sql);

echo $registro['nome'];
echo $registro['universidade'];


Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você não pode permitir chamar os dados por GET porque mudando o valor permiti-se ver as informações de outros usuários. Nesse caso pega o e-mail da session que deve ser chave primária para fazer o select, depois é fazer o update no banco com os novos valores inseridos pelo logado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você não pode permitir chamar os dados por GET porque mudando o valor permiti-se ver as informações de outros usuários. Nesse caso pega o e-mail da session que deve ser chave primária para fazer o select, depois é fazer o update no banco com os novos valores inseridos pelo logado.

Na realidade a chave primaria do usuario é o id do mesmo, email é só um dos campos necessários para autenticar-se

 

Ficaria assim?

 

if (isset($_GET["email"]))
    $email=$_GET["email"];

$sql = mysql_query("SELECT * candidatos WHERE email=".$email);
$registro = mysql_fetch_assoc($sql);

echo $registro['nome'];
echo $registro['universidade'];
$update = mysql_query("UPDATE `candidatos` SET `nome`='$recuperaNome', `nome_mae` = '$recuperaNome_Mae'") WHERE `email` = '{$_SESSION[ '$email']}'");


Compartilhar este post


Link para o post
Compartilhar em outros sites

Quase isso, adiciona o id na sessao de login no select você pega o id direto da sessão e no update você pega todos os valores via POST.

$id = $_SESSION[ 'id'];

$sql = mysql_query("SELECT * candidatos WHERE id=".$id);
$registro = mysql_fetch_assoc($sql);


// PARTE HTML
echo $registro['nome'];
echo $registro['universidade'];

if(isset($_GET["acao"]) && $_GET["acao"] == "editar") {

$nome = $_POST['nome']; 
// e outros campos resgatados pelo  post...

$update = mysql_query("UPDATE .... WHERE id = '".$id."'");

$result = mysql_query($update) or die(mysql_error());
              
  if($result > 0){

    echo 'Cadastro atualizado com sucesso!';

  } 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quase isso, adiciona o id na sessao de login no select você pega o id direto da sessão e no update você pega todos os valores via POST.

$id = $_SESSION[ 'id'];

$sql = mysql_query("SELECT * candidatos WHERE id=".$id);
$registro = mysql_fetch_assoc($sql);


// PARTE HTML
echo $registro['nome'];
echo $registro['universidade'];

if(isset($_GET["acao"]) && $_GET["acao"] == "editar") {

$nome = $_POST['nome']; 
// e outros campos resgatados pelo  post...

$update = mysql_query("UPDATE .... WHERE id = '".$id."'");

$result = mysql_query($update) or die(mysql_error());
              
  if($result > 0){

    echo 'Cadastro atualizado com sucesso!';

  } 

}

 

Amigão, este código está correto no raciocínio?

 



                


 
<?PHP

$host = "localhost";
$user = "root";
$pass = "";
$banco = "recrutamento";
$connection = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($banco) or die(mysql_error());
$select = mysql_select_db("recrutamento") or die(mysql_error());
?>

<?php
session_start();
if(!isset($_SESSION["email"]) || !isset($_SESSION["senha"])) {
header("Location: login.php");
exit;
}
if(isset($_SESSION["email"])){
echo "Bem-Vindo: " . $_SESSION["email"];
}
if(isset($_GET["acao"]) && $_GET["acao"] == "sair") {
unset($_SESSION ["email"]);
unset($_SESSION ["senha"]);
session_destroy();
header("Location: home1.php");
}

if (isset($_GET["email"]))
    $email=$_GET["email"];
    
    $id = $_SESSION[ 'id'];

$sql = mysql_query("SELECT * FROM candidatos WHERE id=".$id);
$registro = mysql_fetch_assoc($sql);

echo $registro['nome'];
echo $registro['universidade'];

if(isset($_GET["acao"]) && $_GET["acao"] == "editar") {

$nome = $_POST['nome'];
$nome = $_POST['universidade'];
}
$update = mysql_query("UPDATE `candidatos` SET `nome`='$nome', `universidade` = '$universidade'") WHERE id = '".$id."'");

$result = mysql_query($update) or die(mysql_error());
              
  if($result > 0){

    echo 'Cadastro atualizado com sucesso!';

  }




                ?>
                

Tá dando o erro Parse error: syntax erro, unexpected T_STRING in C:\wamp\www\recrutamento\editandocurriculo.php on line 87

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, você ainda está usando um if sem as chaves de escopo para pegar o e-mail por get isso pode gerar erro.

repetiu a variável nome para o nome e universidade sobrescrevendo o valor de nome para universidades e fechou a condicional if de editar antes da query de update que dever está dentro da condicional.

 

Deixe o email como chave única para não poder ser cadastrado mais de uma vez.

 

segue o código:

session_start();
if(!isset($_SESSION["email"]) || !isset($_SESSION["senha"])) {
header("Location: login.php");
exit;
}
if(isset($_SESSION["email"])){
echo "Bem-Vindo: " . $_SESSION["email"];
}
if(isset($_GET["acao"]) && $_GET["acao"] == "sair") {
unset($_SESSION ["email"]);
unset($_SESSION ["senha"]);
session_destroy();
header("Location: home1.php");
}

    
$email = $_SESSION["email"];

$sql = mysql_query("SELECT * FROM candidatos WHERE email=".$email);
$registro = mysql_fetch_assoc($sql);

echo $registro['nome'];
echo $registro['universidade'];

if(isset($_GET["acao"]) && $_GET["acao"] == "editar") {

$nome = $_POST['nome'];
$universidade = $_POST['universidade'];

$update = mysql_query("UPDATE candidatos SET nome='$nome', universidade = '$universidade' WHERE email = '".$email."'");

$result = mysql_query($update) or die(mysql_error());
              
  if($result > 0){

    echo 'Cadastro atualizado com sucesso!';
  }


}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, você ainda está usando um if sem as chaves de escopo para pegar o e-mail por get isso pode gerar erro.

repetiu a variável nome para o nome e universidade sobrescrevendo o valor de nome para universidades e fechou a condicional if de editar antes da query de update que dever está dentro da condicional.

 

Deixe o email como chave única para não poder ser cadastrado mais de uma vez.

 

segue o código:

session_start();
if(!isset($_SESSION["email"]) || !isset($_SESSION["senha"])) {
header("Location: login.php");
exit;
}
if(isset($_SESSION["email"])){
echo "Bem-Vindo: " . $_SESSION["email"];
}
if(isset($_GET["acao"]) && $_GET["acao"] == "sair") {
unset($_SESSION ["email"]);
unset($_SESSION ["senha"]);
session_destroy();
header("Location: home1.php");
}

    
$email = $_SESSION["email"];

$sql = mysql_query("SELECT * FROM candidatos WHERE email=".$email);
$registro = mysql_fetch_assoc($sql);

echo $registro['nome'];
echo $registro['universidade'];

if(isset($_GET["acao"]) && $_GET["acao"] == "editar") {

$nome = $_POST['nome'];
$universidade = $_POST['universidade'];

$update = mysql_query("UPDATE candidatos SET nome='$nome', universidade = '$universidade' WHERE email = '".$email."'");

$result = mysql_query($update) or die(mysql_error());
              
  if($result > 0){

    echo 'Cadastro atualizado com sucesso!';
  }


}

 

Agora o erro é esse aqui Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

 

Tá apontando pra essa linha aqui $registro = mysql_fetch_assoc($sql);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vocês precisam envolver o email em aspas nas consultas SQL

 

como está:

$sql = mysql_query("SELECT * FROM candidatos WHERE email=".$email);

 

como precisa ser:

 

$sql = mysql_query("SELECT * FROM candidatos WHERE email='{$email}'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vocês precisam envolver o email em aspas nas consultas SQL

 

como está:

 

$sql = mysql_query("SELECT * FROM candidatos WHERE email=".$email);

como precisa ser:

 

$sql = mysql_query("SELECT * FROM candidatos WHERE email='{$email}'");

 

Amigo, fiz essas alterações, mas quando eu altero o dado do campo e clico em atualizar, o campo retorna o mesmo dado anterior

 

Vê se tem coisa errada

				

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Home</title>
<link href="css/estilo.css" rel="stylesheet" type="text/css" />
<link href="css/menu.css" rel="stylesheet" type="text/css" />
</head>

<body>


<div id="boxheader">
	<div class="container">
		<div id="header">
			<h1> Recrutamento Info<span>X</span></h1>
		</div><!--header-->
	</div><!--container-->
</div><!--boxheader-->

<div class="clear"></div>
<div id="boxmenu"> 
	<div class="container">
		<nav>
			<ul class="menu">
				<li><a href="#">Home</a></li>
				<li><a href="#">Pesquisa Personalizada</a></li>
				<li><a href="#">Contato</a></li>
				</li>
			</ul><!--menu-->
	

	<div id="conteudo">
	</nav>
	</div><!--container-->
</div><!--boxmenu-->
</div>
<div id="Conteudo"> 
<body>
 
<?PHP

$host = "localhost";
$user = "root";
$pass = "";
$banco = "recrutamento";
$connection = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($banco) or die(mysql_error());
$select = mysql_select_db("recrutamento") or die(mysql_error());

session_start();
if(!isset($_SESSION["email"]) || !isset($_SESSION["senha"])) {
header("Location: login.php");
exit;
}
if(isset($_SESSION["email"])){
echo "Bem-Vindo: " . $_SESSION["email"];
}
if(isset($_GET["acao"]) && $_GET["acao"] == "sair") {
unset($_SESSION ["email"]);
unset($_SESSION ["senha"]);
session_destroy();
header("Location: home1.php");
}

    
$email = $_SESSION["email"];

$sql = mysql_query("SELECT * FROM candidatos WHERE email='{$email}'");
$registro = mysql_fetch_assoc($sql);




if(isset($_POST["acao"]) && $_POST["acao"] == "editar") {
$recuperaNome = mysql_real_escape_string($_POST['nome']);
$recuperaUniversidade	 = mysql_real_escape_string($_POST['universidade']);


$update = mysql_query("UPDATE candidatos SET nome='$nome', universidade = '$universidade' WHERE email = '{$email}'");

$result = mysql_query($update) or die(mysql_error());
              
  if($result > 0){

    echo 'Cadastro atualizado com sucesso!';
  }


}

?>
			
<form name="editar" action="" method="post">
<fieldset>
  <label>
	    <span> Nome:</span>
		<input type="text" name="nome" value="<?php echo $registro['nome'];?>">
		  </label>			


  <label>
	    <span> Universidade:</span>
		<input type="text" name="universidade" value="<?php echo $registro['universidade'] ;?>">
		 
		 		<input type="hidden" name="acao" value="update">
		<input type="submit" value="Atualizar candidato"/>
	</fieldset>
</form>

<style type="text/css">
    label,span{ display: block; padding:10px 0;}

</style>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você mudou a variável [inline]$nome[/inline] para [inline]$recuperaNome[/inline] mas não mudou no update. Ou faltou atenção, ou cursinho básico de lógica...

 

 

$update = mysql_query("UPDATE candidatos SET nome='$nome', universidade = '$universidade' WHERE email = '{$email}'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não está passando o valor da ação corretamente, está colocando acao == update e no if é ação == editar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não está passando o valor da ação corretamente, está colocando acao == update e no if é ação == editar.

Bem observado, assim como o amigo acima

Mas agora, embora eu consiga alteral o nome perfeitamente, o campo "formação" desaparece quando é feita alteração, no banco também, o dado é apagado

 

O código tá assim (mudei 'universidade' por 'formação')

 

session_start();
if(!isset($_SESSION["email"]) || !isset($_SESSION["senha"])) {
header("Location: login.php");
exit;
}
if(isset($_SESSION["email"])){
echo "Bem-Vindo: " . $_SESSION["email"];
}
if(isset($_GET["acao"]) && $_GET["acao"] == "sair") {
unset($_SESSION ["email"]);
unset($_SESSION ["senha"]);
session_destroy();
header("Location: home1.php");
}

    
$email = $_SESSION["email"];

$sql = mysql_query("SELECT * FROM candidatos WHERE email='{$email}'");
$registro = mysql_fetch_assoc($sql);




if(isset($_POST["acao"]) && $_POST["acao"] == "editar") {
$recuperaNome = mysql_real_escape_string($_POST['nome']);
$recuperaFormacao	 = mysql_real_escape_string($_POST['formacao']);
header("Location: telaprofissional.php");


$update = mysql_query("UPDATE candidatos SET nome='$recuperaNome', formacao = '$rcuperaFormacao' WHERE email = '{$email}'");

$result = mysql_query($update) or die(mysql_error());
              
  if($result > 0){

    echo 'Cadastro atualizado com sucesso!';
  }


}

?>
			
<form name="editar" action="" method="post">
<fieldset>
  <label>
	    <span> Nome:</span>
		<input type="text" name="nome" value="<?php echo $registro['nome'];?>">
		  </label>			


  <label>
	    <span> Formacao:</span>
		<input type="text" name="formacao" value="<?php echo $registro['formacao'] ;?>">
		</label>
		 
		 		<input type="hidden" name="acao" value="editar">
		<input type="submit" value="Atualizar candidato"/>
	</fieldset>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

a sua query de update tem uma variável errada veja como você escreveu $rcuperaFormacao e como você chama ela no post $recuperaFormacao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.