quinta-feira, 16 de agosto de 2018

Como exibir as preferências do usuário logado com PHP e Mysql


Olá. Como exibir as preferências do usuário logado? Em muito sites, ao logarmos, recebemos mensagens do tipo "Bem vindo, fulano. Veja novidades a respeito de..." e a seguir assuntos do seu interesse. Veremos agora uma forma bem fácil de fazer isso usando sessões ("sessions") em PHP.


O 1º passo é criar uma tabela onde vc irá relacionar os ids dos usuários e das categorias (neste caso, chamei a tabela de preferencias):


Agora, na página de login, certifique-se de que o id do usuário logado será armazenado numa variável de sessão. Veja exemplo abaixo: 

<?php
session_start();
// aqui a conexão

//Pega as informações do form
$senha = $_POST["senha"];
$email = $_POST["email"];

//consulta ao banco de dados

$sql = mysqli_query($conexao, "SELECT id, nome FROM usuarios WHERE email = '$email' AND senha = '$senha'");
$bd = mysqli_fetch_assoc($sql);


// se houver registros, salvamos os dados em variaveis de sessao

if (!empty($bd)) {
    $_SESSION["nome"]  = $bd["nome"];
    $_SESSION["id"]    = $bd["id"];
    header('location:index.php');
}
//Se não ... reconduz o user para a pagina de login
else{
    header('location:login.php');
}
?>

Na página onde o usuário irá se for logado corretamente (em nosso caso, a index.php), insira uma consulta SQL relacionando as 3 tabelas:

<?php
session_start();
// aqui a conexão

echo "Bem vindo, ".$_SESSION["nome"];

$usuariologado=$_SESSION["id"];

$sql = mysqli_query($conexao, "select categ from usuarios
join preferencias
on usuarios.id=preferencias.usuario
join categorias
on categorias.id=preferencias.categ
and usuarios.id='$usuariologado'");

// verificamos se foram localizadas preferencias


if(mysqli_num_rows($sql) > 0) {
echo "<p>veja as novidades sobre<p>";
}

// agora usaremos um loop while para recuperarmos todas as preferencias
// caso existam varias 
while ($bd = mysqli_fetch_assoc($sql)){
echo $bd["categ"]."<br>";
}

?>

E é isso; já deverá estar tudo ok. Caso queira ver mais informações sobre relacionamentos em bancos de dados, confira aqui.