Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,Estou com uma dúvida que está me matando.. Tenho 2 tabelas que estão relacionadas:Usuarios (Campos: id, usuario, datacadastro, sexo, etc.......)Tab_Livros (Campos: id, usuario, livro1)Quando o usuário faz o login.. ele traz perfeitamente o nome do usuário que está logado, além dos demais dados que contém na Tabela Usuários (data cadastro, sexo.. etc).Porém, tudo que está na Tab_Livros, não puxa na session desse usuário que está logado.Segue o código de autenticação:
<?php
$usuario=$_POST['usuario'];
$senha=$_POST['senha'];
$sql = mysqli_query($conn, "SELECT * FROM usuarios WHERE usuario = '$usuario' and senha = '$senha'") or die (mysqli_error());
$row = mysqli_fetch_assoc($sql);
if($row > 0) {
session_start();
$_SESSION[ 'usuario' ] = $row[ 'usuario' ]; //armazenando usuario
$_SESSION[ 'dados_user' ] = $row; //armazenando tudo em forma de array associativo
echo "<center>Autenticação OK! Você será redirecionado, Aguarde!</center>";
echo "<script>loginsuccessfully()</script>";
} else {
echo "<center>Senha ou User invalidos</center>";
echo "<script>loginfailed()</script>";
}
?>
Segue a pagina index.php
<?php include("classe/conexao.php");
$consulta = "SELECT * FROM usuarios INNER JOIN Tab_Livros ON usuarios.usuario = Tab_Livros.usuario LIKE usuarios.usuario and Tab_Livros.usuario = '".$_GET['usuario']."'";
$con = $mysqli->query($consulta) or die($mysqli->error);
$usuario=$_GET['usuario'];
?>
<?php
session_start();
if((!isset ($_SESSION['usuario']) == true)){
unset($_SESSION['usuario']);
header('location:login.php');
}
?>
<p>Teste de Registros do usuário logado com 2 tabelas</p>
<p> </p>
<p>Usuário: <?php echo $_SESSION[ 'dados_user' ][ 'usuario' ]; ?><br>
Registrou-se em: <?php echo $_SESSION[ 'dados_user' ][ 'datacadastro' ]; ?>
<br>
<p>Livro (Aqui deve aparecer o dado da Tab_Livros): <?php echo $_SESSION[ 'dados_user' ][ 'livro1' ]; ?>
Help meeeeeeeeeee!! /applications/core/interface/imageproxy/imageproxy.php?img=http://www.hardware.com.br/comunidade/styles/default/xenforo/clear.png&key=ee5f9ea0427c0039691ddacab6c918c7e5704a1170df6be1046d3cadac176836" style="border:0px;vertical-align:text-bottom;" title="Er... what? o_O" />
Fernando C, obrigado pelo retorno.
Porém dessa forma ele zoa até as informações da primeira tabela, deixando de mostrar o echo dos dados da primeira tabela.
Acredito que seja alguma coisa errada no meu select / na conexão ou na index / que não ta chamado os dados da segunda tabela.
@Casas Junior Seu problema está no LIKE.
Troque isso:
$consulta = "SELECT * FROM usuarios INNER JOIN Tab_Livros ON usuarios.usuario = Tab_Livros.usuario LIKE usuarios.usuario and Tab_Livros.usuario = '".$_GET['usuario']."'";
Por isso:
$consulta = "SELECT * FROM usuarios INNER JOIN Tab_Livros ON usuarios.usuario = Tab_Livros.usuario WHERE Tab_livros.usuario LIKE usuarios.usuario and Tab_Livros.usuario = '".$_GET['usuario']."'";
vou te mostrar onde alterei pra você entender o erro que você tava cometendo no sql:
"SELECT * FROM usuarios INNER JOIN Tab_Livros ON usuarios.usuario = Tab_Livros.usuario **WHERE Tab_livros.usuario** LIKE usuarios.usuario and Tab_Livros.usuario = '"$_GET"'"
Em negrito é a parte que foi adicionada pra funcionar corretamente, testa aí e diz se funcionou.Obrigado pelo retorno, faz sentido mesmo, mas infelizmente ainda assim não traz os dados da segunda tabela.
Nossa não consigo enxergar o que é que está errado, to ficando louco da vida com isso.
perceba o seguinte: INNER JOIN vai obrigar a ter registros em ambas as tabelas ou tratamento de campos nulos, ok?
mas eu imaginei o seguinte:
pag login2.php
// conexao ?><-- html e form -->
} else {// conexao
if(mysqli_num_rows($con) > 0){
while($row = mysqli_fetch_assoc($con)){
else{