Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

phpbrasil

acessar o banco com INNER JOIN

Recommended Posts

Pessoal,

É o seguinte:

 

Estou criando uma pagina chamada editar.php, onde eu edito as informações inseridas no banco por um form.

 

Dentro desse form, existem 4 tabelas relacionadas: USUARIO - TELEFONE(usuario_idusuario(FK)) - LOGRADOURO(usuario_idusuario(FK), cidade_idcidade(FK)) - CIDADE

 

Abaixo segue o codigo trabalhando com as tabelas USUARIO e TELEFONE:

<?php
include('conecta_mysql.php'); 
$vid= $_GET['idusuario'];

$sql = "SELECT usuario.matricula, usuario.nome, usuario.tipo, usuario.curso, usuario.periodo, usuario.email, usuario.login, usuario.senha,telefone.residencial,telefone.celular
FROM usuario 
INNER JOIN telefone 
ON usuario.idusuario = telefone.usuario_idusuario
WHERE usuario.idusuario=$vid";
$query = mysql_query($sql);
if($query == false){
  die("Erro de seleção de dados");
}else{
  $linha = mysql_fetch_array($query);
 

}


?>

Nao estou conseguindo inserir as outras tabelas =/

estao dando erro...

 

Poderiam me ajudaR?

 

Obrigada

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz isso amigo..

so que mesmo assim nao esta dando certo....o formulario aparece sem dado nenhum..

 

segue o codigo que eu fiz:

<?php
include('conecta_mysql.php'); 
$vid= $_GET['idusuario'];

$sql = "SELECT usuario.matricula, usuario.nome, usuario.tipo, usuario.curso, usuario.periodo, usuario.email, usuario.login, usuario.senha,telefone.residencial,telefone.celular,logradouro.endereco,logradouro.comp,logradouro.bairro,logradouro.cep,cidade.nome
FROM usuario 
INNER JOIN telefone 
ON usuario.idusuario = telefone.usuario_idusuario
INNER JOIN logradouro
ON logradouro.usuario_idusuario = usuario.idusuario
INNER JOIN cidade
ON cidade.idcidade = logradouro.cidade_idcidade
WHERE usuario.idusuario=$vid";
$query = mysql_query($sql);
if($query == false){
  die("Erro de seleção de dados");
}else{
  $linha = mysql_fetch_array($query);
 

}


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Quando jogo no banco, ele retorna os resultados rsrsrs que estranho

o formulario aparece sem dado nenhum..

segue o codigo que eu fiz:

1. vc tem que vincular os campos do formulario

aos dados recuperados da consulta;

1 exemplo:

<input type="text" name="nome" value="<?php echo $linha['usuario.nome']; ?>" size="32">

senão o formulario fica vazio mesmo...

 

2. se vc quer editar a tabela, isso q vc postou não executa;

vc tem que definir depois uma instrução update.

 

3. dicas legais sobre sql:

http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-insert-update-delete-e-select.aspx

http://www.linhadecodigo.com.br/artigo/75/principais-instrucoes-em-sql.aspx

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. você tem que vincular os campos do formulario

aos dados recuperados da consulta;

1 exemplo:

<input type="text" name="nome" value="<?php echo $linha['usuario.nome']; ?>" size="32">

senão o formulario fica vazio mesmo...

 

2. se você quer editar a tabela, isso q você postou não executa;

você tem que definir depois uma instrução update.

 

3. dicas legais sobre sql:

http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-insert-update-delete-e-select.aspx

http://www.linhadecodigo.com.br/artigo/75/principais-instrucoes-em-sql.aspx

 

Fernando...fiz o 1 exemplo e nao deu certo.....ele retorna o formulario sem nenhum registro para eu poder editar

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta.. vamos tentar o seguinte:
1. poste o formulário;
2. d 1 echo nessa variavel:

$vid= $_GET['idusuario'];

3. nessa linha:

 

$query = mysql_query($sql);

 

mude para:

$query = mysql_query($sql) or die(mysql_error());

4. da trabalho,
mas o que eu costumo fazer é debugar as
"queries" isoladamente
ANTES dos "joins" da vida..
e sinceramente... esse "where" depois dos "on" me da algumas desconfianças..
considere (seriamente) usar parenteses p/ definir melhor os filtros..

bom, 1 dica: como aparentemente o problema está mais na exibição dos dados no form,
tente fazer uma pagina desse tipo com apenas 1 tabela..
acho q vai ser bem mais simples de "pegar" o erro ai..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta.. vamos tentar o seguinte:

1. poste o formulário;

2. d 1 echo nessa variavel:

$vid= $_GET['idusuario'];

3. nessa linha:

 

 

mude para:

$query = mysql_query($sql) or die(mysql_error());

4. da trabalho,

mas o que eu costumo fazer é debugar as

"queries" isoladamente

ANTES dos "joins" da vida..

e sinceramente... esse "where" depois dos "on" me da algumas desconfianças..

considere (seriamente) usar parenteses p/ definir melhor os filtros..

 

bom, 1 dica: como aparentemente o problema está mais na exibição dos dados no form,

tente fazer uma pagina desse tipo com apenas 1 tabela..

acho q vai ser bem mais simples de "pegar" o erro ai..

 

Fernando, entao...fiz o que voce pediu na 1,2 e 3 e ele me retornou o ID do ususario, onde voce pediu para colocar o echo e o form continua aparecendo em branco...

 

uma duvida....no caso eu tiraria o ON e colocaria os ( ) , e isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi.. olha, testei a sql e realmente está ok, não precisa altera-la.

 

Mas acho que descobri o erro: na linha apos o "else",

se quiser tentar, troque essas linhas:

 

$linha = mysql_fetch_array($query);
}
?>

por essas:

while($linha = mysql_fetch_array($query))
{
?>

<form id="form1" name="form1" method="post" action="">
  <label>nome:   
  <input type="text" name="nome" value="<?php echo $linha['nome']; ?>"/>
  </label>
  <br />
  <label>telefone:
  <input type="text" name="telefone" value="<?php echo $linha['residencial']; ?>"/>
  </label>
  <br />
  <label>
  <input type="submit" name="Submit" value="alterar" />
  </label>
  <br />
</form>
<?php
}
}
?>

aqui deu certo. atenção: isso é só p/ você ter uma ideia de como "carregar" o form c/ os dados do banco. a pagina que d fato efetua a alteração tente ai, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi.. olha, testei a sql e realmente está ok, não precisa altera-la.

 

Mas acho que descobri o erro: na linha apos o "else",

se quiser tentar, troque essas linhas:

 

por essas:

while($linha = mysql_fetch_array($query))
{
?>

<form id="form1" name="form1" method="post" action="">
  <label>nome:   
  <input type="text" name="nome" value="<?php echo $linha['nome']; ?>"/>
  </label>
  <br />
  <label>telefone:
  <input type="text" name="telefone" value="<?php echo $linha['residencial']; ?>"/>
  </label>
  <br />
  <label>
  <input type="submit" name="Submit" value="alterar" />
  </label>
  <br />
</form>
<?php
}
}
?>

aqui deu certo. atenção: isso é só p/ você ter uma ideia de como "carregar" o form c/ os dados do banco. a pagina que d fato efetua a alteração tente ai, ok?

 

Muito Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.