Danny89 0 Denunciar post Postado Junho 29, 2014 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
Bergs 53 Denunciar post Postado Junho 29, 2014 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
Danny89 0 Denunciar post Postado Junho 29, 2014 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
Bergs 53 Denunciar post Postado Junho 29, 2014 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
Danny89 0 Denunciar post Postado Junho 30, 2014 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
Bergs 53 Denunciar post Postado Junho 30, 2014 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
Danny89 0 Denunciar post Postado Junho 30, 2014 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
Evandro Oliveira 331 Denunciar post Postado Junho 30, 2014 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
Danny89 0 Denunciar post Postado Junho 30, 2014 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
Evandro Oliveira 331 Denunciar post Postado Junho 30, 2014 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
Bergs 53 Denunciar post Postado Junho 30, 2014 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
Danny89 0 Denunciar post Postado Junho 30, 2014 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
Bergs 53 Denunciar post Postado Junho 30, 2014 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
Danny89 0 Denunciar post Postado Junho 30, 2014 Valeu amigão! Muito obrigado pela atenção ;) Compartilhar este post Link para o post Compartilhar em outros sites