Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos.
Preciso saber como faço para buscar resultados de uma contagem dentro do meu mysql entre datas.. Sendo que ja criei o calendário com JS e ja criei a consulta em sql (aliás com ajuda aqui no forum).
Agora estou atrapalhado para juntar tudo isso e visualizar na tela.
Obrigado desde já.
Veja minha página de Início onde está os campos data inicial e data final 'index.php'.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Relatório</title>
<script type="text/javascript" src="includes/jquery-1.4.2.min.js" ></script>
<script type="text/javascript" src="includes/jquery-ui-1.8rc3.custom.min.js" ></script>
<script type="text/javascript" src="includes/calendario.js" ></script>
<link type="text/css" rel="stylesheet" href="includes/jquery-ui-1.8rc3.custom.css" ></link>
</head>
<body>
<h1>Relatório: Quantidade</h1>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<label for="dataInicio">Data de Início</label>
<input type="text" name="dataInicio" id="dataInicio" class="calendario"><br />
<label for="dataFim">Data de Fim (deixe em branco caso seja hoje)</label>
<input type="text" name="dataFim" id="dataFim" class="calendario"><br />
<input type="submit" name="Enviar" id="Enviar" value="Enviar">
</form>
</body>
</html>
Agora vejam minha sql como ficou a pesquisa: resultado.php
SELECT nivel_atendimento, COUNT( nivel_atendimento ) AS TOTAL
FROM ocorrencia
WHERE ocorrenciaDataQru = '2013-02-20'
GROUP BY nivel_atendimento
ORDER BY COUNT( nivel_atendimento ) DESC
SELECT nivel_atendimento, COUNT( nivel_atendimento ) AS TOTAL FROM ocorrencia WHERE ocorrenciaDataQru BETWEEN '2013-02-20' AND '2013-02-25' GROUP BY nivel_atendimento ORDER BY COUNT( nivel_atendimento ) DESC
Sim eu entendi no SQL... mas como faço para buscar esse intervalo dos campos de data inicial e data final do formulário que informei acima no começo da discussão?
Ou seja o usuário colocar data inicial e data final e ele buscar esse código...
Obrigado.
como foi respondido acima...
BETWEEN '2013-02-20 (data inico)' AND '2013-02-25 (data fim)'
Sim, mas o q eu não estou conseguindo fazer é adequar tudo isso q fiz no php... ou seja pegar do campo da página de login e enviar a consulta php.
Obrigado
Pega os campos no script
BETWEEN $_POST['dataInicio'] AND $_POST['dataFim']
Use os campos do tabela do banco de dados como tipo date, se precisar você pode tratar os post com o SPLIT do php para para formatar a data para aaaa-mm-dd
deu erro quando fui buscar os campos:
podem me ajudar? Obrigado. Vejam
index.php:
<?phpinclude 'includes/ini.php';include ("conexao_1.php");?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Relatório</title><script type="text/javascript" src="includes/jquery-1.4.2.min.js" ></script><script type="text/javascript" src="includes/jquery-ui-1.8rc3.custom.min.js" ></script><script type="text/javascript" src="includes/calendario.js" ></script><link type="text/css" rel="stylesheet" href="includes/jquery-ui-1.8rc3.custom.css" ></link></head><body><h1>Relatório: Quantidade por Cor</h1><form action="total_cores.php" method="post"> <label for="dataInicio">Data de Início</label> <input type="text" name="dataInicio" id="dataInicio" class="calendario"><br /> <label for="dataFim">Data de Fim (deixe em branco caso seja hoje)</label> <input type="text" name="dataFim" id="dataFim" class="calendario"><br /> <input type="submit" name="Enviar" id="Enviar" value="Enviar"></form></body></html>
página da consulta: total_cores.php:
<?php //Conexao com base:include ("conexao_1.php"); //Seleciona dentro da base:$sql = "SELECT nivel_atendimento, COUNT( nivel_atendimento ) AS TOTAL\n" . "FROM ocorrencia\n" . "GROUP BY nivel_atendimento\n" . "BETWEEN $_POST['dataInicio'] AND $_POST['dataFim']\n" . "ORDER BY COUNT( nivel_atendimento ) DESC"; //$resultado = mysql_query ($sql) or die (mysql_error ()); // Imprime resultadoecho ("<tr><td>$resultado</td>"); echo "<br />";}?>
veja o erro que apareceu:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /adm/cores_total/total_cores.php on line 9
Sendo que a linha nove é:
. "BETWEEN $_POST['dataInicio'] AND $_POST['dataFim']\n"
Algum consegue me ajudar?
Algum consegue me ajudar?
Você deve ser sempre o primeiro a se ajudar:
<?php
//Conexao com base:
include ("conexao_1.php");
//Seleciona dentro da base:
$sql = "SELECT nivel_atendimento, COUNT( nivel_atendimento ) AS TOTAL\n"
. "FROM ocorrencia\n"
. "GROUP BY nivel_atendimento\n"
. "BETWEEN ".$_POST['dataInicio']." AND ".$_POST['dataFim']."\n"
. "ORDER BY COUNT( nivel_atendimento ) DESC";
//
$resultado = mysql_query ($sql) or die (mysql_error ());
// Imprime resultado
echo ("<tr><td>$resultado</td>");
echo "<br />";
?>
Pronto, agora não tem nenhum erro de sintaxe, mesmo assim não vai funcionar... motivos?
1 - Para que \n na query?
2 - ecoando o resultado vai retornar apenas o número do resource e não o resultado da query em si.
Considere que o campo de data no seu bando seja um DATE denominado "data_atendimento", faça assim:
<?php
//Conexao com base:
include ("conexao_1.php");
//Seleciona dentro da base:
$sql = "SELECT nivel_atendimento, COUNT( nivel_atendimento ) AS TOTAL\n"
. "FROM ocorrencia\n"
. "WHERE data_atendimento BETWEEN '".$_POST['dataInicio']."' AND '".$_POST['dataFim']."'\n"
. "GROUP BY nivel_atendimento\n"
. "ORDER BY COUNT( nivel_atendimento ) DESC";
//
$resultado = mysql_query ($sql) or die (mysql_error ());
// Imprime resultado
echo ("<tr><td>$resultado</td>");
echo "<br />";
?>
Utilize o sql BETWEEN
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
http://www.w3schools.com/sql/sql_between.asp