Array
(
)

como fazer um link pegar o ID do usuário logodo?

PHP
Cleyton Caetano
   - 19 ago 2014

olá, tenho o seguinte projeto!
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
#Código

<?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
#Código
<?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
#Código
<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?

Ronaldo Lanhellas
   - 19 ago 2014

Você pode mudar a action do seu formulário para adicionar o id do usuário, que será recebido por um $_GET em settings.php, assim:

alterar.php
#Código

<form name="teste2" id="teste2" action="settings.php?id=<?php echo $dados['id']; ?>" method="POST">

Cleyton Caetano
   - 19 ago 2014


Citação:
Você pode mudar a action do seu formulário para adicionar o id do usuário, que será recebido por um $_GET em settings.php, assim:

alterar.php
#Código

<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
#Código
<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
#Código
<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 />


email
#Código
<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
#Código
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

Ronaldo Lanhellas
   - 19 ago 2014

Bom, na sua página alterar.php você está usando a variável $dados['id'], ela deve existir antes de ser utilizada, ou seja, em algum momento você deve atribuir o id do usuário ao $dados['id'] e o mesmo com todos os outros campos. O erro acima mostra que isso não foi feito.

Cleyton Caetano
   - 19 ago 2014


Citação:
Bom, na sua página alterar.php você está usando a variável $dados['id'], ela deve existir antes de ser utilizada, ou seja, em algum momento você deve atribuir o id do usuário ao $dados['id'] e o mesmo com todos os outros campos. O erro acima mostra que isso não foi feito.

acho que o erro está nesta linha!
#Código

    isset($_GET['id']) ? $busca=mysql_query("SELECT * FROM usuarios WHERE id='".$_GET['id']."'") : die(mysql_error());


mais como posso resolver? fiquei perdido agora aqui!

Ronaldo Lanhellas
   - 19 ago 2014

Não não, veja bem:
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 ?

Cleyton Caetano
   - 19 ago 2014


Citação:
Não não, veja bem:
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!

#Código

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

#Código
<p><a href="alterar.php?id=<?php echo $dados['id']; ?>" title="alterar">Minha Conta</a><p>

Ronaldo Lanhellas
   - 19 ago 2014

Tem coisa errada sim, você está tentando mandar para a página settings.php mas está incluindo ela dentro da alterar.php, ou seja, ambas tornam-se a mesma página. Você tem que rever essa sua lógica.

isso está errado:

#Código

<?php include "settings.php";?>
<form name="teste2" id="teste2" action="settings.php" method="POST">

Cleyton Caetano
   - 19 ago 2014


Citação:
Tem coisa errada sim, você está tentando mandar para a página settings.php mas está incluindo ela dentro da alterar.php, ou seja, ambas tornam-se a mesma página. Você tem que rever essa sua lógica.

isso está errado:

#Código

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

#Código
<?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

#Código
<?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

#Código
<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!

Ronaldo Lanhellas
   - 19 ago 2014

Aparentemente tudo certo, algum erro ?

Cleyton Caetano
   - 19 ago 2014


Citação:
Aparentemente tudo certo, algum erro ?


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:
#Código

<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

#Código
http://localhost/SITE/index.php?id=1


e não é o que acontece! quando ele clica vai para

#Código
http://localhost/SITE/index.php?id=


ficando o link todo completo e perfeito menos o ID entendeu? esse é meu probleminha ^_^

Ronaldo Lanhellas
   - 19 ago 2014

De um var_dump na variável $dados e mostre aqui, para poder ver o que tem nela (antes de enviar)

#Código

<?php var_dump($dados); ?>

Cleyton Caetano
   - 19 ago 2014


Citação:
De um var_dump na variável $dados e mostre aqui, para poder ver o que tem nela (antes de enviar)

#Código

<?php var_dump($dados); ?>


fiz o seguinte!

entrei o alterar.php e adicionei o código que ficou assim!
#Código
<?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.

#Código
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" } 

Cleyton Caetano
   - 19 ago 2014

mais uma observação rsrs quando eu adiciono abaixo do link que estou usando só aparece "NULL"

Ronaldo Lanhellas
   - 19 ago 2014

De onde você está chamando o alterar.php ? Poste o código da página que esta chamando o alterar.php.

Ronaldo Lanhellas
   - 19 ago 2014

Você está quase lá, o problema todo é que a página que está chamando o alterar.php não está passando o objeto "id" preenchido.

Cleyton Caetano
   - 19 ago 2014


Citação:
De onde você está chamando o alterar.php ? Poste o código da página que esta chamando o alterar.php.

então, no caso eu to chamando o alterar php da minha barra de ferramentas na interface do usuário!
ela é feita individualmente como bar_top.php e é incluída na index com um include. segue os códigos.

bar_top.php

#Código

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
<link rel="stylesheet" type="text/css" href="style/settings.css" />

<?php
						echo $_SESSION['usuarioNome'];
						echo " |";
						echo " <a href='index.php'>Página Inicial  </a>";
?>
<!-- botão setings -->

	<script>
     
    function abrefecha(obj){
    var el = document.getElementById(obj);
    if(el.style.display != "block"){
    el.style.display = "block";
    }else{
    el.style.display = "none";
    }
    }
    </script>
	
    <a href="#" onclick="abrefecha('divum');"><img src="image/bar_top_button_settings.png" title="Settings" />	</a>  
    <div class="settings" id="divum" style="display:none;">
	<a href="alterar.php?id=<?php echo $dados['id']; ?>" title="Sair">Minha Conta</a>
	<p><a href="#" title="Sair">Configurações</a><p>
	<p><a href="logout.php" title="Sair">Sair</a></p>
	</div>
<!-- final do botão setings -->

Ronaldo Lanhellas
   - 19 ago 2014

Pois é, ai está o problema. Você está usando o código abaixo:

#Código

<a href="alterar.php?id=<?php echo $dados['id']; ?>" title="Sair">Minha Conta</a>


Mas em nenhum momento eu vi você fazendo um

#Código
$dados['id'] = id_do_usuario;

Cleyton Caetano
   - 19 ago 2014


Citação:
Pois é, ai está o problema. Você está usando o código abaixo:

#Código

<a href="alterar.php?id=<?php echo $dados['id']; ?>" title="Sair">Minha Conta</a>


Mas em nenhum momento eu vi você fazendo um

#Código
$dados['id'] = id_do_usuario;


desculpe mas não entendi! como ficaria no meu código?

Cleyton Caetano
   - 20 ago 2014

só pra notificar aqui, eu consegui resolver o problema, fiz algumas alterações e usei o link dessa forma:

#Código

<a href="alterar.php?id=<?php echo $_SESSION['usuarioID']; ?>" title="Sair">Minha Conta</a>


o que fez funcionar mesmo foi esta função PHP.

#Código
<?php echo $_SESSION['usuarioID']; ?>


ela pega o ID do usuário que está com a seção aberta no momento! e está funcionando normal agora! obrigada pela ajuda ai Ronaldo Lanhellas, sua dicas foram muito importantes para o funcionamento do meu código! obrigada mesmo!

Ronaldo Lanhellas
   - 20 ago 2014


Citação:
só pra notificar aqui, eu consegui resolver o problema, fiz algumas alterações e usei o link dessa forma:

#Código

<a href="alterar.php?id=<?php echo $_SESSION['usuarioID']; ?>" title="Sair">Minha Conta</a>


o que fez funcionar mesmo foi esta função PHP.

#Código
<?php echo $_SESSION['usuarioID']; ?>


ela pega o ID do usuário que está com a seção aberta no momento! e está funcionando normal agora! obrigada pela ajuda ai Ronaldo Lanhellas, sua dicas foram muito importantes para o funcionamento do meu código! obrigada mesmo!

Mas este era o ponto, você tinha que ver de onde pegar o id do usuário e passar para o link do alterar.php, você estava tentando pegar do $dados, só que lá não tinha nada. ótimo que você conseguiu.