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

Você tem que debugar...

 

Veja se realmente está entrando no else do seu script, também há este problema:

$dataincial = $_POST["dataincial"];
...
$consulta->bindValue(0,$datainicial, PDO::PARAM_STR);

As variáveis não tem o mesmo nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 minutos atrás, ESerra disse:

Você tem que debugar...

 

Veja se realmente está entrando no else do seu script, também há este problema:


$dataincial = $_POST["dataincial"];
...
$consulta->bindValue(0,$datainicial, PDO::PARAM_STR);

As variáveis não tem o mesmo nome.

Eserra, muito obrigado,  quando você diz debugar,  poderia dar um exemplo nesse script que  estar em anexo . 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Debugar = procurar pelo problema...

 

Como testar para ver se está entrando no else? Coloque um echo dentro dele imprimindo alguma coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites
22 minutos atrás, ESerra disse:

Debugar = procurar pelo problema...

 

Como testar para ver se está entrando no else? Coloque um echo dentro dele imprimindo alguma coisa.

 

Pelo jeito ele não estar passando pelo else , fiz assim  coloquei um echo como você disse mas quando eu pesquiso por data ele me retorna todos os nomes que estão listados,  e não pela data que utilizei  para pesquisar, e outra coisa se eu não selecionar nada nem colcoar data e somente clicar no botão  enviar, ele me retorna todos o resultado .

 

<?php



		
// Instancia o objeto PDO
$pdo = new PDO('mysql:host=localhost;dbname=ajenordeste', 'root', '');
//$pdo = new PDO('mysql:host=mysql01.saletteesantos.hospedagemdesites.ws;dbname=saletteesantos', 'saletteesantos', 'aje102030');
// define para que o PDO lance exceções caso ocorra erros
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
	
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'].$result['data_nascimento']."<br/></html>";


		}

	}

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

		}
 

	?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos começar do básico:

 

Leia e entenda o seu próprio script.

 

Você está dizendo, "se $_POST["search"] existir" (isset($_POST["search"])).

 

Vamos usar a cabeça por 10 segundos, o que significa "se $_POST["search"] existir"? Significa que basta o campo ser enviado que será válido, você não está perguntado, "se $_POST["search"] estiver preenchido (!empty)".

 

Lembrando que todo campo text é enviado no POST, mesmo que vazio.

Compartilhar este post


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

Vamos começar do básico:

 

Leia e entenda o seu próprio script.

 

Você está dizendo, "se $_POST["search"] existir" (isset($_POST["search"])).

 

Vamos usar a cabeça por 10 segundos, o que significa "se $_POST["search"] existir"? Significa que basta o campo ser enviado que será válido, você não está perguntado, "se $_POST["search"] estiver preenchido (!empty)".

 

Lembrando que todo campo text é enviado no POST, mesmo que vazio.

Blz, etão vou por partes, assim esta funcionando,  o select  quando eu busco uma letra e pesquiso ele me mostra os usuários cadastrados com aquela letra, se eu pesquisar uma letra que não tem cadastro ele me passo echo " não há registro " ;    

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'].$result['data_nascimento']."<br/></html>";


		}

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

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tchê, você ainda não entendeu o espírito da coisa, então vou ser mais curto e grosso:

 

Entenda o que você está fazendo.

 

Ficar, "então eu devo fazer isso", "então eu devo fazer aquilo" é simplesmente chutar uma possibilidade e até agora você está chutando muito mal.

 

Vamos lá (caso você não entenda algo: php.net tem o manual completo da linguagem):

 

Exemplo prático de uma possibilidade de estrutura para o problema em tela:


Teste se o campo está vazio:

if(!empty($_POST['nome_da_campo_da_data_inicial']) AND (!empty($_POST['nome_da_campo_da_data_final'])){
//Aqui a query com pesquisa por data inicial e final
}elseif(!empty($_POST['nome_do_campo_de_pesquisa_por_aguma_outra_coisa'])){
//Aqui a query que busca os dados por outra campo
}else{
//Aqui você não busca por nada ou define a busca padrão
}

Outra forma é você montar a query de forma dinâmica, assim sem ter que criar várias querys distintas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, ESerra disse:

Tchê, você ainda não entendeu o espírito da coisa, então vou ser mais curto e grosso:

 

Entenda o que você está fazendo.

 

Ficar, "então eu devo fazer isso", "então eu devo fazer aquilo" é simplesmente chutar uma possibilidade e até agora você está chutando muito mal.

 

Vamos lá (caso você não entenda algo: php.net tem o manual completo da linguagem):

 

Exemplo prático de uma possibilidade de estrutura para o problema em tela:


Teste se o campo está vazio:


if(!empty($_POST['nome_da_campo_da_data_inicial']) AND (!empty($_POST['nome_da_campo_da_data_final'])){
//Aqui a query com pesquisa por data inicial e final
}elseif(!empty($_POST['nome_do_campo_de_pesquisa_por_aguma_outra_coisa'])){
//Aqui a query que busca os dados por outra campo
}else{
//Aqui você não busca por nada ou define a busca padrão
}

Outra forma é você montar a query de forma dinâmica, assim sem ter que criar várias querys distintas.

 

Já diz o ditado: Pra quem não sabe ler um pingo  e letra, Eserra como sempre direto e objetivo, me deu uma pancada na cabeça e me colocou no eixo em fim deu certo kkkkkkkkk. 

 

Só estava fazendo a logica errada para capturar tanto o valor do select option quando os inputs data inicial e data final.

abaixo esta o script  espero que ajude a outros com a mesma dificuldade, se possível por alguem tem como me dizer o que estou fazendo de errado na hora de montar a tabela para listar o resultado,  assim o resultado aparece mas esta repetindo em serie o  th nome e o th data nascimento.

 

quero que fique somente um th nome e um th data nascimento  como cabecalho e os valores listados abaixo deles.

 

obrigado a todos pela ajuda.  

<?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);
		
if (!empty ($_POST['datainicial']) AND (!empty ($_POST['datafinal']))){
				
		$datainicial = $_POST['datainicial'];
		$datafinal = $_POST['datafinal'];
		
	$consulta = $pdo->prepare("SELECT * FROM cad_cliente WHERE data_nascimento BETWEEN STR_TO_DATE(?, '%d/%m/%Y') AND STR_TO_DATE(?, '%d/%m/%Y')")or die ("could not search !" );
	$consulta->bindValue(1,$datainicial, PDO::PARAM_STR);
	$consulta->bindValue(2,$datafinal, PDO::PARAM_STR);
	$consulta->execute();
	
	$dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
	$numRows = count($dados);

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

				echo "<html><table border = '1' class=' '>
<thead>

<th>NOME:</th>
<th>DATA DE NASCIMENTO:</th>

</thead>

<tr>

<td><?php echo <p>".$result['nome']."<br/></td>
<td><?php echo <p>".date('d/m/Y',strtotime($result["data_nascimento"]))."<br/></td>


</tr>
</table>
</br>
</html>";

				}
			}
		}elseif(!empty($_POST['alfabeto'])){
			$alfabeto = $_POST["alfabeto"];	
			
		$consulta = $pdo->query(" SELECT * FROM cad_cliente WHERE nome LIKE '$alfabeto%'   ")or die ("could not search !" );
		$consulta->bindValue(1,$alfabeto, PDO::PARAM_STR);
		$consulta->execute();
		
		$dados = $consulta->fetchAll(PDO::FETCH_ASSOC);
		$numRows = count($dados);
			
		if($numRows > 0) {
		foreach ($dados as $result) {
				
		echo "<html><table border = '1' class=' '>
<thead>

<th>NOME:</th>
<th>DATA DE NASCIMENTO:</th>

</thead>

<tr>

<td><?php echo <p>".$result['nome']."<br/></td>
<td><?php echo <p>".date('d/m/Y',strtotime($result["data_nascimento"]))."<br/></td>


</tr>
</table>
</br>
</html>";
			

		}

	}else{
			echo "Nenhum Registro Encontrado.";
		}
		}
	?>
	
<br />
</div>	

 

 

 

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.