Jump to content
rjsma

Apanhar o id atraves do nome de utilizador

Recommended Posts

rjsma

Boa tarde,

Preciso da vossa ajuda para arranjar aqui um raciocino lógico e correcto. Ao clicar num nome de utilizador iria abrir uma página do perfil desse utilizador.

Pensei no seguinte:

Colocar um link para a pagina perfil onde o id fosse igual ao id do utilizador clicado.Mas para isso tenho que ter um valor na variável $id_user e isso não estou a conseguir pensar como posso apanhar o id do utilizador que cliquei.

<a href='perfil.php?id=$id_user'>".$urlpriva['utilizador']."</a>

Depois na página do perfil utilizo um while para mostrar as informaçoes do id seleccionado.


$id = (isset($_GET['id']))

$sql = mysql_query("Select * from utilizadores WHERE privado_comunidade id='$id' ");

//Percorre os campos da tabela
while($urlpriva=mysql_fetch_array($sql)){
  echo " Categoria: " . $urlpriva['categoria'] .";
  
}

Resumindo o meu único problema e colocar no $id_user o id do utilizador em questão.

Abraços

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Bem, eu percebi a tua pergunta, mas não sei bem como te explicar...

Ora aqui vai a minha tentativa: da mesma maneira que está a escrever o nome de utilizador, escreves o id...

Por exemplo, se estiveres a fazer um consulta à BD para pegar o nome, tens que pegar o ID também...

Enfim, peço desculpa por não estar a ser muito claro, mas espero que tenhas percebido alguma coisita. Sorry.

Share this post


Link to post
Share on other sites
rjsma

Penso que percebi.Era isto que estava a falar?


<a href='perfil.php?id='".$urlpriva['id']."'>".$urlpriva['utilizador']."</a>

Tambem pensei nisso ma so problema e que isto esta num while e a query que tenho é de um tabela diferente dos utilizadores e nesta tabela nao tenho o id do utilizador so o nome do utilizador.Resumindo estou a ir buscar o nome de utilizador a uma tabela e tenho de ir buscar o id a outra tabela. Porque este nome de utilizador e o utilizador que inseriu o comentario e por isso não estou a utilizar o campo utilizador da tabela utilizadores que onde esta o campo id que quero ir buscar.

  :thumbsup: Acho que sou eu que já estou todo confuso xd

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Exactamente. Pois.. suponho que o teu problema é teres a tua base de dados mal estruturada :s

Share this post


Link to post
Share on other sites
rjsma

hum...sempre posso por a gravar o id do utilizador tudo na mesma tabela quando gravo o  comentario na bd.Mas continua aquela questao de conseguir apanhar o id do utilizador.

Alguem tem alguma sugestão?

Share this post


Link to post
Share on other sites
blackangel

Tu tens de ter o id na mesma tabela que tens o utilizador, senão como queres associa-lo ao utilizador?

Isso a melhor, (e assim a olhar muito rápido para isso), única maneira é mesmo essa, se tiveres o id do utilizador na mesma tabela que tens o nome quando fazes uma query para ir buscar o nome apanhas também o id.

Se estou a perceber mal explica te melhor.

Share this post


Link to post
Share on other sites
rjsma

O meu problema é só gravar o id do utilizador ao inserir um comentario.

Para gravar o utilizador que escreveu o comentario na tabela faço $_SESSION['utilizador']; para gravar o user em sessao .

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

@azevedo seria mais fácil se mostrasses a estrutura da tua base de dados, pois como já te disse antes, parece-me que o teu problema é teres a base de dados mal estruturada.

Share this post


Link to post
Share on other sites
blackangel

deixa me ver se percebi, tu quando guardas um comentario inseres um user na bd?

com auto_increment no id certo?

depois queres quando alguem está a ver esse comentário clique no nome do utilizador e veja o perfil dele

certo?

se assim for, e caso nao tenhas mesmo outra maneira de saber o id, podes fazer uma query à bd do estilo

select * from tabela where user=$_GET['utilizador']

e assim tens dados e id

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

@blackangel pelo que eu percebi ele tem uma tabela utilizadores, onde tem (id, nome, etc..) e tem uma tabela comentários, onde em vez de ter (id, user_id, etc...) tem (id, user_nome, etc...). Isto, foi o que eu entendi. Acho que era mais fácil ele reestruturar a base de dados e depois voltar à programação. Mas, é só a minha opinião...

Share this post


Link to post
Share on other sites
rjsma

deixa me ver se percebi, tu quando guardas um comentario inseres um user na bd?

com auto_increment no id certo?

depois queres quando alguem está a ver esse comentário clique no nome do utilizador e veja o perfil dele

certo?

se assim for, e caso nao tenhas mesmo outra maneira de saber o id, podes fazer uma query à bd do estilo

select * from tabela where user=$_GET['utilizador']

e assim tens dados e id

Esta aqui a estrutura das 2 tabelas em questao. AS dos utilizadores e a dos comentarios:

http://img52.imageshack.us/i/utilizadores.jpg/

http://img22.imageshack.us/i/urlir.jpg/

Quando insiro um comentario ele grava na bd o utilizador que escreveu o comentario(utilizador da sessao).

Certo, quando clica no nome aparece o perfil dele.

Não posso fazer dessa maneira a query porque da forma que fiz tem que ser mesmo o id, ve:


<a href='perfil.php?id=$id_user'>".$urlpriva['utilizador']."</a>

Share this post


Link to post
Share on other sites
blackangel

@Lfscoutinho completamente de acordo, a relação devia ser feita pelo id e não pelo nome!

Mas caso não queira estar a alterar a base de dados, que para mim seria a melhor maneira alterar a bd, podes fazer a solução que te dei, uma vez que não podes alterar código e queres mesmo passar o id para a outra pagina, fazes a query que te disse antes de mudares de pagina e já tens o id dessa forma, se bem que é repetição de código e para mim má programação

Share this post


Link to post
Share on other sites
bioshock

Se queres apanhar o ID de algo, terás de estruturar uma query que faça o que pretendes.

SELECT ID FROM Tabela WHERE Nome = bioshock

Agora é só adaptares ao teu código.

Share this post


Link to post
Share on other sites
rjsma

@Lfscoutinho completamente de acordo, a relação devia ser feita pelo id e não pelo nome!

Mas caso não queira estar a alterar a base de dados, que para mim seria a melhor maneira alterar a bd, podes fazer a solução que te dei, uma vez que não podes alterar código e queres mesmo passar o id para a outra pagina, fazes a query que te disse antes de mudares de pagina e já tens o id dessa forma, se bem que é repetição de código e para mim má programação

Não sei se sou eu que não estou-me a fazer entender ou se são vocês que não estão a perceber

Eu tenho estado este tempo todo a disser que tenho de fazer a relação pelo o id e não pelo o nome.

Estão a disser que tenho de reformular as tabelas mas não percebi porque.

Estrutura das tabelas

1)http://img52.imageshack.us/i/utilizadores.jpg/

2)http://img22.imageshack.us/i/urlir.jpg/

Na tabela do utilizador só necessito do campo id. Portanto se tiver o id do utilizador em sessao na tabela 2 facilita-me e muito a minha tarefa e deixo de ter 2 tabelas e fico a passar so a ter 1 tabela nesta fase. Não querendo ser ignorante mas ao fazer isto $id_user=$_SESSION['id']; ele não armazena o id do user da sessão na variavel?

Share this post


Link to post
Share on other sites
blackangel

Na tabela do utilizador só necessito do campo id. Portanto se tiver o id do utilizador em sessao na tabela 2 facilita-me e muito a minha tarefa e deixo de ter 2 tabelas e fico a passar so a ter 1 tabela nesta fase. Não querendo ser ignorante mas ao fazer isto $id_user=$_SESSION['id']; ele não armazena o id do user da sessão na variavel?

sim se tiveres o id em sessao claro que podes fazer isso,

quanto à questao de reestruturar as tabelas, normalmente as relaçoes sao sempre feitas por ids e tu estas a fazer por username

Share this post


Link to post
Share on other sites
rjsma

Se queres apanhar o ID de algo, terás de estruturar uma query que faça o que pretendes.

SELECT ID FROM Tabela WHERE Nome = bioshock

Agora é só adaptares ao teu código.

bioshock, penso que assim não dá, pelo menos não deu comigo.


$apanha_id="SELECT ID FROM utilizadores WHERE utilizador = '$utilizador'";
$id_user=mysql_query($apanha_id,$ligacao);

Pos um echo para mostrar o valor da variavel e aparece isto  Resource id #4.

E na bd não grava nenhum valor.

Share this post


Link to post
Share on other sites
blackangel

bioshock, penso que assim não dá, pelo menos não deu comigo.


$apanha_id="SELECT ID FROM utilizadores WHERE utilizador = '$utilizador'";
$id_user=mysql_query($apanha_id,$ligacao);

Pos um echo para mostrar o valor da variavel e aparece isto  Resource id #4.

E na bd não grava nenhum valor.

isto tem de funcionar, tas a fazer um select do mais simples que existe, e parece-me estar bem feito

faz echo da query e testa no phpmyadmin, e ja vez se da erro ou nao.

dizes que nao grava valor nenhum, é normal tas a fazer um select e nao um insert

Share this post


Link to post
Share on other sites
rjsma

Já tinha posto um echo para mostrar o valor da variavel e aparece isto  Resource id #4. No phpmyadmin aparece correctamente o id.

dizes que nao grava valor nenhum, é normal tas a fazer um select e nao um insert

Ai não é normal porque tenho um insert mais abaixo .


$inserir = "INSERT INTO favoritos (id_user, utilizador, nome, categoria, url, descricao, palavras_chaves, privado_comunidade, favicon, data) VALUES ('{$id_user}','{$utilizador}','{$nome}', '{$categoria}', '{$url}', '{$descricao}', '{$palavras_chaves}','{$comunidade}', '{$favicon_addr}','{$data}')";
$query = mysql_query ( $inserir, $ligacao);

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Muito sinceramente, penso que devias estudar um pouquinho mais bases de dados. Mas, isto é só um conselho.

E, já que estou numa onde de conselhos, aqui vão alguns:

[*]Reestrutura as tuas tabelas, isto é, na tabela utilizadores metes os campos que são propriedades dos utilizadores (id, nome, user, data nascimento, etc...) e na outra tabela metes as suas propriedades e um campo "user_id". Depois, crias um relacionamento entre o campo id da tabela utilizadores e o campo user_id da outra tabela

[*]Dá aos campos, tipos apropriados. Ou seja, por exemplo no campo data de nascimento em vez de varchar, podes usar o tipo date, no campo sexo e estado civil podes utilizar um campo do tipo enum, no campo senha se fores encriptar com md5 mete char(32), etc etc...

Depois disso tudo fica mais fácil... Mas é só a minha opinião :thumbsup:

Share this post


Link to post
Share on other sites
blackangel

nao tinhas dito que tinhas um insert  :thumbsup:

quanto à query, está bem feita, logo o problema nao vem daí

o problema esta que tens de por esse resultado num mysql_fetch_array ou mysql_fetch_assoc de modo a poderes retirar de lá o valor

tipo

$apanha_id="SELECT ID FROM utilizadores WHERE utilizador = '$utilizador'";
        $apanha_id_resultado=mysql_query($apanha_id,$ligacao);
$res=mysql_fetch_assoc( $apanha_id_resultado);
$id_user= $res['ID'];


Share this post


Link to post
Share on other sites
rjsma

nao tinhas dito que tinhas um insert  :P

quanto à query, está bem feita, logo o problema nao vem daí

o problema esta que tens de por esse resultado num mysql_fetch_array ou mysql_fetch_assoc de modo a poderes retirar de lá o valor

tipo

$apanha_id="SELECT ID FROM utilizadores WHERE utilizador = '$utilizador'";
        $apanha_id_resultado=mysql_query($apanha_id,$ligacao);
$res=mysql_fetch_assoc( $apanha_id_resultado);
$id_user= $res['ID'];


Assim já gravou o valor correcto do id.

Agora quando vou buscar o id do utilizador, não aparece o id, fica assim perfil.php?id=

Penso que assim devia dar.

<a href='perfil.php?id=' ".$urlpriva['id_user']." '>".$urlpriva['utilizador']."</a>

Pus o id_user fora da tag <a> para ver o valor que mandava ca para fora.Depois de fazer isto venho a confirmar que o valor que está a mandar e o id correcto do utilizador.

<td>".$urlpriva['id_user']."</td>

Portanto não sei porque que não coloque o valor do id_user quando está na tag <a>

Share this post


Link to post
Share on other sites
blackangel

tens ai umas aspas a mais ("")

<a href='perfil.php?id=' ".$urlpriva['id_user']." '>".$urlpriva['utilizador']."</a>

<a href='perfil.php?id=' .$urlpriva['id_user'].'>".$urlpriva['utilizador']."</a>

num URL quando passas parametros nao precisas aspas

Share this post


Link to post
Share on other sites
rjsma

tens ai umas aspas a mais ("")

<a href='perfil.php?id=' .$urlpriva['id_user'].'>".$urlpriva['utilizador']."</a>

num URL quando passas parametros nao precisas aspas

Penso que não tenho as aspas a mais porque se tirar as aspas aparece parse error

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.