Ir para conteúdo
opl12

Select dentro de outro Select

Recommended Posts

Olá Mestres
Podem dar uma direção?

Estou apanhando em algo que aparentemente é fácil

Preciso: 

            *Tenho um Banco de Dados com as Colunas: Id, nome, password, data, nivel
            ... na coluna "nivel" tem duas informações ou é "staff" ou é "operacao"
 
            *no 1º Select ele vai validar se o usuário e a senha estão corretos conforme no Banco de Dados do PhpMyAdmin
            pelas variáveis $nome e $password
 
            *no 2º Select ele valida o nível de acesso, se é "staff" ou "operacao"
            se o $nome pertencer a um "staff".. então abre o "Site A"... se pertencer a um "operacao" vai para o "Site B"

 

<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <title>Comprovar Usuário</title>
    <meta charset="utf-8">
  </head>
  <body>
	
		<?php
			
			try
			{
				$base=new PDO("mysql:host=localhost;dbname=painel","root","");
				
				$base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
				
				// ....... select para validar login e senha se estão ok
				$sql="SELECT * FROM login WHERE nome= :nome AND password= :password";
				$resultado=$base->prepare($sql);
				$nome=($_POST["nome"]);
				$password=($_POST["password"]);
				
				$resultado->bindValue(":nome",$nome);
				$resultado->bindValue(":password",$password);

				$resultado->execute();
								
				$numero_registro=$resultado->rowCount();


				//Validar Camada de Nível
				$sql2="SELECT * FROM login WHERE name= :nome AND nivel = 'staff'";
				$resultado2=$base2->prepare($sql2);
				$nome=($_POST["nome"]);
				
				$resultado2->bindValue(":nome",$nome);
				
				$resultado2->execute();
								
				$numero_registro2=$resultado2->rowCount();
				
				
				if($numero_registro!=0) 
				{

					//echo "<h1>Logado com Sucesso</h1>";  ...Se Login e Senha estão ok, então abre a página
					session_start();

					$_SESSION["usuario"] = $_POST["nome"];
					header("Location:reports.php");
					
					
				}else                    
				{	
					echo "Senha incorreta, favor verificar! <br><br>";
					echo '<a href="index.php">Clique aqui para tentar novamente!</a>';
					
					//header("Location:index.php");
				}

			}catch(Exception $e)
			{
				die("Error" . $e->getMessage());
			}	
		?>
  </body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola veja se isso ajuda 

SELECT PRIMEIRO_NOME, ULTIMO_NOME, DATEDIFF(YEAR, DATA_ADMISSAO, GETDATE())
AS ANOS DE EMPRESA
FROM FUNCIONARIOS F INNER JOIN DEPARTAMENTOS D
ON F.ID_DEPARTAMENTO = D.ID_DEPARTAMENTO
WHERE F.SALARIO = (SELECT MAX(SALARIO) FROM FUNCIONARIOS FF, DEPARTAMENTOS DD
WHERE FF.ID_DEPARTAMENTO = DD.ID_DEPARTAMENTO
AND DD.ID_DEPARTAMENTO = F.ID_DEPARTAMENTO);

Se não ajudar de uma olhada aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa das duas consultas. A primeira consulta é o suficiente.

// código exatamente igual até essa parte aqui
$resultado->execute();

//se a consulta não localizar nada, o retorno será FALSE
if ($result = $resultado->fetch(PDO::FETCH_ASSOC)) {
    //aqui você tomará as ações caso o usuário for localizado

    //agora basta usar o resultado e testar
    if ($result['nivel'] == 'staff') {
        // caso for staff
    } elseif ($result['nivel'] == 'operacao') {
        // caso for operacao
    }
}
else 
{
   //aqui será executado caso o usuário não exista então
}

 

Eu imagino que seus códigos sejam para estudos, o que é muito bom por sinal. Segue um link para você fazer um login seguro para o seu site:

https://forum.imasters.com.br/topic/557686-trabalhando-com-criptografia-de-login-com-md5/?do=findComment&amp;comment=2225560

 

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de como devo fazer.
       
      Preciso criar uma Rotina para Cadastrar Faturamento, por exemplo:
      1) 28/42/56 dias -> de 28 p/ 42 a dif. é de 14 dias...
      2) 30/60/90 dias -> de 30 p/ 60 a dif. é de 30 dias...
      3) 0/15/30/45 dias  -> de 0 p/ 15 a dif. é de 15 dias...
       
      Como devo fazer para  cadastrar os prazo de vencimento, onde o sistema possa contar as diferenças entre os dias ?
       
      Grato,
       
      Cesar
    • Por Giovanird
      O script abaixo atualiza a página (centro.php) a cada um minuto e dentro desta página terei uma div que não poderá ser atualizada.
      Tentei colocar esta div como pagina com setInterval de 100 minutos porem ao dar o refresh no centro.php  tudo vai junto.  Será que isto é possivel?

      Desde já meu muito obrigado!
      <script> function atualiza(){ var url = 'centro.php'; $.get(url, function(dataReturn) { $('#centro').html(dataReturn); }); } setInterval("atualiza()",60000); </script>  

    • Por ILR master
      Fala pessoal, tudo bem?
       
      Eu tenho um dominio e vários subdomios dentro.
      Quero saber como recuperar um cookie nos subdominios, uma vez que ele foi criado em um subdominio específico.
       
      Estrutura:
      Tô criando o cookie em usuario.dominio.com.br com o seguinte código:
       
      $valor = md5(uniqid(rand(), true));
      setcookie("token", $valor, time() + (60 * 10), "/", "www.dominio.com.br");
       
      Porém, quero recuperar esse valor em todos os outros subdominios, mas esse codigo aí não tá funcionando.
       
      Alguém pode ajudar?
      Valeu
       
    • Por ILR master
      Fala pessoal.
      Tudo bem?
       
      Tenho o seguinte código que funcionda perfeitamente:
       
      date_default_timezone_set("America/Sao_Paulo");
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+30  day'));
       
      Mas eu quero definir a quantidade de dias pegando o valor que a variável:
       
      date_default_timezone_set("America/Sao_Paulo");
      $tempo = 30;
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+$tempo  day'));
       
      Mas quando declaro com variável não funciona.
      Obrigado pela ajuda.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
×

Informação importante

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