Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

fredericomartins

Como listar resultado de uma tabela com uma array

Mensagens Recomendadas

fredericomartins    0
fredericomartins

Boa Tarde,

Estou com uma dúvida e precisava de uma ajudita,

É o seguinte tenho duas tabelas

utilizador_ano

id

cdg_utilizador

ano

utilizadores

id

nome

A ideia é eu listar em primeiro lugar todos os utilizadores do ano, na tabela utilizador_ano todos os que no ano tem 2015

depois desta listagem ficava com vários resultado do "cdg_utilizador"

e em seguida teria que listar cada um desses "cdg_utilizador" na tabela utilizadores, de forma a me dar os nomes

Penso que da para perceber o que quero, não faço a mínima com o fazer, alguém que me ajude ;)

Abraço

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
chbcl    9
chbcl
<?php
$connection = "ESTABELECES A CONEXAO NESTA VARIAVEL";
$cmd = "SELECT * FROM utilizador_ano WHERE ano LIKE '2015'";
$res = mysqli_query($connection,$cmd);
while($row = mysqli_fetch_array($res)){
   print $row['id'] . ' - ' . $row['cdg_utilizador'] . ' - ' . $row['ano'] . '<br/>';
}


developer @ filipealves.net

filipealvesbcl [a] gmail.com

github.com/filipealvesbcl

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fredericomartins    0
fredericomartins

Hum, não da assim, a ideia é que vá listar os dados da outra tabela utilizadores (id, nome)

O ID é os valores que retomam da $row['id']

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Cerzedelo    14
Cerzedelo

A melhor ideia é ao fazer a query em sql, já trazer o nome, através da propriedade JOIN, isto e junção de 2 tabelas.

SELECT utilizador_ano.id, utilizadores.nome FROM utilizador_ano JOIN utilizadores WHERE utilizadores_ano.cdg_utilizador=utilizadores.id

Depois e só listar $row['nome']

Editado por Cerzedelo

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
chbcl    9
chbcl

Sendo assim, o que precisas é isto:

<?php
$connection = "ESTABELECES A CONEXAO NESTA VARIAVEL";
$cmd = "SELECT * FROM utilizador_ano INNER JOIN utilizadores ON utilizadores.id = utilizador_ano.cdg_utilizador WHERE ano LIKE '2015'";
$res = mysqli_query($connection,$cmd);
while($row = mysqli_fetch_array($res)){
   print $row['id'] . ' - ' . $row['cdg_utilizador'] . ' - ' . $row['ano'] . '<br/>'; // e os outros campos todos que quiseres
}


developer @ filipealves.net

filipealvesbcl [a] gmail.com

github.com/filipealvesbcl

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fredericomartins    0
fredericomartins

Está a dar dois erros:

Warning: mysqli_query() expects parameter 1 to be mysqli, resource given

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given

Penso que o primeiro tem a ver com a conneção...

Estou a fazer assim:

$easyadmin = mysql_pconnect($hostname_easyadmin, $username_easyadmin, $password_easyadmin) or trigger_error(mysql_error(),E_USER_ERROR);

O meu código está assim

$cmd = "SELECT * FROM utilizador_anopastoral INNER JOIN utilizadores ON utilizadores.id = utilizador_anopastoral.utilizador WHERE anopastoral LIKE '3'";
$res = mysqli_query($easyadmin,$cmd);
while($row = mysqli_fetch_array($res)){
print $row['nome'] . '<br/>'; // e os outros campos todos que quiseres
}

Editado por apocsantos
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
capesone    3
capesone

Olá fredericomartins

Vou dar exemplos do codigo que uso, logo nao digo que seja a melhor maneira de fazer as coisas, porque tambem sou um iniciante!

Mas o codigo como digo no post abaixo deve funcionar

$easyadmin = mysql_pconnect($hostname_easyadmin, $username_easyadmin, $password_easyadmin) or trigger_error(mysql_error(),E_USER_ERROR);

ai tens um erro de sintaxe e outro de lógica

1º crias a ligação com a base de dados em modo de mysql

2º chamas mal a funcao de mysql_connect

Tambem tens de selecionar a base de dados que vais utilizar

#crias a ligacao
$easyadmin = new Mysqli("server", "user", "password", "base de dados");
#verifica erros
if(mysqli_connect_errno()) die("Erro ao ligar a base de dados");
else return $easyadmin;

eu uso esse codigo dentro de uma função especifica que retorna a ligação.

Se nao usares funções tiras esse else return...

$cmd = "SELECT * FROM utilizador_anopastoral INNER JOIN utilizadores ON utilizadores.id = utilizador_anopastoral.utilizador WHERE anopastoral LIKE '3'";
$res = mysqli_query($easyadmin,$cmd);

$res = $easyadmin -> query($cmd);
$res -> execute();

Tenta assim

Editado por capesone

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fredericomartins    0
fredericomartins

Obrigado! Já funciona ;) Quem sabe sabe!

Codigo final

$easyadmin = new mysqli("localhost", "root", "", "bd");
if(mysqli_connect_errno()) die("Erro ao ligar a base de dados");

$cmd = "SELECT * FROM utilizador_anopastoral INNER JOIN utilizadores ON utilizadores.id = utilizador_anopastoral.utilizador WHERE anopastoral LIKE '3'";
$res = mysqli_query($easyadmin,$cmd);

while($row = mysqli_fetch_array($res)){
print $row['nome'] . '<br/>';
}

Editado por apocsantos
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
chbcl    9
chbcl

Obrigado! Já funciona ;) Quem sabe sabe!

Codigo final

$easyadmin = new mysqli("localhost", "root", "", "bd");
if(mysqli_connect_errno()) die("Erro ao ligar a base de dados");

$cmd = "SELECT * FROM utilizador_anopastoral INNER JOIN utilizadores ON utilizadores.id = utilizador_anopastoral.utilizador WHERE anopastoral LIKE '3'";
$res = mysqli_query($easyadmin,$cmd);

while($row = mysqli_fetch_array($res)){
print $row['nome'] . '<br/>';
}

O teu problema foi que ao iniciar a conexão à base de dados iniciaste com mysql em vez de usares mysqli.


developer @ filipealves.net

filipealvesbcl [a] gmail.com

github.com/filipealvesbcl

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fredericomartins    0
fredericomartins

Estou com outra duvida relacionada com isto, é o seguinte, juntamos as duas tabela e as duas tem um coluna de NOME, como faço para fazer um print $row['nome'] da tabela 2 e não da 1?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.