como fazer um link pegar o ID do usuário logodo?
19/08/2014
0
em um site tenho 3 usuários o André, Jonathan e Roberto e todos os dados deles estão salvos em um banco de dados mysql, dados como email, senha, usuário e nome.
eu consigo alterar os dados deles com a seguinte estrutura.
listar.php
<?php include "conectar.php"; // Chama a conexao com o banco de dados $buscar = mysql_query("SELECT * FROM usuarios")or die(mysql_error()); if(mysql_num_rows($buscar) > 0){ while($ver = mysql_fetch_array($buscar)) { echo '<a href="settings.php?id='.$ver[0].'">'.$ver[1].'</a>'; } }else{ echo 'Sem dados cadastrais'; } ?>
settings.php
<?php include "conectar.php"; // Chama a conexao com o banco de dados if($_SERVER['REQUEST_METHOD']=='GET'){ isset($_GET['id']) ? $busca=mysql_query("SELECT * FROM usuarios WHERE id='".$_GET['id']."'") : die(mysql_error()); $dados = mysql_fetch_array($busca); }elseif($_SERVER['REQUEST_METHOD']=='POST'){ $id = isset($_POST['idreg']) ? $_POST['idreg'] : 0; $nome = isset($_POST['nome']) ? $_POST['nome'] : ''; $usuario = isset($_POST['usuario']) ? $_POST['usuario'] : false; $email = isset($_POST['email']) ? $_POST['email'] : ''; $senha = isset($_POST['senha']) ? $_POST['senha'] : ''; $atualizar = mysql_query("UPDATE usuarios s SET nome='$nome',usuario='$usuario',email='$email',email='$senha' WHERE id='$id'")or die(mysql_error()); ($atualizar) ? print 'Dados alterados com sucesso' : die('Falha ao alterar dados'); } ?> <form name="teste2" id="teste2" action="" method="POST"> <input type="hidden" name="idreg" id="idreg" value="<?php echo $dados['id']; ?>"> Nome: <input type="text" name="nome" value="<?php echo $dados['nome']; ?>" /> <br /> usuario: <input type="text" name="usuario" value="<?php echo $dados['usuario']; ?>" /> <br /> email: <input type="text" name="email" value="<?php echo $dados['email']; ?>" /> <br /> Senha: <input type="password" name="senha" value="<?php echo $dados['senha']; ?>" /> <br /> <input type="submit" name="ok" value="Alterar" /> </form>
o listar.php faz uma busca no banco de dados e me da um retorno com os usuários que estão cadastrados no sistema, quando escolho os usuários ele me redireciona para o settings.php já com o id no link e assim eu consigo alterar os dados sem precisar alterar o banco de dados!
mais quero inovar meu sistema, coloquei um link no painel dos meus usuários denominado 'configurações' e quero que quando eles clicarem abra um link com os dados cadastrais deles para que eles possam fazer as alterações desejadas sozinhos! essa pagina seria a seguinte.
alterar.php
<form name="teste2" id="teste2" action="settings.php" method="POST"> <input type="hidden" name="idreg" id="idreg" value="<?php echo $dados['id']; ?>"> Nome: <input type="text" name="nome" value="<?php echo $dados['nome']; ?>" /> <br /> usuario: <input type="text" name="usuario" value="<?php echo $dados['usuario']; ?>" /> <br /> email: <input type="text" name="email" value="<?php echo $dados['email']; ?>" /> <br /> Senha: <input type="password" name="senha" value="<?php echo $dados['senha']; ?>" /> <br /> <input type="submit" name="ok" value="Alterar" />
mais não funciona! alguma dica?
Cleyton Caetano
Posts
19/08/2014
Ronaldo Lanhellas
alterar.php
<form name="teste2" id="teste2" action="settings.php?id=<?php echo $dados['id']; ?>" method="POST">
19/08/2014
Cleyton Caetano
alterar.php
<form name="teste2" id="teste2" action="settings.php?id=<?php echo $dados['id']; ?>" method="POST">
creio que seja mais ou menos isso mesmo!
mas veja o erro que apareceu, ele não pegou o ID.
em nome apareceu
<br /><b>Notice</b>: Undefined variable: dados in <b>C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\minha_conta.php</b> on line <b>3</b><br />
usuário
<br /><b>Notice</b>: Undefined variable: dados in <b>C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\minha_conta.php</b> on line <b>5</b><br />
<br /><b>Notice</b>: Undefined variable: dados in <b>C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\minha_conta.php</b> on line <b>7</b><br />
senha
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
19/08/2014
Ronaldo Lanhellas
19/08/2014
Cleyton Caetano
acho que o erro está nesta linha!
isset($_GET['id']) ? $busca=mysql_query("SELECT * FROM usuarios WHERE id='".$_GET['id']."'") : die(mysql_error());
mais como posso resolver? fiquei perdido agora aqui!
19/08/2014
Ronaldo Lanhellas
1 - Você tem uma página chamada settings.php que espera receber o ID do usuário através de um GET.
2 - A sua página alterar.php deve enviar esse ID para o settings.php mas você não está sabendo onde pegar o ID do usuário na página alterar.php.
Minha pergunta, estando você em alterar.php como você mostra para o usuário o id dele ? Qual variável você usa ?
19/08/2014
Cleyton Caetano
1 - Você tem uma página chamada settings.php que espera receber o ID do usuário através de um GET.
2 - A sua página alterar.php deve enviar esse ID para o settings.php mas você não está sabendo onde pegar o ID do usuário na página alterar.php.
Minha pergunta, estando você em alterar.php como você mostra para o usuário o id dele ? Qual variável você usa ?
olha o meu alterar.php está assim!
<?php include "settings.php";?> <form name="teste2" id="teste2" action="settings.php" method="POST"> <input type="hidden" name="idreg" id="idreg" value="<?php echo $dados['id']; ?>"> Nome: <input type="text" name="nome" value="<?php echo $dados['nome']; ?>" /> <br /> Usuario: <input type="text" name="usuario" value="<?php echo $dados['usuario']; ?>" /> <br /> Email: <input type="text" name="email" value="<?php echo $dados['email']; ?>" /> <br /> Senha: <input type="password" name="senha" value="<?php echo $dados['senha']; ?>" /> <br /> <input type="submit" name="ok" value="Alterar" /> </form>
tem alguma coisa errada nele? ou está faltando alguma coisa?
com o include ele parou de dar o erro, e quando acesso o link no painel fica assim http://localhost/SITE/alterar.php?id= faltando apenas o n° do ID se por acaso eu coloco http://localhost/SITE/alterar.php?id=1 acrescento o n° 1 no final ele exibe os dados corretamente!e altera também! só falta agora o ID entrar de forma automática!
o link que eu estou usando para chegar até o alterar.php
<p><a href="alterar.php?id=<?php echo $dados['id']; ?>" title="alterar">Minha Conta</a><p>
19/08/2014
Ronaldo Lanhellas
isso está errado:
<?php include "settings.php";?> <form name="teste2" id="teste2" action="settings.php" method="POST">
19/08/2014
Cleyton Caetano
isso está errado:
<?php include "settings.php";?> <form name="teste2" id="teste2" action="settings.php" method="POST">
Verifiquei e vi que estava mesmo! mas já está corrigido! agora só falta o link pegar o ID automático! alguma ideia do que está impedindo?
alterar.php
<?php include "settings.php";?> <form name="teste2" id="teste2" action="" method="POST"> <input type="hidden" name="idreg" id="idreg" value="<?php echo $dados['id']; ?>"> Nome: <input type="text" name="nome" value="<?php echo $dados['nome']; ?>" /> <br /> Usuario: <input type="text" name="usuario" value="<?php echo $dados['usuario']; ?>" /> <br /> Email: <input type="text" name="email" value="<?php echo $dados['email']; ?>" /> <br /> Senha: <input type="password" name="senha" value="<?php echo $dados['senha']; ?>" /> <br /> <input type="submit" name="ok" value="Alterar" /> </form>
settings.php
<?php include "conectar.php"; // Chama a conexao com o banco de dados if($_SERVER['REQUEST_METHOD']=='GET'){ isset($_GET['id']) ? $busca=mysql_query("SELECT * FROM usuarios WHERE id='".$_GET['id']."'") : die(mysql_error()); $dados = mysql_fetch_array($busca); }elseif($_SERVER['REQUEST_METHOD']=='POST'){ $id = isset($_POST['idreg']) ? $_POST['idreg'] : 0; $nome = isset($_POST['nome']) ? $_POST['nome'] : ''; $usuario = isset($_POST['usuario']) ? $_POST['usuario'] : false; $email = isset($_POST['email']) ? $_POST['email'] : ''; $senha = isset($_POST['senha']) ? $_POST['senha'] : ''; $atualizar = mysql_query("UPDATE usuarios SET nome='$nome',usuario='$usuario',email='$email',senha='$senha' WHERE id='$id'")or die(mysql_error()); ($atualizar) ? print 'Dados alterados com sucesso' : die('Falha ao alterar dados'); } ?>
link utilizado
<a href="alterar.php?id=<?php echo $dados['id']; ?>" title="Sair">Minha Conta</a>
agora só falta o link conseguir pegar o ID do usuário logado!
19/08/2014
Cleyton Caetano
erro nessessariamente não, só que quando o usuário clica pra ir pra pagina alterar.php o link não pega o ID,
este é o link:
<a href="alterar.php?id=<?php echo $dados['id']; ?>" title="Sair">Minha Conta</a>
exemplo!
era pra quando o usuáro dono do id clicar no link acima ele tinha que ser redirecionado para
http://localhost/SITE/index.php?id=1
e não é o que acontece! quando ele clica vai para
http://localhost/SITE/index.php?id=
ficando o link todo completo e perfeito menos o ID entendeu? esse é meu probleminha ^_^
19/08/2014
Ronaldo Lanhellas
<?php var_dump($dados); ?>
19/08/2014
Cleyton Caetano
<?php var_dump($dados); ?>
fiz o seguinte!
entrei o alterar.php e adicionei o código que ficou assim!
<?php include "settings.php";?> <form name="teste2" id="teste2" action="" method="POST"> <input type="hidden" name="idreg" id="idreg" value="<?php echo $dados['id']; ?>"> Nome: <input type="text" name="nome" value="<?php echo $dados['nome']; ?>" /> <br /> Usuario: <input type="text" name="usuario" value="<?php echo $dados['usuario']; ?>" /> <br /> Email: <input type="text" name="email" value="<?php echo $dados['email']; ?>" /> <br /> Senha: <input type="password" name="senha" value="<?php echo $dados['senha']; ?>" /> <br /> <input type="submit" name="ok" value="Alterar" /> </form> <?php var_dump($dados); ?>
depois acessei o link http://localhost/SITE/alterar.php que ficou zerado sem exibir nada então adicionei o ID manualmente e o link ficou assim http://localhost/SITE/alterar.php?id=4.
ele me da um retorno.
array(10) { [0]=> string(1) "4" ["id"]=> string(1) "4" [1]=> string(5) "jonas" ["nome"]=> string(5) "jonas" [2]=> string(11) "jonas.teste" ["usuario"]=> string(11) "jonas.teste" [3]=> string(6) "cb2907" ["senha"]=> string(6) "cb2907" [4]=> string(25) "romario_jorge@outlook.com" ["email"]=> string(25) "romario_jorge@outlook.com" }
19/08/2014
Cleyton Caetano
19/08/2014
Ronaldo Lanhellas
19/08/2014
Ronaldo Lanhellas
Clique aqui para fazer login e interagir na Comunidade :)