rjsma 2 Posted March 28, 2011 Report Share Posted March 28, 2011 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 Link to post Share on other sites
Lfscoutinho 2 Posted March 28, 2011 Report Share Posted March 28, 2011 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. Link to post Share on other sites
rjsma 2 Posted March 28, 2011 Author Report Share Posted March 28, 2011 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. Acho que sou eu que já estou todo confuso xd Link to post Share on other sites
Lfscoutinho 2 Posted March 28, 2011 Report Share Posted March 28, 2011 Boas, Exactamente. Pois.. suponho que o teu problema é teres a tua base de dados mal estruturada :s Link to post Share on other sites
rjsma 2 Posted March 28, 2011 Author Report Share Posted March 28, 2011 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? Link to post Share on other sites
blackangel 0 Posted March 28, 2011 Report Share Posted March 28, 2011 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. Link to post Share on other sites
rjsma 2 Posted March 28, 2011 Author Report Share Posted March 28, 2011 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 . Link to post Share on other sites
Lfscoutinho 2 Posted March 28, 2011 Report Share Posted March 28, 2011 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. Link to post Share on other sites
blackangel 0 Posted March 28, 2011 Report Share Posted March 28, 2011 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 Link to post Share on other sites
Lfscoutinho 2 Posted March 28, 2011 Report Share Posted March 28, 2011 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... Link to post Share on other sites
rjsma 2 Posted March 28, 2011 Author Report Share Posted March 28, 2011 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> Link to post Share on other sites
blackangel 0 Posted March 28, 2011 Report Share Posted March 28, 2011 @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 Link to post Share on other sites
bioshock 180 Posted March 28, 2011 Report Share Posted March 28, 2011 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. Link to post Share on other sites
rjsma 2 Posted March 28, 2011 Author Report Share Posted March 28, 2011 @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? Link to post Share on other sites
blackangel 0 Posted March 28, 2011 Report Share Posted March 28, 2011 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 Link to post Share on other sites
rjsma 2 Posted March 28, 2011 Author Report Share Posted March 28, 2011 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. Link to post Share on other sites
blackangel 0 Posted March 28, 2011 Report Share Posted March 28, 2011 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 Link to post Share on other sites
rjsma 2 Posted March 28, 2011 Author Report Share Posted March 28, 2011 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); Link to post Share on other sites
Lfscoutinho 2 Posted March 28, 2011 Report Share Posted March 28, 2011 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 Link to post Share on other sites
blackangel 0 Posted March 28, 2011 Report Share Posted March 28, 2011 nao tinhas dito que tinhas um insert 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']; Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now