Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

josenilson

consultar por data inicial e data final

Recommended Posts

1 minuto atrás, josenilson disse:

Agora como  vou tratar isso no listar.php  ?  assim como vou distinguir se foi o select com a ordem alfabética ou se foi o input com as datas  que enviou as informações para gerar o relatório. 

 

 

Opa... perai... vamos lá, este select ele vai trazer ou por ordem alfabética ou por datas só isso?

Então é simples, veja:
Você irá receber este valor também no listar.php

$destinatario = filter_input(INPUT_POST, 'destinatario', FILTER_SANITIZE_STRING);

if($destinatario == 'valor_para_data'){
 // SELECIONA PELAS DATAS
}
else {
 // Lista em Ordem Alfabética
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, RodriAndreotti disse:

 

 

Opa... perai... vamos lá, este select ele vai trazer ou por ordem alfabética ou por datas só isso?

Então é simples, veja:
Você irá receber este valor também no listar.php


$destinatario = filter_input(INPUT_POST, 'destinatario', FILTER_SANITIZE_STRING);

if($destinatario == 'valor_para_data'){
 // SELECIONA PELAS DATAS
}
else {
 // Lista em Ordem Alfabética
}

 

pera um minuto que vou postar como estou indo aqui,  obrigado pela atenção ... 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem travei aqui acho que foi muita informação rsrsrsrs mas assim o form esta desse jeito . 

 

<form id="form" name="form" method="post" action="listar.php"> 
  <table width="550" class="estilotabela" cellspacing="0" border="0">
    <tr align="center" class="">
      <td width="103" class="">Escolher</td>
      <td width="380" class="">Tipo de Relatorio</td>
    </tr>
    <tr>
      <td align="center" valign="middle">
          
      </p></td>
      <td valign="middle">        Tipo de Baixa                   
        <label>
          <select name="search" id="search">
          <option value="">ORDEM_ALFABETICA</option>
			<option value="A">A</option>
			<option value="B">B</option>
			<option value="C">C</option>
			<option value="D">D</option>
			<option value="E">E</option>
			<option value="F">F</option>
			<option value="G">G</option>
			<option value="H">G</option>
			<option value="I">I</option>
			<option value="J">J</option>
          
          </select>
      </label></td>
    </tr>
    <tr>
      <td ></td>
      <td>Data Cadastro Inicial 
        <input name="data" type="text" id="data" OnKeyUp="mascaraData(this);" size="10" maxlength="10" /> 
      Data Final 
      <input name="data1" type="text" id="data1" size="10" OnKeyUp="mascaraData1(this);" maxlength="10" /></td>
    </tr>
<tr>
    
  <tr>
      <td colspan="2" align="center"><label>
        <br>
        <input type="submit" name="search" id="search" value="Enviar" />
      </label></td>
    </tr>
  </table>
  <br />
</form>
<p>&nbsp;</p>

e o listar desse jeito, mas não esta dando certo . 

 

<!DOCTYPE html>
	<html lang="pt-br">
	<head>
	<meta charset="UTF-8">
	<link href="../bootstrap-3.3.6-dist/css/bootstrap.min.css" rel="stylesheet">
	<link rel="stylesheet" type="text/css" href="CSS/style_topo_resultado_busca.css">
	<title>Resultado Busca</title>
	</head>
	
	
	
<body>
<div id="topo">
<div id="lupa"></div>	
<div id="texto">
<h1>RESULTADO DA PESQUISA</h1>
<h5><font color="#FF0000"></font> --</font></h5>

</div>
</div>	
<div id="resultado">
<div id="painel2" class="well well-lg">
	
<?php



		
// Instancia o objeto PDO
$pdo = new PDO('mysql:host=localhost;dbname=ajenordeste', 'root', '');

// define para que o PDO lance exceções caso ocorra erros
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
	$output = "";
	//coletando dados 


	if (isset($_POST["search"])) {
		$searchq = $_POST["search"];
		$searchq = preg_replace("#[^0-9a-z]#i", "",$searchq);
		$consulta = $pdo->query(" SELECT nome FROM cad_cliente WHERE nome LIKE '$searchq%'   ")or die ("could not search !" );

			$dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
			$numRows = count($dados);

			if($numRows > 0) {
			foreach ($dados as $result) {
		
			echo "<html><label></label><p>".$result['nome']."<br/></html>";
				
				
			}
				
			}
			
			else {
			echo" Não há registro";
						}
			
		}
		
		
	?>
	
<br />


</div>
<br />

<a class="btn btn-primary" href="raiz_ftp.php" role="button">Voltar</a>
</div>	


	

	 

 

ou seja ai deveria vir  o relatório de ordem alfabética, mas tem alguma coisa errada, o listar não esta pegando a letra que esta vindo do select 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que, exatamente, este select deveria fazer?

<select name="search" id="search">
          <option value="">ORDEM_ALFABETICA</option>
			<option value="A">A</option>
			<option value="B">B</option>
			<option value="C">C</option>
			<option value="D">D</option>
			<option value="E">E</option>
			<option value="F">F</option>
			<option value="G">G</option>
			<option value="H">G</option>
			<option value="I">I</option>
			<option value="J">J</option>
          
          </select>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, RodriAndreotti disse:

O que, exatamente, este select deveria fazer?


<select name="search" id="search">
          <option value="">ORDEM_ALFABETICA</option>
			<option value="A">A</option>
			<option value="B">B</option>
			<option value="C">C</option>
			<option value="D">D</option>
			<option value="E">E</option>
			<option value="F">F</option>
			<option value="G">G</option>
			<option value="H">G</option>
			<option value="I">I</option>
			<option value="J">J</option>
          
          </select>

 

listar os usuários cadastrados com a letra selecionada . 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah tah... agora entendi... rs

 

Então, vamos lá,

SELECT nome FROM cad_cliente WHERE nome LIKE '$searchq%'

Muda essa linha acima para:

SELECT nome FROM cad_cliente WHERE nome LIKE '?%'

E faz o bind da variável que você recebeu do search

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então  deu certo aqui,   agora não sei como implementar os inputs  de data nesta busca , do jeito que estar ai deu certo eu escolho a letra no select e o listar.php me mostrar os nomes cadastrados com essa letra. 

 

<form id="form" name="form" method="post" action="listar.php"> 
  <table width="550" class="estilotabela" cellspacing="0" border="0">
    <tr align="center" class="">
      <td width="103" class="">Escolher</td>
      <td width="380" class="">Tipo de Relatorio</td>
    </tr>
    <tr>
      <td align="center" valign="middle">
          
      </p></td>
      <td valign="middle">        Tipo de Baixa                   
        <label>
          <select name="alfabetico" id="alfabetico">
          <option value="">ORDEM_ALFABETICA</option>
			<option value="A">A</option>
			<option value="B">B</option>
			<option value="C">C</option>
			<option value="D">D</option>
			<option value="E">E</option>
			<option value="F">F</option>
			<option value="G">G</option>
			<option value="H">H</option>
			<option value="I">I</option>
			<option value="J">J</option>
          
          </select>
      </label></td>
    </tr>
    <tr>
      <td ></td>
      <td>Data Cadastro Inicial 
        <input name="data" type="text" id="data" onkeypress="mascaraData( this, event )" size="10" maxlength="10" /> 
      Data Final 
      <input name="data1" type="text" id="data1" size="10" onkeypress="mascaraData( this, event )" maxlength="10" /></td>
    </tr>
<tr>
    
  <tr>
      <td colspan="2" align="center"><label>
        <br>
        <input type="submit" name="search" id="search" value="search" />
      </label></td>
    </tr>
  </table>
  <br />
</form>

listar.php

<?php
// Instancia o objeto PDO
$pdo = new PDO('mysql:host=localhost;dbname=ajenordeste', 'root', '');

// define para que o PDO lance exceções caso ocorra erros
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
	$output = "";
	//coletando dados 

	if (isset($_POST["search"])) {
		$searchq = $_POST["alfabetico"];
		$searchq = preg_replace("#[^0-9a-z]#i", "",$searchq);
		$consulta = $pdo->query(" SELECT nome FROM cad_cliente WHERE nome LIKE '$searchq%'   ")or die ("could not search !" );

			$dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
			$numRows = count($dados);

			if($numRows > 0) {
			foreach ($dados as $result) {
		
			echo "<html><label></label><p>".$result['nome']."<br/></html>";	
				
			}
				
			}
			
			else {
			echo" Não há registro";
						}
			
		}
		
	?>
	

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
56 minutos atrás, josenilson disse:

agora como posso inserir os inputs de data nesta listar.php,  nesta são dois inputs certo  um data inicial e outro data final . 

Você vai colocar no else deste IF, ai você vai obter as datas tal como fez o dentro do if para o select e fazer o bind para o select com as datas

Compartilhar este post


Link para o post
Compartilhar em outros sites
40 minutos atrás, RodriAndreotti disse:

Você vai colocar no else deste IF, ai você vai obter as datas tal como fez o dentro do if para o select e fazer o bind para o select com as datas

Eu mudei o nome do input para datainicial e datafinal  ai a o listar.php ficou assim, 

if (isset($_POST["search"])) {
		$searchq = $_POST["alfabetico"];
		$searchq = preg_replace("#[^0-9a-z]#i", "",$searchq);
		$consulta = $pdo->query(" SELECT * FROM cad_cliente WHERE nome LIKE '$searchq%'   ")or die ("could not search !" );

			$dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
			$numRows = count($dados);

			if($numRows > 0) {
			foreach ($dados as $result) {
		
			echo "<html><label>Nome:</label>".$result['nome']."<br/></html>";
	
				
			}
				
			}
			
			else {
			if (isset($_POST["search"])) {
				
		$dataincial = $_POST["dataincial"];
		$datafinal = $_POST["datafinal"];
		
		$dataincial = preg_replace("#[^0-9a-z]#i", "",$dataincial);
		$datafinal = preg_replace("#[^0-9a-z]#i", "",$datafinal);
		
		$consulta = $pdo->query(" SELECT * FROM cad_clientes WHERE data_nascimento BETWEEN STR_TO_DATE(?, '%d/%m/%Y') AND STR_TO_DATE(?, '%d/%m/%Y')")or die ("could not search !" );

			$dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
			$numRows = count($dados);

			if($numRows > 0) {
			foreach ($dados as $result) {
		
			echo "<html><label></label><p>".$result['nome'].$result['data_nascimento']."<br/></html>";	
				
			}
				
			}
			
			else {
			echo" Não há registro";
						}
			
		}
						}
			
		}

porem esta dando erro da quinte forma, se eu clicar no botão  sem preencher nem o select nem as datas ele ta listando todos os nomes vindo daqui. 

echo "<html><label>Nome:</label>".$result['nome']."<br/></html>";

e quando eu pesquiso por data não tando como deveria no caso somente por data, vem alista com todos os nomes . 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, tenta usando este trecho:

 

<?php
if (isset($_POST["search"])) {
	$searchq = $_POST["alfabetico"];
	$searchq = preg_replace("#[^0-9a-z]#i", "",$searchq);
	$consulta = $pdo->query(" SELECT * FROM cad_cliente WHERE nome LIKE '$searchq%'   ")or die ("could not search !" );

	$dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
	$numRows = count($dados);

	if($numRows > 0) {
		foreach ($dados as $result) {

			echo "<html><label>Nome:</label>".$result['nome']."<br/></html>";


		}

	}

}
else {
	$dataincial = $_POST["dataincial"];
	$datafinal = $_POST["datafinal"];

	$dataincial = preg_replace("#[^0-9a-z]#i", "",$dataincial);
	$datafinal = preg_replace("#[^0-9a-z]#i", "",$datafinal);

	$consulta = $pdo->query(" SELECT * FROM cad_clientes WHERE data_nascimento BETWEEN STR_TO_DATE(?, '%d/%m/%Y') AND STR_TO_DATE(?, '%d/%m/%Y')")or die ("could not search !" );

	$dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
	$numRows = count($dados);

	if($numRows > 0) {
		foreach ($dados as $result) {

			echo "<html><label></label><p>".$result['nome'].$result['data_nascimento']."<br/></html>";	

		}

	}

	else {
		echo" Não há registro";
	}
}

Observe que mudei o else de lugar, por que ele é a condição se falso do if, ou seja, o IF verificou se $_POST['search'] existe, se existir ele roda o bloco de código dele.

O Else vai rodar justamente se o $_POST['search'] não existir, e neste caso ele não pode verificar novamente o search, se não ele nunca será executado.

 

Compare os dois códigos e veja se entende a diferença entre eles, e se o segundo funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite mano,  então  o select ta funcionando, porem com a data não vai, independente da data que eu coloquei ele lista todos os usuários e tem uma duvida ,  no banco de dados  ao salvar a data esta vindo assim 1987-01-01  ou seja ano mês dia. 

Tem alguma coisa a ver ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 minutos atrás, josenilson disse:

Boa noite mano,  então  o select ta funcionando, porem com a data não vai, independente da data que eu coloquei ele lista todos os usuários e tem uma duvida ,  no banco de dados  ao salvar a data esta vindo assim 1987-01-01  ou seja ano mês dia. 

Tem alguma coisa a ver ?

É isso mesmo, o STR_TO_DATE converte ela para o formato ANSI, que é o formato padrão de datas do MySQL, isto está correto, porém você tem algumas linhas que estão mudando o formato da data que você recebe no post.

 

Tente remover estas linhas:

$dataincial = preg_replace("#[^0-9a-z]#i", "",$dataincial);
	$datafinal = preg_replace("#[^0-9a-z]#i", "",$datafinal);

 

substitua esta:

$consulta = $pdo->query(" SELECT * FROM cad_clientes WHERE data_nascimento BETWEEN STR_TO_DATE(?, '%d/%m/%Y') AND STR_TO_DATE(?, '%d/%m/%Y')")or die ("could not search !" );

Por:

$consulta = $pdo->prepare("SELECT * FROM cad_clientes WHERE data_nascimento BETWEEN STR_TO_DATE(?, '%d/%m/%Y') AND STR_TO_DATE(?, '%d/%m/%Y')")or die ("could not search !" );

 

E insira estas três linhas após:

$consulta->bindValue(0,$datainicial, PDO::PARAM_STR);

$consulta->bindValue(1,$datafinal, PDO::PARAM_STR);


$consulta->execute();

Veja se funciona, montei a query ai utilizando prepared statements, que é mais seguro que o query convencional, não tinha percebido que seu código não estava usando este recurso ainda, foi mal... rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, se eu  consultar pelo select blz ele só me mostra  os nomes consultados pela Letra, mas por data não ta indo , seja, se eu clicar somente no botão ele lista como esta no print traz o resultado de todos,  como se estive se em um loop, e se eu preencher os inputs e pesquisar  acontece do mesmo jeito mostra a lista com os usuários, é como se os inputs da data não  estive se fazendo efeito. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por FabianoSouza
      Tenho uma function que precisa receber 02 argumentos.
      Ela funciona se eu aplicar num select qualquer. Mas se eu aplicar num select dinâmico, ocorre erro.
      Veja trecho do meu select.
      ... SET @sql = @sql +', dbo.retornaIco_ItemBloq((SELECT COUNT(*) FROM dbo.tab AS TT2 WHERE TT2.codCategTreina = CTT.id),'+@title+') AS ''resp''' ... No caso, o primeiro argumento da function dbo.retornaIco_ItemBloq é um SELECT COUNT.
      O segundo argumento é uma variável (que está devidamente declarada e definida).
       
      O erro ocorre porque ao executar (chamando EXEC(@sql) ), o SQL entende que o segundo argumento é uma coluna da consulta principal, pois existe uma vírgula antes da variável @title (que é o segundo argumento da function).
      Repito. Se eu aplicar essa function num select normal, funciona normalmente. Porém, preciso que funcione num SQL dinâmico porque é esse é o padrão que estou adotando para o sistema todo.
       
      A function dbo.retornaIco_ItemBloq faz o seguinte:
      1) Recebe o valor do COUNT e da variável @title
      2) Se o COUNT for maior que  Zero, cria uma tag HTML (uma SPAN), define sua title com o valor da variável @title e passa para uma variável
      3) Retorna o HTML que será exibido no resultado da consulta principal
      É super simples.
       
      Há outra forma de chamar a function?
    • Por mr22robot
      Ola caros amigos. 
      Estou com uma dúvida aqui que embora nao tenho achado ainda uma resposta, acredito que haja.
      Estou estudando a tão sonhada linguagem de programação asp.net core mvc. Linguagem essa que demorei 5 anos pra iniciar os estudos rsrs.
      Mas estou agarrado em uma situação. 
      Estou usando como base de dados nos meus estudos um banco Oracle. Que já tem algumas informações nele. Utilizei o SCAFFOLD para criar as classes e o contexto baseado no banco e tabelas existentes. 
      Porem agora na fase das consultas, estou perdido em como utilizar o IN que eu utilizo no oracle; no LINQ.
      Ex: 
      SELECT CODPROD,DESCRICAO FROM PRODUTO WHERE CODPROD IN(1,2,3,4,5,6) Como eu utilizo esse filtro com uma restrição de códigos de produtos? no caso o where codprod in(1,2,3,4,5,6) ?.
      Desde já obrigado pela ajuda.
    • Por Sapinn
      Olá a todos existe alguma maneira de trazer todos os dados de uma tabela menos o maior valor?
    • Por Wandersonwfs
      Bom dia Pessoal,
       
      Estou com um problema para finalizar uma consulta onde, quando executado a consulta  e não encontrado nenhuma informação no período solicitado, tenho que trazer pelo menos o nome da conta.
       
      Consulta,
       
      WITH TMPESTONO (
          NOME_IMPOSTO
          ,MES
          ,VALOR
          )
      AS (
          SELECT 'ESTORNO SOBRE GREEN VILLE' AS NOME_IMPOSTO
              ,'F_' + SZN.ZN_ITEM AS FILFOR
              ,SUM((SZN.ZN_PRV * SZN.ZN_PRCAPL) / 100) AS TOTAL
          FROM SZN010 SZN
          WHERE SZN.D_E_L_E_T_ = ' '
              AND SZN.ZN_ITEM IN (
                  '01'
                  ,'16'
                  ,'30'
                  ,'40'
                  ,'46'
                  ,'51'
                  ,'52'
                  ,'60'
                  ,'70'
                  ,'72'
                  ,'73'
                  ,'80'
                  )
              AND SZN.ZN_DATA BETWEEN '20220701'
                  AND '20220731'
              AND SZN.ZN_DESC = ('GRENVILLE')
          GROUP BY SZN.ZN_DESC
              ,SZN.ZN_ITEM
          )
      SELECT *
      FROM (
          SELECT NOME_IMPOSTO
              ,MES
              ,VALOR
          FROM TMPESTONO
          ) AS PivotData
      PIVOT(SUM(VALOR) FOR MES IN (
                  [F_16]
                  ,[F_30]
                  ,[F_40]
                  ,[F_46]
                  ,[F_51]
                  ,[F_52]
                  ,[F_60]
                  ,[F_70]
                  ,[F_72]
                  ,[F_73]
                  ,[TOTAL]
                  )) AS PivotTable2
      ORDER BY 1
       
×

Informação importante

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