Jump to content
Webster Moitinho

Executando duas consultas

Recommended Posts

Estou tentando fazer o controle de acesso do meu site. Para tanto criei duas tabelas:

Stat (Armazena cada sessao dos usuários
Estrutura da tabela `stat`

CREATE TABLE `stat` (
  `id_stat` int(11) NOT NULL,
  `navegador` varchar(85) NOT NULL,
  `usuario` int(11) NOT NULL,
  `cep` varchar(7) NOT NULL,
  `ip_visitante` varchar(15) NOT NULL,
  `sessao` varchar(72) NOT NULL,
  `pais` varchar(30) NOT NULL,
  `estado` varchar(30) NOT NULL,
  `cidade` varchar(50) NOT NULL,
  `latitude` decimal(11,5) NOT NULL,
  `longitude` decimal(11,5) NOT NULL,
  `ip_meuservidor` varchar(72) NOT NULL,
  `hora_req` time NOT NULL,
  `origem` varchar(175) NOT NULL,
  `idioma` varchar(50) NOT NULL,
  `SERVER_ADMIN` varchar(90) NOT NULL,
  `servidor` varchar(90) NOT NULL,
  `visitada` longtext CHARACTER SET utf8 NOT NULL,
  `registro` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Indexes for table `stat`

ALTER TABLE `stat`
  ADD PRIMARY KEY (`id_stat`);


-- AUTO_INCREMENT for table `stat`

ALTER TABLE `stat`
  MODIFY `id_stat` int(11) NOT NULL AUTO_INCREMENT;

sub_stat (Para armazenar as páginas visitadas e as interações com o cliente:

CREATE TABLE `sub_stat` (
  `id_substat` int(11) NOT NULL,
  `sessao` varchar(72) NOT NULL,
  `hora_req` time NOT NULL,
  `origem` varchar(85) NOT NULL,
  `visitada` varchar(85) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Indexes for table `sub_stat`

ALTER TABLE `sub_stat`
  ADD PRIMARY KEY (`id_substat`);

-- AUTO_INCREMENT for table `sub_stat`

ALTER TABLE `sub_stat`
  MODIFY `id_substat` int(11) NOT NULL AUTO_INCREMENT;

O desejado portanto, seria que quando o usuário entrasse na página, o script localizasse a sessão do usuário, buscaria a sessão na tabela stat, caso não existisse, iria inserir o registro tanto na tabela stat, quanto na tabela sub_stat. Se existisse a sessão na tabela stat, então somente haveria inserção dos registros na tabela sub_stat. Eu não estou conseguindo executar a segunda consulta, que vai popular a tabela sub_stat.

 

Meu código está assim:

 



		$sql = "SELECT sessao FROM stat
		WHERE sessao = '$sessao'";
		
		$prepara 		= $PDO->prepare( $sql );
		$prepara->execute();	
		$login_check   	= $prepara->rowCount();

		if($login_check < 1){



		$sql = "INSERT INTO `stat` 
		(`id_stat`, 
		`navegador`, 
		`usuario`, 
		`cep`, 
		`ip_visitante`, 
		`sessao`, 
		`pais`, 
		`estado`, 
		`cidade`, 
		`latitude`, 
		`longitude`, 
		`ip_meuservidor`, 
		`hora_req`, 
		`origem`, 
		`idioma`, 
		`servidor`, 
		`visitada`, 
		`registro`) 
		VALUES 
		(NULL, 
		'$navegador', 
		'$usuario', 
		'$cep', 
		'$meuip', 
		'$sessao', 
		'$pais', 
		'$estado', 
		'$cidade', 
		'$lat', 
		'$long', 
		'$ip', 
		'$hora_req', 
		'$origem', 
		'$idioma', 
		'$servidor', 
		'$visitada', 
		'$registro')";
	$compile	= $PDO->prepare($sql);
	$vai	= $compile->execute();

		

		$sql2 = "INSERT INTO `sub_stat` 
		(`id_substat`, 
		`sessao`, 
		`hora_req`, 
		`origem`, 
		`visitada`) 
		VALUES 
		(NULL, 
		'$sessao', 
		'$hora_req', 
		'$origem', 
		'$visitada'"; 
	$compile2	= $PDO->prepare($sql2);
	$vai	= $compile2->execute();

	} else {
	
	
		$sql = "INSERT INTO `sub_stat` 
		(`id_substat`, 
		`sessao`, 
		`hora_req`, 
		`origem`, 
		`visitada`) 
		VALUES 
		(NULL, 
		'$sessao', 
		'$hora_req', 
		'$origem', 
		'$visitada'"; 
	$compile	= $PDO->prepare($sql);
	$vai	= $compile->execute();

}

 

Share this post


Link to post
Share on other sites

Reparei que falta o fechamento de alguns
VALUES, porém, independente do mesmo,
tente usar o seguinte código:

 

CÓDIGO

<?php

$sql = "SELECT sessao FROM stat WHERE sessao = '$sessao'";
		
$prepara = $PDO->prepare ( $sql );
$prepara->execute ();	
$login_check = $prepara->rowCount ();

if ( $login_check < 1 ){
	$sql = "INSERT INTO `stat` (
	`id_stat`, 
	`navegador`, 
	`usuario`, 
	`cep`, 
	`ip_visitante`, 
	`sessao`, 
	`pais`, 
	`estado`, 
	`cidade`, 
	`latitude`, 
	`longitude`, 
	`ip_meuservidor`, 
	`hora_req`, 
	`origem`, 
	`idioma`, 
	`servidor`, 
	`visitada`, 
	`registro`
	)
	VALUES
	(
		NULL, 
		'$navegador', 
		'$usuario', 
		'$cep', 
		'$meuip', 
		'$sessao', 
		'$pais', 
		'$estado', 
		'$cidade', 
		'$lat', 
		'$long', 
		'$ip', 
		'$hora_req', 
		'$origem', 
		'$idioma', 
		'$servidor', 
		'$visitada', 
		'$registro'
	);
	INSERT INTO `sub_stat` 
	(
	`id_substat`, 
	`sessao`, 
	`hora_req`, 
	`origem`, 
	`visitada`
	)
	VALUES
	(
		NULL, 
		'$sessao', 
		'$hora_req', 
		'$origem', 
		'$visitada'
	)";

	$compile = $PDO->prepare ( $sql );
	$vai = $compile->execute ();
} else {
	$sql = "INSERT INTO `sub_stat` 
	(
	`id_substat`, 
	`sessao`, 
	`hora_req`, 
	`origem`, 
	`visitada`
	) 
	VALUES 
	(
		NULL, 
		'$sessao', 
		'$hora_req', 
		'$origem', 
		'$visitada'
	)";

	$compile	= $PDO->prepare ( $sql );
	$vai	= $compile->execute ();
}

 

Share this post


Link to post
Share on other sites
5 minutos atrás, Webster Moitinho disse:

Obrigado Shadow DLL... Eu não notei que faltava fechar o parêntesis. Valeu!!!

 

Disponível ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By DinhoPHP
      Olá!
      Alguém pode me dar uma luz sobre fazer um ORDER BY, hora ASC ou hora DESC? Por favor! Estou utilizando PHP e JS no projeto.
       
      $pegadados = $pdo->prepare("SELECT * FROM produtos WHERE categoria LIKE '%$dataSearch%' OR marca LIKE '%$dataSearch%' OR produto LIKE '%$dataSearch%' OR modelo LIKE '%$dataSearch%' OR descricao LIKE '%$dataSearch%' ORDER BY $filter $filter2");
    • By eduardodsilvaq
      function efetuarLogin ($x, $y) { $connect = db_connect(); $queryl = $connect->query("SELECT * FROM usuarios WHERE login = ". $x ." AND senha = " . $y . " "); if ($queryl->rowCount() == 0) { echo $x; echo $y; echo "<script>alert('Dados de Login incorretos.'); history.back();</script>"; exit; } else { setcookie("login",$x); header("Location:index.php"); exit; } } Esse código tem algum erro nessa linha:
      $queryl = $connect->query("SELECT * FROM usuarios WHERE login = ". $x ." AND senha = " . $y . " "); Nao consigo validar o login mesmo que os dados estejam corretos. Alguém da uma ajuda? 
       
    • By Pedro_silva
      Olá Pessoal Estou com uma dificuldade de como eu vou fazer esse sistema.
       
      Eu tenho que receber vários dados via POST enviado do formulário mais eu não sei como eu vou fazer para receber.
      esse codigo vai mostrar para o usuario os dados que estão dentro do mysql
       
      <?php
                          while($linha = mysqli_fetch_array($consultar)){
                          echo '<tr>';
                          echo '<th>';
                          echo $linha['Numero_patrimonio'];
                          echo '</th>';
                          echo '<th>';
                          echo $linha['tipo'];
                          echo '</th>';
                          echo '<th>';
                          echo $linha['marca'];
                          echo '</th>';
                              
                              //$gera = rand(1,100);
                              // echo"$gera";
                              ?>
                                                      
                              <td><input type="checkbox" name=""></td>
                              
                              </tr>
                              <?php
                          
                              }
                          ?>            
       
      Eu criei um  input dentro do while para que ele fosse criado para cada tabela que fosse aparecendo, eu pensei em colocar dentro de name um echo com o resultado do rand mas assim eu acho que seria difícil porque eu não sei se o post pegar os dados mandados sem a pessoa declarar ai eu resolvi tirar e deixar como comentário.
       
      Eu quero saber se eu uso um array dentro do name e que o post possa interpretar qual valor é 
    • By eduardaarosaa
      Olá, Estou tentando enviar um formulário com 4 arquivos, porém não estou tendo sucesso.
      Estou usando laravel 5.8. Tenho uma view com 5 campos, sendo 4 arquivos e 1 texto. Através das rotas caminho o form para o controller. 
       
       


    • By manoaj
      Boa tarde pessoal!
      Criei um sistema simples pra web utilizando PHP no backand.
      Mas agora antes do lançamento do sistema surgiu a necessidade de um app de consulta a esse sistema com funções básicas da plataforma Web, ou seja nem todas as funcionalidades serão implementadas no app agora no início.
      Qual a minha melhor alternativa no desenvolvimento híbrido hj em questão de agilidade no desenvolvimento considerando que minha plataforma web e o banco de dados mysql já estão prontos???
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.