Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Klash

PHP Puxar dados somente para um usuário

Recommended Posts

Eae galera!

 

Sou iniciante com PHP, estou querendo fazer o seguinte:

Puxar os dados que foram inseridos e mostrar somente para o usuário específico.

Vou explicar melhor, antes vou deixar como o sistema está funcionando.

 

Quando vou montar o treino, mostra todos os clientes cadastrados.

 

montartreino.png.0d1ec22e0110b079fd385316c6db3cbf.png

 

Tabela treino

 

tabelatreino.thumb.png.2e97903c89206ff4892c88936c5c5dae.png

 

 

Esses clientes são cadastrados através dessa página:

 

cadastraraluno.png.3dec0afa50bb1a6f56bf4399fe657969.png

 

 

Tabela clientes

 

tabelaclientes.thumb.png.97f48fb1789b8762332316a596c5663b.png

 

Porém, tenho outra página de login, que cadastra o login dos usuários, incluso o tipo de acesso:

 

cadastrarlogin.png.b8fa2e92c896f3bd013e3bbd969b6619.png

 

 

Tabela usuarios:

 

tabelausuarios.thumb.png.603c61408b72cb62d8ccfca101d58159.png

 

 

Quando cadastro o treino, ele lista todos os treinos cadastrados:

 

todosostreinos.png.7abb7f64427d7d966f2e47fae480e3af.png

 

 

Painel ADM:

 

paineladm.thumb.png.22e159a5c2234bc32af0c58c538407eb.png

 

 

Área do Aluno:

 

areadoaluno.png.79bce8a823559ff3740763855cbf3713.png

 

 

 

Eu quero que aconteça o seguinte:

Quando eu cadastrar o treino, os dados seja inserido para determinado usuário e que se pode ser visto por esse usuário. Exemplo:

Tem 3 usuários: João, José e Pedro

Eu cadastro um treino para João, somente João vai poder ver aquele treino cadastrado, que vai estar na área do aluno (como na imagem), na opção Ver Treino.

 

Como fazer isso?

 

Vou deixar os códigos, caso queiram entender melhor a lógica que estou utilizando.

 

inserirTreino.php

 

<!doctype html>
<html lang="pt-br">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="bootstrap/css/style.css" rel="stylesheet">
    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
		<title>Montar Treino - Hércules Academia de Musculação</title>

		
	</head>
	<body class="adminstrutor">
		
			<p class="menuadm"><img src="bootstrap/img/logo.jpg" class="rounded-circle"><br>
                Área Restrita - Instrutor</p>
                <div class="w3-container w3-grey">
                    <h2 style="text-align: center;">Montar Treino</h2>
                </div>
                <br>
                <div class="d-flex justify-content-center align-items-center container ">
                    
                <form id="frmCadTreino" name="frmCadTreino" method="post" action="insTreino.php" role="form">
          <div class="form-group">
             <label for="lblCliente">Cliente:</label>
             <!-- recuperar dados para serem alocados no select -->
             <?php
                      require_once('conectar.php'); 
                      $con = open_database();
                      selectDb();
                      $rsCli = mysql_query("select * from clientes;"); 
                      close_database($con);
             ?>
             <!-- Carregamentos dos dados e construção do select -->
             <select name="slcCliente" id="slcCliente" class="form-control">
                 <!-- definir primeira linha e deixar selecionado -->
                <?php $row = mysql_fetch_array($rsCli); ?>
                <option value="<?php echo $row['id'] ?>" selected>
                  <?php echo $row['nome'];?> 
                </option>
                <!-- definir demais linhas do select option -->
                <?php while($row = mysql_fetch_array($rsCli)){?>
                  <option value="<?php echo $row['id'] ?>"><?php echo $row['nome'];?> </option>
                <?php }?>
             </select>      
          </div>
          <br><br> 
        <div class="form-group">
            <label for="lblData">Data: </label>
            <input type="date" class="form-control" name="txtdata" id="txtData"
                   value="<?php (new DateTime())->format('Y-m-d') ?>"
        </div>
                </div>
                <div class="form-group">
          <label for="lblObj">Objetivo: </label>
          <input type="text" class="form-control" name="txtObj" id="txtObj" placeholder="Objetivo do Aluno">
       </div>
        <div class="form-group">
          <label for="lblExe">Exercício:</label>
          <input type="text" class="form-control" name="txtExe" id="txtExe" placeholder="Nome do Exercício">
       </div>
       <div class="form-group">
          <label for="lblSer">Séries:</label>
          <input type="text" class="form-control" name="txtSer" id="txtSer" placeholder="Quantidade Séries">
       </div>
       <div class="form-group">
          <label for="lblRep">Repetições:</label>
          <input type="text" class="form-control" name="txtRep" id="txtRep" placeholder="Quantidade de Repetições">
       </div>
       <input name="bt_cad" id="bt_cad" class="btn btn-success " type="submit" value="Cadastrar Treino"> 
                </body>
                </html>

 

inserirClientes.html

 

<!doctype html>
<html lang="pt-br">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="bootstrap/css/style.css" rel="stylesheet">
    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
		<title>Cadastrar Aluno - Hércules Academia de Musculação</title>

		
	</head>
	<body class="adminstrutor">
		
			<p class="menuadm"><img src="bootstrap/img/logo.jpg" class="rounded-circle"><br>
                Área Restrita - Instrutor</p>
                <div class="w3-container w3-grey">
                    <h2 style="text-align: center;">Cadastrar Aluno</h2>
                  </div>
                  <br>
                  <div class="d-flex justify-content-center align-items-center container ">
                    
    <form id="frmCadastrarClientes" name="frmCadastrarClientes" method="post" action="inserirCli.php">
      <div class="form-row">
        <div class="col">
            <label for="lblNom">Nome do Aluno:</label>
            <input type="text" class="form-control" id="txtNom" name="txtNom" placeholder="Nome do Aluno">
        </div>
        <div class="col">
            <label for="lblCpf">CPF:</label>
            <input type="text" class="form-control" name="txtCpf" id="txtCpf"  placeholder="CPF do Aluno">
        </div>
      </div>
      <div class="form-row">
          <div class="col">
              <label for="lblNas">Nascimento</label>
              <input type="text" class="form-control" name="txtNas" id="txtNas" placeholder="Data de Nascimento">
          </div>
          <div class="col">
              <label for="lblCel">Celular:</label>
              <input type="text" class="form-control" name="txtCel" id="txtCel" placeholder="Número do Celular">
          </div>
        </div>
        <div class="form-row">
            <div class="col">
                <label for="lblEnd">Endereco:</label>
                <input type="text" class="form-control" name="txtEnd" id="txtEnd" placeholder="Endereço do Aluno">
            </div>
            <div class="col">
                <label for="lblBai">Bairro:</label>
                <input type="text" class="form-control" name="txtBai" id="txtBai" placeholder="Bairro do Aluno">
            </div>
          </div>
          <div class="form-row">
              <div class="col">
                  <label for="lblCep">CEP:</label>
                  <input type="text" class="form-control" name="txtCep" id="txtCep" placeholder="CEP do Aluno">
              </div>
              <div class="col">
                  <label for="lblCid">Cidade:</label>
                  <input type="text" class="form-control" name="txtCid" id="txtCid" placeholder="Cidade do Aluno">
              </div>
            </div>
        </div>
        <div class="d-flex justify-content-center align-items-center container ">
        <div class="form-row">
        <div class="col-sm-4">
       <input name="bt_cad" id="bt_cad" class="btn btn-success " type="submit" value="Cadastrar Aluno"> 
    </div>
    <div class="col-sm-4">
       <input name="bt_voltar" id="bt_voltar" class="btn btn-primary" type="button" value="Ver Todos Clientes"
             onclick="javascript:location.href='listarClientes.php'"> 
            </div>
            </div>
            </div>
            </form>
</body>
</html>

inserirLogin.html 

 

<!doctype html>
<html lang="pt-br">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="bootstrap/css/style.css" rel="stylesheet">
    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
		<title>Cadastrar Login - Hércules Academia de Musculação</title>

		
	</head>
	<body class="adminstrutor">
		
			<p class="menuadm"><a href="paineladm.html"><img src="bootstrap/img/logo.jpg" class="rounded-circle"></a><br>
                Área Restrita - Instrutor</p>
                <div class="w3-container w3-grey">
                    <h2 style="text-align: center;">Cadastrar Login</h2>
                  </div>
                  <br>
                  <div class="d-flex justify-content-center align-items-center container ">
                    
                  <form action="controle.php" method="post">
                  <label>Login do Usuário:</label>
                  <input type="text" class="form-control" name="login" value="" required/><br>
                  <label>Senha do Usuário:</label>
        <input type="password" class="form-control" name="senha" value="" required /><br>
        <label>Tipo de usuário:</label>
        <select name="tipo_usuario" class="form-control" required>
            <option value="">Selecione</option>
            <option value="1">Usuario Comum</option>
            <option value="2">Administrador</option>
        </select><br /><br>
        <input type="submit" class="btn btn-success" name="cadastrar" value="Cadastrar" style="left: 57%; top: 70%;"/>
        </form>
    </body>
</html>

listarTreinos.php

 

<?php
  /*   session_start();
    if (!isset($_SESSION['user'])) //AND (!isset($_SESSION[nome])) ) 
        Header("Location: index.html"); */

     require_once('conectar.php'); 
     $con = open_database();
     selectDb();
     $rs = mysql_query("select treino.id, treino.cliente, 
                        clientes.nome,  treino.data, treino.objetivo, treino.exercicio,
                        treino.series, treino.repeticoes
                        from treino INNER JOIN clientes
                        on treino.cliente = clientes.id;"); 
     close_database($con); 
?>
<html>
    <head>
        <meta charset="UTF-8">
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
	    <link href="bootstrap/css/style.css" rel="stylesheet">
        <title>Gerenciar Treinos - Hércules Academia de Musculação</title>
    </head>
    <body class="container">
       
        <div class="row col-md-7">
        <table  class="table table-striped table table-hover">
            <tr>
                 <th>ID</th>
                 <th>CliId</th>
                 <th>Nome Cliente</th>
                 <th>Data</th> 
                 <th>Objetivo</th> 
                 <th>Exercicio</th> 
                 <th>Series</th> 
                 <th>Repeticoes</th>  
                 <th></th>
                 <th></th>
            </tr>
            <?php while ($row = mysql_fetch_array($rs)) { ?>
                <tr>
                   <td><?php echo $row['id'] ?></td>
                   <td><?php echo $row['cliente'] ?></td>
                   <td><?php echo $row['nome'] ?></td>
                   <td><?php echo (new DateTime($row['data']))->format("d-m-Y"); ?></td>
                   <td><?php echo $row['objetivo'] ?></td>
                   <td><?php echo $row['exercicio'] ?></td>
                   <td><?php echo $row['series'] ?></td>
                   <td><?php echo $row['repeticoes'] ?></td>

                   <td>
                      <button type="button" class="btn btn-warning" 
                         onclick="javascript: location.href='frmEdtPro.php?id=' +
                         <?php echo $row['id'] ?>">
                        <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                      </button>
                   </td>
                   <td>
                      <button type="button" class="btn btn-danger" 
                         onclick="javascript: location.href='frmRemPro.php?id=' +
                         <?php echo $row['id'] ?>">
                        <span class="glyphicon glyphicon-remove-sign" aria-hidden="true"></span>
                      </button>
                   </td>
                </tr>
            <?php } ?>  
        </table>
    </<body>
        
</html>

 

Como ficaria esse novo arquivo verTreino.php para puxar esses dados?

 

 

Obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Klash Basta você adicionar no seu SQL a clausula  WHERE  baseado no ID do cliente.

 

select treino.id, treino.cliente, 
                        clientes.nome,  treino.data, treino.objetivo, treino.exercicio,
                        treino.series, treino.repeticoes
                        from treino INNER JOIN clientes
                        on treino.cliente = clientes.id
WHERE treino.cliente = $ID_cliente;

Onde esse $ID_cliente é recebido pela SESSION  que você deve fazer durante a verificação de login.

 

Recomendo ler este meu post que eu explico como fazer isso:

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @DiF

 

Desculpe a ignorância, mais aonde vou inserir esse $ID_Cliente? Não consegui através da outra explicação.

 

Tenho os seguintes arquivos para o login:

 

conectar.php

 

<?php
function open_database() {
  $conectar = mysql_connect("localhost", "root", ""); 
  if (!$conectar){
      echo "Erro: Não foi possível conectar ao banco de dados";
      exit;
  }
  return $conectar; 
}

function close_database($conectar) {
    if (!$conectar) {
        echo "Erro: Não foi possível fechar o banco de dados"; 
    }
     mysql_close($conectar);
}

function selectDb(){
  $dados = mysql_select_db("academia"); 
  if (!$dados){
      echo "Erro: Não foi possível conectar ao banco de dados sisinfo"; 
      exit; 
  }
}
?>

 

controle.php

 

<?php
namespace controle;
include 'processaAcesso.php';
use processaAcesso as processaAcesso;
$controle = new \processaAcesso\ProcessaAcesso;
if ($_POST['enviar']) {
    $login = $_POST['login'];
    $senha = md5($_POST['senha']);
    $usuario = $controle->verificaAcesso($login, $senha);
    if ($usuario[0]['id_tipo_acesso'] == 1) {
        header("Location:areadoaluno.html");
    } else if ($usuario[0]['id_tipo_acesso'] == 2) {
        header("Location:paineladm.html");
    }
} else if ($_POST['cadastrar']) {
    $login = $_POST['login'];
    $senha = md5($_POST['senha']);
    $tipo_usuario = $_POST['tipo_usuario'];
    $arr = array('login_usuario' => $login, 'senha_usuario' => $senha,
'id_tipo_acesso' => $tipo_usuario);
    if (!$controle->cadastraUsuario($arr)) {
        echo 'Aconteceu algum erro';
    } else {
        $tipo_acesso = $controle->verificaAcesso($login, $senha);
        if ($tipo_acesso[0]['id_tipo_acesso'] == 1) {
            header("Location:areadoaluno.html");
        } else if ($tipo_acesso[0]['id_tipo_acesso'] == 2) {
            header("Location:paineladm.html");
        }
    }
}
?>

 

mysql.php

 

<?php
namespace Mysql {
    define('DB_SERVER', 'localhost');
    define('DB_NAME', 'academia');
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', '');
 
    class mysql {
        var $db, $conn;
        public function __construct($server, $database, $username, $password) {
            $this->conn = mysql_connect($server, $username, $password);
            $this->db = mysql_select_db($database, $this->conn);
        }
        public function select($tabela, $colunas = "*", $where = "1=1") {
            $sql = "SELECT $colunas FROM $tabela $where";
            $result = $this->executar($sql);
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                $return[] = $row;
            }
            return $return;
        }
        public function insert($tabela, $dados) {
 
            foreach ($dados as $key => $value) {
                $keys[] = $key;
                $insertvalues[] = '\'' . $value . '\'';
            }
            $keys = implode(',', $keys);
            $insertvalues = implode(',', $insertvalues);
            $sql = "INSERT INTO $tabela ($keys) VALUES ($insertvalues)";
            return $this->executar($sql);
        }
        private function executar($sql) {
            $return_result = mysql_query($sql, $this->conn);
            if ($return_result) {
                return $return_result;
            } else {
                $this->sql_error($sql);
            }
        }
        private function sql_error($sql) {
            echo mysql_error($this->conn) . '<br>';
            die('error: ' . $sql);
        }
    }
}
?>

 

processaAcesso.php

 

<?php
namespace processaAcesso {
include 'mysql.php';
    use Mysql as Mysql;
    class ProcessaAcesso {        
        var $db;
        public function __construct() {
            $conexao = new Mysql\mysql(DB_SERVER, DB_NAME, DB_USERNAME, DB_PASSWORD);
            $this->db = $conexao;
        }
        public function verificaAcesso($login, $senha) {            
            $select = $this->db->select('usuarios', '*',
" where login_usuario = '$login' and senha_usuario = '$senha'");
            return $select;
        }        
        public function cadastraUsuario($dados){            
            $insert = $this->db->insert('usuarios', $dados);
            return $insert;
        }
    }
}
?>

index.php

 

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title> Área Restrita - Hércules </title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="bootstrap/css/style.css" rel="stylesheet">
    
</head>
<body background="bootstrap/img/bc.jpg" style="max-width: 100%; height: auto;" class="login">
<div class="login-page">
<div class="form">
    <form action="controle.php" method="post">
    <img src="bootstrap/img/perfil.png" class="rounded" alt="Login"> 
        <input type="text" name="login" value="" placeholder="Usuário" />
        <input type="password" name="senha" value=""  placeholder="Senha" />
        <input type="submit" name="enviar" id="but" value="Login"/>
    </form>
</div>
</div>
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Klash Então,  o $ID_Cliente é a variável que você vai usar para receber o valor ID do usuário que vai estar na sessão, ao fazer o login. 

Como você disse que era iniciante, este modo que você está desenvolvendo é bem mais "avançado" para iniciantes, está para  intermediário. 

 

Não vi em nenhum momento do seu código usar a session para armazenar o valor.

Outra coisa que vi, é que quando vai redirecionar, você usa arquivo html.   Recomendo trocar para php, pois lá você vai ter que usar o php para trazer o ID do cliente, para justamente poder colocar na consulta que você precisa para recuperar os dados daquela pessoa.

 

 

Se eu pudesse recomendar, diria para você refazer toda a parte back-end(php) usando a extensão mysqli e fazendo de forma procedural.  

A não ser que seja excepcionalmente necessário fazer com MVC.

 

De qualquer forma, para você fazer o que precisa, é imprescindível que implementes o uso das SESSIONS .

Eu explico isso no tópico que eu postei mais acima.

 

Em 31/05/2018 às 16:28, DiF disse:

Recomendo ler este meu post que eu explico como fazer isso:

 

Apesar de não ser com o modelo(MVC) é funcional e bem didático para inicio de aprendizado de como fazer uma consulta baseada no ID do usuário que logou. Para ter este ID do usuário que logou, é necessário da SESSION.

 

 

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá DiF

 

Agradeço pela resposta.

 

Exatamente, estou utilizando esse sistema de login, pois é exatamente o que eu precisava. Um sistema de login com permissões e proteção de senha, que nesse caso está utilizando md5.

Possui algum tutorial para recomendar que tenha essas funções, só que de forma mais simples?

 

Outra dúvida:

 

No caso dessa estrutura atual, estou utilizando uma página para cadastro de aluno e outra só para cadastrar o login. O mais adequado seria colocar tudo em uma página só?

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Klash

Realmente é difícil tentar explicar via texto, mas vou tentar o mais claro e objetivo possível.

Antes de adentrar no back-end,  é imprescindível que o banco de dados esteja modelado corretamente.

 

Pelo que eu vi nas suas imagens, parece estar bem modelado seguindo pelo menos a primeira NF e a segunda NF.

Só certifique-se de que suas tabelas sejam do tipo innoDB para que o controle de índices e relacionamentos possam funcionar.

Não vi nas imagens, mas deve ter uma tabela para o tipo de acesso também.

 

Um relacionamento certo consiste em que a tabela na qual você vai buscar os dados, deve ter um índice para relacionar o campo INT que receberá a chave estrangeira.  Na maioria das vezes, usa-se o ON Cascade para deletes e updates, que serve para alterar ou remover um dados que há dependentes.

 

A forma procedural no php é o paradigma mais fácil de se exercitar.

Por isso eu recomendo você fazer desta forma, simples mas funcional.

 

Tendo em vista que você já modelou o banco de dados e ele está registrando de forma correta os dados no PHP eu faria da seguinte forma:

Arquivo de conexão:

<?php
  $conexao = mysqli_connect("localhost", "root","", "nomeDoSeuBancoDeDados");

Sim, pode ser assim, sem "fechar" o php. É uma prática que se algo der errado ele apresenta fatal error e para a execução.

 

No arquivo PHP que recebe os dados do formulário ao fazer o login, vamos chamar de autenticaUsuario.php:

//Abre a sessão. Obrigatório ser o primeiro
session_start();

//Recebe os dados do formulário
$login = $_POST["login"];
$senha = $_POST["senha"];
	
//adiciona barras para evitar SQL injection
$loginSeguro = addslashes($login);

//Além disso, a senha é encriptada em md5
$senhaSegura = md5(addslashes($senha));
	
//testa para saber se os campos estão vazios
if (empty($login) or empty($senha)):
    echo "<script>
          alert('Preencha todos os campos');
          history.go(-1);
          </script>";
    exit;    
endif;
	
//inclui a conexao	
include 'conexao.php';
	
//consulta ao banco de dados
$dados = mysqli_query($conexao, "SELECT id,
                                        login_usuario,
                                        senha_usuario,
                                        id_tipo_acesso 
                                 FROM usuarios WHERE login_usuario ='$loginSeguro' 
                                 AND senha_usuario = '$senhaSegura' ");

//armazena na variável o número de linhas encontradas
$num = mysqli_num_rows($dados);
	
//se zero, é porque ele errou a senha ou o login
if ($num == 0):
	echo "<script>
			alert('Usuario ou senha Incorreta');
			history.go(-1);
			 </script>";
	exit;
else :
    
    //armazena a função fetch_object onde é tratado como objeto
	$linha = mysqli_fetch_object($dados);

    //armazena na variável o número ID do usuário 
	$id_user = $linha->idUsuario;

    //armazena o tipo de acesso do usuário
    $permissao = $linha->id_tipo_acesso;
		
    //armazena na sessão o ID do usuário logado 
	$_SESSION["id_usuario"] = $id_user;

    //armazena na sessão o nome do login.
    //aqui pode ser e-mail, login, nome do usuário e etc.
	$_SESSION["login"] = $login;

    //Testa o tipo de conta. Se for 1 manda para a área do aluno
      if($permissao == 1):
           //manda o usuário para a páginas depois de logado		
	   header ("Location: areadoaluno.php");

      else:
          //manda o usuário para a páginas depois de logado		
	  header ("Location: paineladm.php"); 
      endif; 
		
endif;

Basicamente, no código acima, quando o usuário fizer o login, será verificado o tipo de conta que está sendo autenticado. Se for 1 e estiver tudo OK, ou seja, se o usuário digitado e senha forem correspondentes, o usuário será redirecionado para a área do aluno, caso contrário, será redirecionado para a área do painel adm.

 

Só que para tudo dar certo, você deve precisa verificar a sessão e trazer os dados referente ao ID do usuário que logou.

Para isso temos:

 

Arquivo areadoaluno.php

 

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");

/*testa se a sessão tem valor.
  Refere-se a linha lá no arquivo de login onde
  é inserido o login na sessão. */
if(!isset($_SESSION["login"])):
    header("location: index.php");
else:
    $login = $_SESSION["login"];
endif; 

//Pega o id que está na sessão
$id_usuario = $_SESSION["id_usuario"];

include 'conexao.php';

$rs = mysqli_query($conexao,"select treino.id, treino.cliente, 
                                    clientes.nome,  treino.data, treino.objetivo, treino.exercicio,
                                    treino.series, treino.repeticoes
                            from treino INNER JOIN clientes on treino.cliente = clientes.id
                            WHERE treino.cliente = $id_usuario"); 
   
?>

<html>
    <head>
        <meta charset="UTF-8">
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
	    <link href="bootstrap/css/style.css" rel="stylesheet">
        <title>Gerenciar Treinos - Hércules Academia de Musculação</title>
    </head>
    <body class="container">
       
        <div class="row col-md-7">
        <table  class="table table-striped table table-hover">
            <tr>
                 <th>ID</th>
                 <th>CliId</th>
                 <th>Nome Cliente</th>
                 <th>Data</th> 
                 <th>Objetivo</th> 
                 <th>Exercicio</th> 
                 <th>Series</th> 
                 <th>Repeticoes</th>  
                 <th></th>
                 <th></th>
            </tr>
            <?php 
               while ($row = mysqli_fetch_object($rs)) : 
                   
                 $data = (new DateTime($row->data))->format("d-m-Y");
                 echo " <tr>
                        <td> $row->id</td>
                        <td>$row->cliente</td>
                        <td>$row->nome</td>
                        <td>$data</td>
                        <td>row->objetivo</td>
                        <td>$row->exercicio</td>
                        <td>$row->series</td>
                        <td>$row->repeticoes</td>

                        <td>
                           <button type='button' class='btn btn-warning' 
                            onclick='javascript: location.href='frmEdtPro.php?id=$row->id'>
                              <span class='glyphicon glyphicon-pencil' aria-hidden="true'></span>
                           </button>
                       </td>
                       <td>
                           <button type='button' class='btn btn-danger' 
                            onclick='javascript: location.href='frmRemPro.php?id=$row->id'>
                             <span class='glyphicon glyphicon-remove-sign' aria-hidden='true'></span>
                           </button>
                       </td>
                       </tr>";

                endwhile; 
              ?>  
        </table>
    </<body>      
</html>

As primeiras linhas abrem a sessão, e inserem um cookie. Depois, testa a sessão. Se estiver vazio, vai ser mandado de volta para a tela de login, se estiver OK  atribui a uma variável chamada $login o login dessa pessoa. No caso, se você  optou por colocar na sessão o nome do usuário, você poderia chamar o $login  no "Bem vindo, $login "   Onde ele mostraria o nome. E

 

Depois disso, eu faço a consulta na tabela baseado no valor ID do usuário logado, pego  pela session. 

 

O retorno dos dados, eu apresento com o fetch_object, pois permite tratar os dados como objeto. Eu acho mais "clean" desta forma.  

Mostrando um dado assim:  $row->nome. (isto é só um exemplo)

 

Depois construímos a estrutura da tabela que vai ser repetida, no caso a <tr>.

 

Nos botões, como está tudo dentro do echo, as aspas duplas foram substituídas pelas aspas simples.  No evento de onclick, pode colocar direto a variável junto ao endereço .

 

Enfim, este é só um exemplo do código que eu faria, baseado no que eu vi. Pode ser que precise alterar algo.

Para o painel admin, você vai fazer a mesma coisa que ali acima.

 

Colocar o mesmo código php inicial que tem no do aluno... mas fazendo a consulta voltada para trazer os dados ao admin.

 

Recomendo, que você, estude estes códigos que passei acima. Tente entende-los linha a linha.

 

11 horas atrás, Klash disse:

Outra dúvida:

 

No caso dessa estrutura atual, estou utilizando uma página para cadastro de aluno e outra só para cadastrar o login. O mais adequado seria colocar tudo em uma página só?

 

Você pode dividir sem problemas. Não posso dizer um "mais adequado" pois isso depende muito do jeito que o programador trabalha, pessoalmente, eu crio uma página para os dois, mas chamando arquivos diferentes pelo ajax e jQuery.

 

Ufa.. terminei de digitar.. agora posso por as mãos no bolso, porque está frio! :lol:

Boa sorte! :thumbsup:

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá DiF

 

Muito obrigado pela ajuda, estou conseguindo acompanhar toda a lógica e entender o código. Porém, segue as dúvidas rsrsrs

 

Você falou para utilizar areadoaluno.php

Porém a área do aluno atual, ela possui a seguinte estrutura:

 

areadoaluno.html

<!doctype html>
<html lang="pt-br">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="bootstrap/css/style.css" rel="stylesheet">
    
		<title>Área do Aluno - Hércules Academia de Musculação</title>
	</head>
	<body class="areaaluno">
		
			<p class="menualuno"><img src="bootstrap/img/logo.jpg" class="rounded-circle"><br>
				Área Restrita - Aluno</p>
   <section class="painelaluno">
		<div class="container">
			<div class="row">
				<div class="col-sm"><a href="verTreino.php"><img src="bootstrap/img/fichatreino.png" width="64px" height="64px"><br>
			<p>Ver Treino</p></a></div>
			<div class="col-sm"><a href="#" ><img src="bootstrap/img/veravaliacaofisica.png"><br>
					<p>Ver Avaliação Física</p></a></div>
					<div class="col-sm"><a href="#"><img src="bootstrap/img/enviarduvida.png"><br>
							<p>Enviar Dúvida</p></a></div>

									
			</div>  
		</div>
		<div class="container">
					<div class="row">
						<div class="col-sm"><a href="#" ><img src="bootstrap/img/videos.png"><br>
					<p>Vídeos de Exercícios</p></a></div>
					<div class="col-sm"><a href="#" ><img src="bootstrap/img/gerenciartreinos.png"><br>
							<p>Artigos</p></a></div>
							<div class="col-sm"><a href="#"><img src="bootstrap/img/sair.png"><br>
									<p>Sair</p></a></div>
</div>  			
				</div>
            </section>
            <br>   <br>   <br>   <br> 
			<section classs="footeraluno">
                    <div class="rodapealuno">
                        <div class="container">
                                <div class="row">
                                    <div class="col-md-6">
                                        <p class="p-aluno">SOBRE</p>
                                        <p>A Hércules, tem como principal objetivo<br>
                                            levar o esporte e a atividade física como<br>
                                            um estilo de vida para seus alunos. <br>
                                            Ajudando assim, a alcançarem o bem-estar<br>
                                            e a qualidade de vida, além de melhorias<br>
                                            e conquistas pessoais e sociais.
                                        </p>
                                    </div>
                                    <div class="col-md-6">
                                        <p class="p-aluno">INFORMAÇÕES</p>
                                        <p><i class="fa fa-home mr-3"></i> Avenida Dom Antonio, 1715</p>
                                        <p><i class="fa fa-envelope mr-3"></i> info@gmail.com</p>
                                        <p><i class="fa fa-phone mr-3"></i> 18 997192015</p>
                                        <P><i class="fa fa fa-history mr-3"></i>Seg-Sex: 6:30 às 22hrs / Sáb: 10hrs às 15hrs</P>
                                    </div>
                                </div>
                            </div>
                            </div>
                </section>
                
        </body>
        </html>

 

Que é essa tela:

 

areadoaluno.png.79bce8a823559ff3740763855cbf3713.png

 

 

No caso, quero que o treino apareça para o usuário específico somente na opção Ver Treino. Quando autentica o usuário ele redireciona para a página areadoaluno.php, onde mostra somente o treino do usuário e não essa tela acima.

 

Eu peguei o código que seria para areadoaluno.php e criei um novo arquivo verTreino.php e adicionei o código que você colocou na última resposta.

E a areadoaluno.html, continuou essa mesma que coloquei acima. Está correto? Quando o usuário fizer login, ir para a área dele e clicar em Ver Treino, irá mostrar o treino dele ou deve ser feito a checagem do login já na areadoaluno.html (que viraria .php), para quando ele clicar em Ver Treino estar lá o treino.

 

Outra dúvida:

 

Eu fiz algumas alterações e em vez de selecionar o id do cliente, coloquei do usuário, ou seja, na hora de cadastrar o treino, não mostra mais os clientes e sim o nome de usuário. Ficou assim:

 

inserirTreino.php

 

<!doctype html>
<html lang="pt-br">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="bootstrap/css/style.css" rel="stylesheet">
    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
		<title>Montar Treino - Hércules Academia de Musculação</title>

		
	</head>
	<body class="adminstrutor">
		
			<p class="menuadm"><img src="bootstrap/img/logo.jpg" class="rounded-circle"><br>
                Área Restrita - Instrutor</p>
                <div class="w3-container w3-grey">
                    <h2 style="text-align: center;">Montar Treino</h2>
                </div>
                <br>
                <div class="d-flex justify-content-center align-items-center container ">
                    
                <form id="frmCadTreino" name="frmCadTreino" method="post" action="insTreino.php" role="form">
          <div class="form-group">
             <label for="lblCliente">Cliente:</label>
             <!-- recuperar dados para serem alocados no select -->
             <?php
                      include('conexao.php'); 
                      $rsCli = mysqli_query($conexao,"select * from usuarios;"); 
             ?>
             <!-- Carregamentos dos dados e construção do select -->
             <select name="slcCliente" id="slcCliente" class="form-control">
                 <!-- definir primeira linha e deixar selecionado -->
                <?php $row = mysqli_fetch_array($rsCli); ?>
                <option value="<?php echo $row['id'] ?>" selected>
                  <?php echo $row['login_usuario'];?> 
                </option>
                <!-- definir demais linhas do select option -->
                <?php while($row = mysqli_fetch_array($rsCli)){?>
                  <option value="<?php echo $row['id'] ?>"><?php echo $row['login_usuario'];?> </option>
                <?php }?>
             </select>      
          </div>
          <br><br> 
        <div class="form-group">
            <label for="lblData">Data: </label>
            <input type="date" class="form-control" name="txtdata" id="txtData"
                   value="<?php (new DateTime())->format('Y-m-d') ?>"
        </div>
                </div>
                <div class="form-group">
          <label for="lblObj">Objetivo: </label>
          <input type="text" class="form-control" name="txtObj" id="txtObj" placeholder="Objetivo do Aluno">
       </div>
        <div class="form-group">
          <label for="lblExe">Exercício:</label>
          <input type="text" class="form-control" name="txtExe" id="txtExe" placeholder="Nome do Exercício">
       </div>
       <div class="form-group">
          <label for="lblSer">Séries:</label>
          <input type="text" class="form-control" name="txtSer" id="txtSer" placeholder="Quantidade Séries">
       </div>
       <div class="form-group">
          <label for="lblRep">Repetições:</label>
          <input type="text" class="form-control" name="txtRep" id="txtRep" placeholder="Quantidade de Repetições">
       </div>
       <input name="bt_cad" id="bt_cad" class="btn btn-success " type="submit" value="Cadastrar Treino"> 
                </body>
                </html>
       
       

 

insTreino.php

 

<?php
    include('conexao.php'); 

    $cliente  = trim($_POST['slcCliente']);
    $data = trim($_POST['txtdata']); 
    $objetivo = trim($_POST['txtObj']); 
    $exercicio = trim($_POST['txtExe']); 
    $series = trim($_POST['txtSer']); 
    $repeticoes = trim($_POST['txtRep']); 

    if(!empty($cliente) && !empty($data) && !empty($objetivo) && !empty($exercicio) && !empty($series) && !empty($repeticoes)){ 
 
	  $rs = mysqli_query($conexao,"INSERT INTO treino (cliente, data, objetivo, exercicio, series, repeticoes) VALUES  ('$cliente', '$data', '$objetivo', '$exercicio', '$series', '$repeticoes'");
      $ins = mysqli_query($rs); 


      if ($ins==FALSE)
         $msg = "Erro ao inserir treino..."; 
      else {
         $msg = "Foi inserido" . mysqli_affected_rows() . " registros <br/>";
         unset($cliente, $data, $objetivo, $exercicio, $series, $repeticoes); 
      }
      echo $msg; 
    }
    header("location: listarTreinos.php")
    ?>

 

listarTreinos.php

 

<?php
  /*   session_start();
    if (!isset($_SESSION['user'])) //AND (!isset($_SESSION[nome])) ) 
        Header("Location: index.html"); */

     include('conexao.php'); 

     $rs = mysqli_query($conexao,"select treino.id, 
                        usuarios.id,  treino.data, treino.objetivo, treino.exercicio,
                        treino.series, treino.repeticoes
                        from treino INNER JOIN usuarios
                        on treino.id = usuarios.id;"); 

?>
<html>
    <head>
        <meta charset="UTF-8">
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
	    <link href="bootstrap/css/style.css" rel="stylesheet">
        <title>Gerenciar Treinos - Hércules Academia de Musculação</title>
    </head>
    <body class="container">
       
        <div class="row col-md-7">
        <table  class="table table-striped table table-hover">
            <tr>
                 <th>ID</th>
                 <th>Nome Cliente</th>
                 <th>Data</th> 
                 <th>Objetivo</th> 
                 <th>Exercicio</th> 
                 <th>Series</th> 
                 <th>Repeticoes</th>  
                 <th></th>
                 <th></th>
            </tr>
            <?php while ($row = mysqli_fetch_array($rs)) { ?>
                <tr>
                   <td><?php echo $row['id'] ?></td>
                   <td><?php echo $row['id'] ?></td>
                   <td><?php echo (new DateTime($row['data']))->format("d-m-Y"); ?></td>
                   <td><?php echo $row['objetivo'] ?></td>
                   <td><?php echo $row['exercicio'] ?></td>
                   <td><?php echo $row['series'] ?></td>
                   <td><?php echo $row['repeticoes'] ?></td>

                   <td>
                      <button type="button" class="btn btn-warning" 
                         onclick="javascript: location.href='frmEdtPro.php?id=' +
                         <?php echo $row['id'] ?>">
                        <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                      </button>
                   </td>
                   <td>
                      <button type="button" class="btn btn-danger" 
                         onclick="javascript: location.href='frmRemPro.php?id=' +
                         <?php echo $row['id'] ?>">
                        <span class="glyphicon glyphicon-remove-sign" aria-hidden="true"></span>
                      </button>
                   </td>
                </tr>
            <?php } ?>  
        </table>
    </<body>
        
</html>

 

verTreino.php

 

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");

/*testa se a sessão tem valor.
  Refere-se a linha lá no arquivo de login onde
  é inserido o login na sessão. */
if(!isset($_SESSION["login"])):
    header("location: index.php");
else:
    $login = $_SESSION["login"];
endif; 

//Pega o id que está na sessão
$id_usuario = $_SESSION["id_usuario"];

include 'conexao.php';

$rs = mysqli_query($conexao,"select treino.id, 
                                    usuarios.id,  treino.data, treino.objetivo, treino.exercicio,
                                    treino.series, treino.repeticoes
                            from treino INNER JOIN usuarios on treino.id = usuarios.id
                            WHERE usuarios.id = $id_usuario"); 
   
?>

<html>
    <head>
        <meta charset="UTF-8">
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
	    <link href="bootstrap/css/style.css" rel="stylesheet">
        <title>Gerenciar Treinos - Hércules Academia de Musculação</title>
    </head>
    <body class="container">
       
        <div class="row col-md-7">
        <table  class="table table-striped table table-hover">
            <tr>
                 <th>ID</th>
                 <th>Nome Cliente</th>
                 <th>Data</th> 
                 <th>Objetivo</th> 
                 <th>Exercicio</th> 
                 <th>Series</th> 
                 <th>Repeticoes</th>  
                 <th></th>
                 <th></th>
            </tr>
           <?php 
               while ($row = mysqli_fetch_object($rs)) : 
                   
                 $data = (new DateTime($row->data))->format("d-m-Y");
                 echo " <tr>
                        <td> $row->id</td>
                        <td>$row->nome</td>
                        <td>$data</td>
                        <td>row->objetivo</td>
                        <td>$row->exercicio</td>
                        <td>$row->series</td>
                        <td>$row->repeticoes</td>

                        <td>
                           <button type='button' class='btn btn-warning' 
                            onclick='javascript: location.href='frmEdtPro.php?id=$row->id'>
                              <span class='glyphicon glyphicon-pencil' aria-hidden='true'></span>
                           </button>
                       </td>
                       <td>
                           <button type='button' class='btn btn-danger' 
                            onclick='javascript: location.href='frmRemPro.php?id=$row->id'>
                             <span class='glyphicon glyphicon-remove-sign' aria-hidden='true'></span>
                           </button>
                       </td>
                       </tr>";

                endwhile; 
              ?>  
        </table>
    </<body>      
</html>

 

 

Porém, está ocorrendo dois problemas. Não está inserindo os treinos, acredito que o problema esteja no insTreino.php, porém, não estou conseguindo resolver.

E na linha 50 do verTreino.php está dando o seguinte erro: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in

 

 

Poderia dar mais essa força? rsrs

 

Muito obrigado novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Klash disse:

Eu peguei o código que seria para areadoaluno.php e criei um novo arquivo verTreino.php e adicionei o código que você colocou na última resposta.

E a areadoaluno.html, continuou essa mesma que coloquei acima. Está correto? Quando o usuário fizer login, ir para a área dele e clicar em Ver Treino, irá mostrar o treino dele ou deve ser feito a checagem do login já na areadoaluno.html (que viraria .php), para quando ele clicar em Ver Treino estar lá o treino.

Então, É imprescindível que use a terminação em .php  porque nele é onde você faz a verificação da session  e também  é onde você pode apresentar o "Bem vindo  Fulano" .

 

Quando se lida com o php, evite de usar o html(arquivo)  porque ele não interpreta o php. e você vai precisar dele!

 

Quanto ao erro ali no listar,  a principio não consigo ver o erro no código php. Pode estar passando desapercebido por mim, mas o que eu vejo é na consulta.

Veja este trecho:

select treino.id, 
        usuarios.id,  treino.data, treino.objetivo, treino.exercicio,
       treino.series, treino.repeticoes
from treino INNER JOIN usuarios on treino.id = usuarios.id
WHERE usuarios.id = $id_usuario"

Repare que a tabela mandante na consulta é treino certo?  Então por que você usa o usuarios.id na clausula do where?

O correto deve ser  WHERE tabelamandante.campo  = variável que contém o ID do usuário

 

YmJpb0L.png

 

Repare que o treino.cliente é o campo referente a chave estrangeira que recebe a chave primária da tabela usuario. Ou seja, e outras palavras é este campo que vai na clausula WHERE e é comparado com a variável que contém o ID dele.

 

Só assim para mostrar os dados somente daquele usuário logado.

 

Quanto ao inserir, primeiro verifique como está a instrução SQL com os dados.

Por isso crie uma variável que recebe a instrução SQL e imprima em tela. Só para ver o que ele está passando, certificando que os dados estão corretos,  aí pode pensar que o problema está no PHP.

 

Pelo que eu vi ali, você usa duas vezes o mysqli_query().

 

De repente, pense em inverter a ordem ali, ao testar se NÃO está vazio, teste SE está vazio em um bloco separado.

 

Assim como foi feito no autenticaUsuario.php

 

Assim:

if (empty($cliente) or empty($data)  or 
    empty($objetivo) or empty($exercicio) or 
    empty($series) or empty($repeticoes)):
    echo "<script>
          alert('Preencha todos os campos');
          history.go(-1);
          </script>";
    exit;    
endif;

Lá você usa o &&  que é o mesmo AND, no caso deve ser usado o OR,  porque  se qualquer um dos campos estiver vazio não permite.  Se tiver com AND,  ele valida somente depois de analisar se todos os campos estiverem preenchidos. Nulo é um valor.

Não que seja errado usado o and e && , mas nesse caso o melhor é OR porque se apenas 1 dado estiver vazio ele já valida.

 

Dito isso, tente desta maneira:

<?php  
    //Recebe os dados do formulário
    $cliente  = trim($_POST['slcCliente']);
    $data = trim($_POST['txtdata']); 
    $objetivo = trim($_POST['txtObj']); 
    $exercicio = trim($_POST['txtExe']); 
    $series = trim($_POST['txtSer']); 
    $repeticoes = trim($_POST['txtRep']); 


   //Testa se nenhum deles está vazio
   if (empty($cliente) or empty($data)  or 
    empty($objetivo) or empty($exercicio) or 
    empty($series) or empty($repeticoes)):
    echo "<script>
          alert('Preencha todos os campos');
          history.go(-1);
          </script>";
    exit;    
endif;

//inclui a conexão
include 'conexao.php'; 

//Variável que recebe a instrução SQL
$rs = mysqli_query($conexao,"INSERT INTO treino(cliente, data, objetivo, exercicio, series, repeticoes) 
                             VALUES ('$cliente', '$data', '$objetivo', '$exercicio', '$series', '$repeticoes'");

//Testa a variável da instrução.  SE foi inserido
if($es):
   echo "<script>alert('Treino cadastrado'); </script>";
   header("location: listarTreinos.php");
else:
 
  //SE não foi inserido volta a tela de inserção.
  echo "<script>
          alert('Erro ao inserir treino...');
          history.go(-1);
          </script>";
endif;
?>

 

PS: não garanto que funcionará com  meus códigos(porque não tenho os arquivos e nem banco de dados para testar), por isso, use eles para estudar e implementar no seu.

 

Considerações:

Tome cuidado com o mysqli_fetch_object()    e mysqli_fetch_array() 

Ambos fazem a mesma coisa, mas o object trata como objeto e o array como vetor..

Eu tenho  o costume de usar o object por ser esteticamente mais limpo e dá para usar em forma de objeto.

 

@Klash

Editado por DiF
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá DiF

 

Obrigado por toda a ajuda!

 

Ainda estou enroscado nessa parte de mostrar somente os dados para o usuário específico rsrsrs.

 

Estou utilizando de avaliação física agora, em vez de treino.

Porém, segue o mesmo problema de não retornar os dados, não sei se é por que o select está errado, se o código de inserir a avaliação física está errado, logo no começo, aonde seleciona o usuário, veja abaixo os códigos.

 

verAvaliacaoFisica.php

 

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");

/*testa se a sessão tem valor.
  Refere-se a linha lá no arquivo de login onde
  é inserido o login na sessão. */
if(!isset($_SESSION["login"])):
    header("location: index.php");
else:
    $login = $_SESSION["login"];
endif; 

//Pega o id que está na sessão
$id_usuario = $_SESSION["id_usuario"];

include 'conexao.php';

$rs = mysqli_query($conexao,"SELECT avaliacaofisica.id, avaliacaofisica.usuario, 
                        avaliacaofisica.data, avaliacaofisica.peso, avaliacaofisica.altura,
                        avaliacaofisica.idade, avaliacaofisica.sexo, avaliacaofisica.imc, avaliacaofisica.pescoco,
                        avaliacaofisica.ombro, avaliacaofisica.braco_relaxado, avaliacaofisica.braco_contraido,
                        avaliacaofisica.antebraco, avaliacaofisica.torax_relaxado, avaliacaofisica.torax_inspirado,
                        avaliacaofisica.cintura, avaliacaofisica.abdome, avaliacaofisica.quadril, avaliacaofisica.coxa,
                        avaliacaofisica.panturrilha
                        from avaliacaofisica INNER JOIN usuarios
                        on avaliacaofisica.usuario = usuarios.id where avaliacaofisica.usuario = $id_usuario"); 

   
?>

<html>
    <head>
        <meta charset="UTF-8">
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
	    <link href="bootstrap/css/style.css" rel="stylesheet">
        <title>Gerenciar Treinos - Hércules Academia de Musculação</title>
    </head>
    <body class="container">
       
        <div class="row col-md-7">
        <table  class="table table-striped table table-hover">
        <tr>
                 <th>ID</th>
                 <th>Usuário</th>
                 <th>Data</th>
                 <th>Peso</th>
                 <th>Altura</th>  
                 <th>Idade</th>  
                 <th>Sexo</th>  
                 <th>Imc</th>  
                 <th>Pescoco</th>  
                 <th>Ombro</th>
                 <th>Braco Relaxado</th>
                 <th>Braco Contraído</th>
                 <th>Antebraço</th>
                 <th>Torax Relaxado</th>
                 <th>Torax Inspirado</th>
                 <th>Cintura</th>
                 <th>Abdome</th>
                 <th>Quadril</th>
                 <th>Coxa</th>
                 <th>Panturrila</th>
                 <th></th>
                 <th></th>
            </tr>
           <?php while ($row = mysqli_fetch_array($rs)) { ?>
                   
            <tr>
                   <td><?php echo $row['id'] ?></td>
                   <td><?php echo $row['usuario'] ?></td>
                   <td><?php echo $row['data'] ?></td>
                   <td><?php echo $row['peso'] ?></td>
                   <td><?php echo $row['altura'] ?></td>
                   <td><?php echo $row['idade'] ?></td>
                   <td><?php echo $row['sexo'] ?></td>
                   <td><?php echo $row['imc'] ?></td>
                   <td><?php echo $row['pescoco'] ?></td>
                   <td><?php echo $row['ombro'] ?></td>
                   <td><?php echo $row['braco_relaxado'] ?></td>
                   <td><?php echo $row['braco_contraido'] ?></td>
                   <td><?php echo $row['antebraco'] ?></td>
                   <td><?php echo $row['torax_relaxado'] ?></td>
                   <td><?php echo $row['torax_inspirado'] ?></td>
                   <td><?php echo $row['cintura'] ?></td>
                   <td><?php echo $row['abdome'] ?></td>
                   <td><?php echo $row['quadril'] ?></td>
                   <td><?php echo $row['coxa'] ?></td>
                   <td><?php echo $row['panturrilha'] ?></td>
                       </tr>
               <?php } ?>
        </table>
    </<body>      
</html>

 

inserirAvaliacaoFis.php

 

<!doctype html>
<html lang="pt-br">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="bootstrap/css/style.css" rel="stylesheet">
    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
		<title>Montar Avaliação Física</title>

		
	</head>
	<body class="adminstrutor">
		
			<p class="menuadm"><a href="paineladm.php"><img src="bootstrap/img/logo.jpg" class="rounded-circle"></a><br>
                Área Restrita - Instrutor</p>
                <div class="w3-container w3-grey">
                    <h2 style="text-align: center;">Montar Avaliação Física</h2>
                </div>
                <br>
                <div class="d-flex justify-content-center align-items-center container ">
                    
                <form id="frmCadAvFisica" name="frmCadAvFisica" method="post" action="inserirAv.php" role="form">
          <div class="form-row">
        <div class="col">
             <label for="lblCliente">Usuário:</label>
             <?php
                      include('conexao.php'); 
                      $rsCli = mysqli_query($conexao,"select * from usuarios;"); 
             ?>
             <select name="slcCliente" id="slcCliente" class="form-control">
                <?php $row = mysqli_fetch_array($rsCli); ?>
                <option value="<?php echo $row['id'] ?>" selected>
                  <?php echo $row['login_usuario'];?> 
                </option>
                <?php while($row = mysqli_fetch_array($rsCli)){?>
                  <option value="<?php echo $row['id'] ?>"><?php echo $row['login_usuario'];?> </option>
                <?php }?>
             </select>      
          </div>
          <br><br> 
        <div class="col">
            <label for="lblData">Data: </label>
            <input type="date" class="form-control" name="txtData" id="txtData"
                   value="<?php (new DateTime())->format('Y-m-d') ?>"
        </div>
                </div>
        <div class="col">
          <label for="lblPes">Peso: </label>
          <input type="text" class="form-control" name="txtPes" id="txtPes">
       </div>
        <div class="col">
          <label for="lblAlt">Altura:</label>
          <input type="text" class="form-control" name="txtAlt" id="txtAlt">
       </div>
                </div>
                <div class="form-row">
            <div class="col">
          <label for="lblIda">Idade:</label>
          <input type="text" class="form-control" name="txtIda" id="txtIda">
       </div>
       <div class="col">
          <label for="lblSex">Sexo:</label>
          <input type="text" class="form-control" name="txtSex" id="txtSex">
       </div>
       <div class="col">
          <label for="lblImc">IMC:</label>
          <input type="text" class="form-control" name="txtImc" id="txtImc">
       </div>
                </div>
                <div class="form-row">
            <div class="col">
          <label for="lblPesc">Pesçoco:</label>
          <input type="text" class="form-control" name="txtPesc" id="txtPesc">
       </div>
       <div class="col">
          <label for="lblOmb">Ombro:</label>
          <input type="text" class="form-control" name="txtOmb" id="txtOmb">
       </div>
       <div class="col">
          <label for="lblBrr">Braço Relaxado:</label>
          <input type="text" class="form-control" name="txtBrr" id="txtBrr">
       </div>
                </div>
                <div class="form-row">
            <div class="col">
          <label for="lblBrc">Braço Contraido:</label>
          <input type="text" class="form-control" name="txtBrc" id="txtBrc">
       </div>
       <div class="col">
          <label for="lblAnt">Antebraço:</label>
          <input type="text" class="form-control" name="txtAnt" id="txtAnt">
       </div>
       <div class="col">
          <label for="lblTor">Torax Relaxado:</label>
          <input type="text" class="form-control" name="txtTor" id="txtTor">
       </div>
                </div>
                <div class="form-row">
            <div class="col">
          <label for="lblToi">Tórax Inspirado:</label>
          <input type="text" class="form-control" name="txtToi" id="txtToi">
       </div>
       <div class="col">
          <label for="lblCin">Cintura:</label>
          <input type="text" class="form-control" name="txtCin" id="txtCin">
       </div>
       <div class="col">
          <label for="lblAbs">Abdomem:</label>
          <input type="text" class="form-control" name="txtAbs" id="txtAbs">
       </div>
                </div>
                <div class="form-row">
            <div class="col">
          <label for="lblQua">Quadril:</label>
          <input type="text" class="form-control" name="txtQua" id="txtQua">
       </div>
       <div class="col">
          <label for="lblCox">Coxa:</label>
          <input type="text" class="form-control" name="txtCox" id="txtCox">
       </div>
    
       <div class="col">
          <label for="lblPan">Panturrilha:</label>
          <input type="text" class="form-control" name="txtPan" id="txtPan">
       </div>
                </div>
       <input name="CadAvaliacao" id="CadAvaliacao" class="btn btn-success " type="submit" value="Cadastrar Avaliação Física"> 
                </body>
                </html>
       

 

Banco de dados:

 

bd1.thumb.png.13677a5024e3f1d06c91a658b3993fdd.png

 

 

A inserção está sendo feita, pois ele lista todas as avaliações que são cadastradas, só não está sendo mostrada para o usuário específico mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Klash

Uma dica:  Sempre teste a instrução SQL no phpmyadmin para ver se retorna alguma coisa.

 

Você tem isso:

 

SELECT avaliacaofisica.id, avaliacaofisica.usuario, 
       avaliacaofisica.data, avaliacaofisica.peso, 
       avaliacaofisica.altura, avaliacaofisica.idade, 
       avaliacaofisica.sexo, avaliacaofisica.imc, 
       avaliacaofisica.pescoco,avaliacaofisica.ombro, 
       avaliacaofisica.braco_relaxado, avaliacaofisica.braco_contraido,
       avaliacaofisica.antebraco, avaliacaofisica.torax_relaxado, 
       avaliacaofisica.torax_inspirado, avaliacaofisica.cintura, 
       avaliacaofisica.abdome, avaliacaofisica.quadril, 
       avaliacaofisica.coxa,avaliacaofisica.panturrilha
FROM avaliacaofisica 
INNER JOIN usuarios on avaliacaofisica.usuario = usuarios.id 
WHERE avaliacaofisica.usuario = $id_usuario

 

Repare que você compara o avaliacaofisica.usuario com $id_usuario 

A variável $id_usuario é do tipo INT porque este valor vem de um campo  INT no seu banco de dados, que no caso é ID da tabela usuarios. Porém  seu erro está que na tabela "avaliacaofisica", o campo usuario está como tipo VARCHAR, ou seja, é String.

 

Então é natural que não retorne nada.

 

Para resolver isso, você precisa mudar o campo de varchar para int e fazer dele uma chave estrangeira do campo ID da tabela usuario.

Não esqueça de criar um novo índice(index) para referenciar esta chave estrangeira e no modo Designer(desenhador) criar o relacionamento 1:N  entre a tabela usuario e avaliacaofisica onde o campo id de usuário é a chave primária e o campo usuario em avaliacaofisica é a chave estrangeira.  Fazendo estas mudanças, você pode usar a variável $id_usuario  para definir de qual usuário você vai trazer os dados.

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá DiF

 

Criei os indices e a chave estrangeira (acho que criei rsrsrs) e continua o problema.

 

Índice avaliacaofisica

 

indexavf.thumb.png.509addbfd34c02cf3966691c7ab8465a.png

 

Índice usuarios

 

indexusuario.png.033e43d8e58a1b05f53c3f7bd0778334.png

 

Chave estrangeira:

 

fk.thumb.png.319403a742f4e2f48a1ca06eb0ccbb42.png

 

 

Foi realmente criado? Está certo isso?

 

Eu acho que deve ter alguns errinhos no código e não somente nessa parte do índice e chave estrangeira.

 

Vou deixar o arquivo com o projeto completo, inclusive o banco de dados, caso queira dar uma olhada melhor. Não estou colocando na intenção de fazer pra mim ou algo do tipo, apenas para ter um conhecimento melhor do que estou fazendo e apontar aonde devo fazer as correções.

Arquivo:

acad.rar

Os arquivos que estão relacionados diretamente e acho que deve ter alguma interferência, é: autenticaUsuario.php, login.php, inserirAvaliacaoFis.php e verAvaliacaoFisica.php

 

Uma parte que ainda estou tentando ver se está correta, é essa no arquivo inserirAvaliacaoFis.php

 

<div class="form-row">
				<div class="col">
					<label for="lblCliente">Usuário:</label>
					<?php
						include 'conexao.php';
						$rs = mysqli_query($conexao,"select * from usuarios;"); 
						?>
					<select name="slcCliente" id="slcCliente" class="form-control">
						<?php $row = mysqli_fetch_array($rs); ?>
						<option value="<?php echo $row['id'] ?>" selected>
							<?php echo $row['login_usuario'];?> 
						</option>
						<?php while($row = mysqli_fetch_array($rs)){?>
						<option value="<?php echo $row['id'] ?>"><?php echo $row['login_usuario'];?> </option>
						<?php }?>
					</select>
				</div>
				<br><br> 

 

Se o select em verAvaliacaoFisica.php está correto, pois não está retornando informações:

 

$rs = mysqli_query($conexao,"SELECT avaliacaofisica.id, avaliacaofisica.usuario, 
                        avaliacaofisica.data, avaliacaofisica.peso, avaliacaofisica.altura,
                        avaliacaofisica.idade, avaliacaofisica.sexo, avaliacaofisica.imc, avaliacaofisica.pescoco,
                        avaliacaofisica.ombro, avaliacaofisica.braco_relaxado, avaliacaofisica.braco_contraido,
                        avaliacaofisica.antebraco, avaliacaofisica.torax_relaxado, avaliacaofisica.torax_inspirado,
                        avaliacaofisica.cintura, avaliacaofisica.abdome, avaliacaofisica.quadril, avaliacaofisica.coxa,
                        avaliacaofisica.panturrilha
                        FROM avaliacaofisica 
INNER JOIN usuarios on avaliacaofisica.usuario = usuarios.id 
WHERE avaliacaofisica.usuario = $id_usuario"); 

 

 

Outra dúvida, após o login que redireciona para a página areadoaluno.php ou paineladm.php, eu devo adicionar o seguinte código nessas páginas:

 

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");


if(!isset($_SESSION["login"])):
    header("location: login.php");
else:
    $login = $_SESSION["login"];
endif;    
$id_usuario = $_SESSION["id_usuario"];
?>

Porém, até o endif ou precisa adicionar o $id_usuario = $_SESSION["id_usuario"]; também?

Esse código inicial deve ser colocado em todas as páginas restritas, correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que eu vi ali, você criou índice até mesmo em tabela que não precisa.

 

Como eu mencionei anteriormente, você só deve criar os índices na tabela MANDANTE, ou seja, naquela que você fará as consultas.

 

Além disso, não recomendo mexer na chave estrangeira desta forma porque na maioria das vezes dá erro. O ideal é você fazer o relacionamento pelo modo Desenhador, depois de ter criado os índices.

 

Eu recomendo que você dê um truncate(zerar as tabelas) nas suas tabelas, refazer os índices e refazer os relacionamentos de forma correta.

 

A tempos a trás eu gravei dois vídeos ensinando estes procedimentos:

 

 

Parte dois aqui:

 

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá DiF

 

Não estou conseguindo achar e nem ativar a opção Designer. Estou utilizando a versão 4.8.0.1 do phpMyAdmin

Sabe como ativar? Tem como fazer de outra maneira?

 

 

---EDIT---

 

Consegui achar. Vou seguir os passos novamente!

 

 

Utilizando o SELECT:

 

SELECT avaliacaofisica.id, avaliacaofisica.usuario, 
                        avaliacaofisica.data, avaliacaofisica.peso, avaliacaofisica.altura,
                        avaliacaofisica.idade, avaliacaofisica.sexo, avaliacaofisica.imc, avaliacaofisica.pescoco,
                        avaliacaofisica.ombro, avaliacaofisica.braco_relaxado, avaliacaofisica.braco_contraido,
                        avaliacaofisica.antebraco, avaliacaofisica.torax_relaxado, avaliacaofisica.torax_inspirado,
                        avaliacaofisica.cintura, avaliacaofisica.abdome, avaliacaofisica.quadril, avaliacaofisica.coxa,
                        avaliacaofisica.panturrilha
                        FROM avaliacaofisica 
INNER JOIN usuarios on usuarios.id = avaliacaofisica.usuario 
WHERE usuario = 1;

Dentro do phpmyadmin, ele retorna o resultado corretamente.

Se coloco lá no projeto, também funciona.

 

Agora se coloco:

 

SELECT avaliacaofisica.id, avaliacaofisica.usuario, 
                        avaliacaofisica.data, avaliacaofisica.peso, avaliacaofisica.altura,
                        avaliacaofisica.idade, avaliacaofisica.sexo, avaliacaofisica.imc, avaliacaofisica.pescoco,
                        avaliacaofisica.ombro, avaliacaofisica.braco_relaxado, avaliacaofisica.braco_contraido,
                        avaliacaofisica.antebraco, avaliacaofisica.torax_relaxado, avaliacaofisica.torax_inspirado,
                        avaliacaofisica.cintura, avaliacaofisica.abdome, avaliacaofisica.quadril, avaliacaofisica.coxa,
                        avaliacaofisica.panturrilha
                        FROM avaliacaofisica 
INNER JOIN usuarios on usuarios.id = avaliacaofisica.usuario 
WHERE usuario = $id_usuario;

 

Ele da erro, não retorna o resultado.

 

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");

/*testa se a sessão tem valor.
  Refere-se a linha lá no arquivo de login onde
  é inserido o login na sessão. */
if(!isset($_SESSION["login"])):
    header("location: login.php");
else:
    $login = $_SESSION["login"];
endif; 

//Pega o id que está na sessão
$id_usuario = $_SESSION["id_usuario"];

include 'conexao.php';

$rs = mysqli_query($conexao,"SELECT avaliacaofisica.id, avaliacaofisica.usuario, 
avaliacaofisica.data, avaliacaofisica.peso, avaliacaofisica.altura,
avaliacaofisica.idade, avaliacaofisica.sexo, avaliacaofisica.imc, avaliacaofisica.pescoco,
avaliacaofisica.ombro, avaliacaofisica.braco_relaxado, avaliacaofisica.braco_contraido,
avaliacaofisica.antebraco, avaliacaofisica.torax_relaxado, avaliacaofisica.torax_inspirado,
avaliacaofisica.cintura, avaliacaofisica.abdome, avaliacaofisica.quadril, avaliacaofisica.coxa,
avaliacaofisica.panturrilha
FROM avaliacaofisica 
INNER JOIN usuarios on usuarios.id = avaliacaofisica.usuario 
WHERE usuario = $id_usuario;"); 
?>

<html>
    <head>
        <meta charset="UTF-8">
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
	    <link href="bootstrap/css/style.css" rel="stylesheet">
        <title>Gerenciar Treinos - Hércules Academia de Musculação</title>
    </head>
    <body class="container">
       
        <div class="row col-md-7">
        <table  class="table table-striped table table-hover">
        <tr>
                 <th>ID</th>
                 <th>Usuário</th>
                 <th>Data</th>
                 <th>Peso</th>
                 <th>Altura</th>  
                 <th>Idade</th>  
                 <th>Sexo</th>  
                 <th>Imc</th>  
                 <th>Pescoco</th>  
                 <th>Ombro</th>
                 <th>Braco Relaxado</th>
                 <th>Braco Contraído</th>
                 <th>Antebraço</th>
                 <th>Torax Relaxado</th>
                 <th>Torax Inspirado</th>
                 <th>Cintura</th>
                 <th>Abdome</th>
                 <th>Quadril</th>
                 <th>Coxa</th>
                 <th>Panturrila</th>
                 <th></th>
                 <th></th>
            </tr>
           <?php while ($row = mysqli_fetch_array($rs)) { ?>
                   
            <tr>
                   <td><?php echo $row['id'] ?></td>
                   <td><?php echo $row['usuario'] ?></td>
                   <td><?php echo $row['data'] ?></td>
                   <td><?php echo $row['peso'] ?></td>
                   <td><?php echo $row['altura'] ?></td>
                   <td><?php echo $row['idade'] ?></td>
                   <td><?php echo $row['sexo'] ?></td>
                   <td><?php echo $row['imc'] ?></td>
                   <td><?php echo $row['pescoco'] ?></td>
                   <td><?php echo $row['ombro'] ?></td>
                   <td><?php echo $row['braco_relaxado'] ?></td>
                   <td><?php echo $row['braco_contraido'] ?></td>
                   <td><?php echo $row['antebraco'] ?></td>
                   <td><?php echo $row['torax_relaxado'] ?></td>
                   <td><?php echo $row['torax_inspirado'] ?></td>
                   <td><?php echo $row['cintura'] ?></td>
                   <td><?php echo $row['abdome'] ?></td>
                   <td><?php echo $row['quadril'] ?></td>
                   <td><?php echo $row['coxa'] ?></td>
                   <td><?php echo $row['panturrilha'] ?></td>
                       </tr>
               <?php } ?>
        </table>
    </<body>      
</html>

 

Editado por Klash

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Klash Me pareceu que ele não consegue pegar o ID que está na session.

 

Veja se ela possui um conteúdo depois de logar.

 

Tente dar um echo na variável do id do usuário que está na sessão.

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 minutos atrás, DiF disse:

@Klash Me pareceu que ele não consegue pegar o ID que está na session.

 

Veja se ela possui um conteúdo depois de logar.

 

Tente dar um echo na variável do id do usuário que está na sessão.

 

 

É exatamente isso que está acontecendo, não está retornando nada. Utilizei o echo para testar

 

Na hora de autenticar o usuário, está assim:

 

<?php

session_start();

$login = $_POST["login"];
$senha = $_POST["senha"];
	

$loginSeguro = addslashes($login);


$senhaSegura = md5(addslashes($senha));
	

if (empty($login) or empty($senha)):
    echo "<script>
          alert('Usuário ou senha não preenchido!');
          history.go(-1);
          </script>";
    exit;    
endif;
	

include 'conexao.php';
	

$dados = mysqli_query($conexao, "SELECT id,
                                        login_usuario,
                                        senha_usuario,
                                        id_tipo_acesso 
                                 FROM usuarios WHERE login_usuario ='$loginSeguro' 
                                 AND senha_usuario = '$senhaSegura' ");


$num = mysqli_num_rows($dados);
	

if ($num == 0):
	echo "<script>
			alert('Usuário ou senha está incorreto!');
			history.go(-1);
			 </script>";
	exit;
else :
    
    
	$linha = mysqli_fetch_object($dados);

  
	$id_user = $linha->idUsuario;


    $permissao = $linha->id_tipo_acesso;
		
 
	$_SESSION["id_usuario"] = $id_user;

  
	$_SESSION["login"] = $login;

 
      if($permissao == 1):
       	
	   header ("Location: areadoaluno.php");

      else:
       	
	  header ("Location: paineladm.php"); 
      endif; 
		
endif;
?>

Ai no arquivo para retornar o resultado da avaliação física, está:

 

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");

/*testa se a sessão tem valor.
  Refere-se a linha lá no arquivo de login onde
  é inserido o login na sessão. */
if(!isset($_SESSION["login"])):
    header("location: login.php");
else:
    $login = $_SESSION["login"];
endif; 

//Pega o id que está na sessão
$id_usuario = $_SESSION["id_usuario"];

include 'conexao.php';

$rs = mysqli_query($conexao,"SELECT avaliacaofisica.id, avaliacaofisica.usuario, 
avaliacaofisica.data, avaliacaofisica.peso, avaliacaofisica.altura,
avaliacaofisica.idade, avaliacaofisica.sexo, avaliacaofisica.imc, avaliacaofisica.pescoco,
avaliacaofisica.ombro, avaliacaofisica.braco_relaxado, avaliacaofisica.braco_contraido,
avaliacaofisica.antebraco, avaliacaofisica.torax_relaxado, avaliacaofisica.torax_inspirado,
avaliacaofisica.cintura, avaliacaofisica.abdome, avaliacaofisica.quadril, avaliacaofisica.coxa,
avaliacaofisica.panturrilha
FROM avaliacaofisica 
INNER JOIN usuarios on usuarios.id = avaliacaofisica.usuario 
WHERE usuario = $id_usuario;"); 

?>

 

Será algum erro em um desses dois arquivos?

Editado por Klash

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Klash Acho que é mais simples do que acha!!! 

 

Creio que o problema está no seu código de autenticar.

A linha que recebe o ID, você colocou o nome do campo como idUsuario, enquanto na verdade o banco de dados espera o campo chamado ID

$id_user = $linha->idUsuario;

Como o campo idUsuario não existe na tabela, ele não retorna nenhum ID!

 

Muda para:

$id_user = $linha->id

 

Desta forma você define que a variável $id_user recebe o valor do campo " id " contido na tabela.

 

 

Veja que na sua instrução SQL, é buscado os campos id, login_usuario e etc..

 

 

Editado por DiF
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu certo!

 

Muito obrigado por toda a ajuda @DiF

 

---

 

Agora outro probleminha que está acontecendo, é que se cadastro um usuário comum com permissão 1, ele consegue ter acesso as páginas com acesso somente a administrador (permissão 0)

 

No painel administrativo, coloco esse código no início:

 

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");


if(!isset($_SESSION["login"])):
    header("location: login.php");
else:
    $login = $_SESSION["login"];
endif;    
$id_usuario = $_SESSION["id_usuario"];

date_default_timezone_set('America/Sao_Paulo');
$date = date('d/m/Y - H:i');

?>

 

Porém, parece que não está fazendo essa autenticação, para reconhecer se é usuário comum ou administrador.

 

Eu coloquei:

 

if(!isset($_SESSION["id_tipo_acesso"])):
    header("location: login.php");
else:
    $login = $_SESSION["login"];
endif;    

Ele não deixa usuário comum acessar essas páginas, porém, na hora de fazer o login como ADM, ele retorna pro login.php, não redireciona para o painel.

 

Outra pequena dúvida. Essa linha: $id_usuario = $_SESSION["id_usuario"]; precisa ter nas páginas para fazer essa autenticação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Klash Ok,  eu dei uma pensada aqui no que poderia estar errado.

O lance da permissão é o seguinte você precisa pegar do banco de dados qual é o valor ID da permissão e comparar.

Ou seja, você não vai ter um valor id em zero no mysql. Começa sempre em 1

Então basicamente você precisa comparar o campo permissão com 1 ou 2. 

 

veja esse exemplo extremamente básico que eu preparei e funcionou:

 

$conexao = mysqli_connect("localhost","root","", "controleuser");
  
  $login = "visitante";
  $senha = "12345";
  
  $seleciona = mysqli_query($conexao, "SELECT id, login, senha, permissao  FROM usuarios WHERE login='$login' and senha='$senha'");
  
  $linha = mysqli_fetch_object($seleciona);
  
  if($linha->permissao == 1):
       echo"Como a permissão é 1, esta é a área do admin";
  else:
    echo" como a permissao é 2, esta é a area do usuario comum";
  endif;

Veja que eu busco na sql o campo permissão e testo em um IF, se ele é igual a 1.

Esse 1 no meu exemplo, é porque eu cadastrei o 1 como admin e 2 como usuario 

 

Basicamente é isso, não tem muito mistério, o primeiro bloco de if ele testa se a permissão do login é 1. se sim, ali dentro você faz o redirecionamento para a área do admin.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo areadoaluno.php, tenho esse código php:

 

<?php
session_start();
setcookie("ck_authorized", "true", 0, "/");


if(!isset($_SESSION["login"])):
    header("location: login.php");
else:
    $login = $_SESSION["login"];
endif;    
$id_usuario = $_SESSION["id_usuario"];

date_default_timezone_set('America/Sao_Paulo');
$date = date('d/m/Y - H:i');

?>

 

Ficaria algo parecido com isso:

 

<?php

include 'conexao.php';
session_start();
setcookie("ck_authorized", "true", 0, "/");

$login = $_POST["login"];
$senha = $_POST["senha"];

$loginSeguro = addslashes($login);


$senhaSegura = md5(addslashes($senha));

$seleciona = mysqli_query($conexao, "SELECT id, login_usuario, senha_usuario, id_tipo_acesso  FROM usuarios WHERE login_usuario='$loginSeguro' and senha_usuario='$senhaSegura'");

$linha = mysqli_fetch_object($seleciona);
  
  if($linha->permissao == 1):
       echo"Como a permissão é 1, esta é a área do admin";
  else:
    echo" como a permissao é 2, esta é a area do usuario comum";
  endif;

if(!isset($_SESSION["login"])):
    header("location: login.php");
else:
    $login = $_SESSION["login"];
endif;    
$id_usuario = $_SESSION["id_usuario"];

date_default_timezone_set('America/Sao_Paulo');
$date = date('d/m/Y - H:i');

?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Klash Não entendi a sua postagem. Parte do código está errado.

Poderia dar mais detalhes da sua dúvida?  

 

Um dos erros está aqui:

if($linha->permissao == 1):

Você usou a minha variável do exemplo, enquanto o nome do campo no SEU banco de dados é: id_tipo_acesso   

 

Atente-se de que EU coloquei no meu exemplo como 1 o admin, porém você tem que testar com o ID do seu projeto.

 

Aquele if testando a session no final do código, é desnecessário. afinal o código ali é só o autenticador.

 

O set cookie no início do código é desnecessário também. Pela mesma razão do  teste do session.

Além disso, o include de conexao deve ficar abaixo do session_start(). Pois ele deve estar na primeira linha acima de tudo.

 

PS: o meu exemplo é testado e funciona 100%.  Fiz um modelo de banco de dados simples com permissão e funcionou. Estude ele que vai conseguir implementar no seu

Editado por DiF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×