Gans 0 Denunciar post Postado Outubro 9, 2009 Boa tarde pessoal, mais uma dúvida http://forum.imasters.com.br/public/style_emoticons/default/yay.gif Seguinte estou criando um sistema de usuários onde a chave de ativação deles fica em outra tabela, até ai consegui fazer a consulta. Porem as duas tabelas eu tenho o campo ID, e na hora de exibir eu precisava exibir o ID do usuário mas acaba mostrando o ID da tabela das chaves...Vou dar o exemplo.. Tabela: usuarios ID - NOME - CHAVE 1 - Jose - 5 2 - João - 7 Tabela: chaves ID - CHAVE - VENCIMENTO 5 - 14845 - 1254279600 7 - 54515 - 1254279600 O script que estou utilizando: $time = $time(); $sql = mysql_query("SELECT usuarios.*,chaves.id,chaves.expira FROM usuarios, chaves WHERE usuarios.chave = chaves.id AND chaves.expira > '$time'"); O problema é que no WHILE o campo ID pega o ID da chava, e precisaria ser o ID do usuário... Eu tenho uma solução em mente mas não é muito viável, que seria alterar o campo ID da tabela chaves para outro nome como UID apenas para diferenciar. Alguém sabe se existe outra solução? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 9, 2009 Adiciona um ALIAS pra coluna na hora da consulta. Mais ou menos assim... SELECT usuarios.*,chaves.id AS id_chave,chaves Daí o id fica sendo o id da tabela usuarios e o outro id passa a ser id_chave. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Gans 0 Denunciar post Postado Outubro 9, 2009 Tentei com o AS assim: $time = $time(); $sql = mysql_query("SELECT usuarios.*,chaves.id AS id_chave,chaves.expira FROM usuarios, chaves WHERE usuarios.chave = id_chave AND chaves.expira > '$time'"); Mas não retorna resultado... (Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/mercado/public_html/site/resultado.php on line 159) Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 9, 2009 Tenta assim: $sql = mysql_query("SELECT u.*, c.id,c.expira FROM usuario u, chaves c WHERE u.chave = c.id AND c.expira > '$time'"); Compartilhar este post Link para o post Compartilhar em outros sites
Gans 0 Denunciar post Postado Outubro 9, 2009 João, tentei o seu mas acontece a mesma coisa de antes, ele pega o ID da chave. Tem que mudar o campo do WHILE também? while($l = mysql_fetch_array($sql)) { $id = $l['id']; } estou usando assim, tentei $l['u.id']; mas da erro... Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Outubro 9, 2009 No WHERE você joga a coluna sem alias. Assim... WHERE usuarios.chave = chaves.id Deve funcionar. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 9, 2009 João, tentei o seu mas acontece a mesma coisa de antes, ele pega o ID da chave. Opz, falha minha. Agora deve funcionar: $sql = mysql_query("SELECT u.*, c.id 'idchave' ,c.expira FROM usuario u, chaves c WHERE u.chave = c.id AND c.expira > '$time'"); while($l = mysql_fetch_array($sql)) { $id = $l['id']; //id do usuário $chave = $l[ 'idchave' ]; //id da chave } Compartilhar este post Link para o post Compartilhar em outros sites
Gans 0 Denunciar post Postado Outubro 9, 2009 Também não deu... WHERE usuarios.chave = chaves.id A variável recebe o ID da chave... Tentei também WHERE usuarios.chave = chaves.id_chave WHERE usuarios.chave = id_chave Mas da o erro e não retorna nada... Seria melhor mudar o ID da tabela Chave para outro nome então? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Gans 0 Denunciar post Postado Outubro 9, 2009 João tentei desse jeito e ele retorna o idchave vazio... tentei usar o mesmo método mas no u.id 'iduser' e também retorna vazio... Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 9, 2009 João tentei desse jeito e ele retorna o idchave vazio... Tenta o seguinte: $sql = mysql_query("SELECT u.*, c.id 'idchave' ,c.expira FROM usuario u, chaves c WHERE u.chave = c.id AND c.expira > '$time'"); $l = mysql_fetch_array($sql); print_r( $l ); Compartilhar este post Link para o post Compartilhar em outros sites
Gans 0 Denunciar post Postado Outubro 9, 2009 Retorna o seguinte: Array ( [0] => 1 [id] => 1 [1] => José [nome] => José [2] => 5 [chave] => 5 [3] => 5 [idchave] => 5 [4] => 1354279600 [expira] => 1354279600 ) Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 9, 2009 Ué amigão, então está funcionado: $sql = mysql_query("SELECT u.*, c.id 'idchave' ,c.expira FROM usuario u, chaves c WHERE u.chave = c.id AND c.expira > '$time'"); while ( $l = mysql_fetch_array($sql) ){ printf( 'O id da chave é: %d<br />O id do usuário é: %d<br />' , $l[ 'idchave' ] , $l[ 'id' ] ); } Compartilhar este post Link para o post Compartilhar em outros sites
Gans 0 Denunciar post Postado Outubro 9, 2009 Agora deu certo... acho que eu estava colocando o ID da chave errado... Obrigado João e Matias... Compartilhar este post Link para o post Compartilhar em outros sites