Ir para conteúdo
adriano.eurich

Recuperando os dados do banco entre 2 datas

Recommended Posts

Olá, estou com muita dificuldade em entender e fazer uma recuperação de dados do banco, quando em uma tela tenho 2 campos de data, data inicial e data final,  quando clico no botão gerar ele me encaminha para outra pagina onde gostaria que aparecesse os dados nela!

 

create.php

<?php
session_start();
include_once 'conexao.php';



$id             = $_POST [ 'id' ];
$nome           = $_POST [ 'nome' ];
$inst           = $_POST [ 'inst' ];
$data 			= date('y-m-d');	
$telefone       = $_POST [ 'telefone' ];
$chave          = $_POST [ 'chave' ];


$queryInsert = $link->query("insert into tb_cadastro VALUES ('".$id."', '".$nome."','".$inst."','".$data."','".$telefone."','".$chave."')");
   $affected_rows = mysqli_affected_rows($link);
       
    if($affected_rows > 0):      
        $_SESSION['msg'] = "<p class='center green-text'>".'Cadastrado com Sucesso!'."<br>";
        header("Location: ../cadastro.php");
endif;
relatorio.php

<?php session_start();
include_once 'includes/header.inc.php';
include_once 'includes/menu.inc.php';
?>

<!-- Formulário de Cadastro Cliente -->
        <div class="row container">
            <p>&nbsp;</p>
            <form action="banco_de_dados/consulta_rel.php" method="post" class="col s12">
                <fieldset class="formulario" style="padding: 3px">
                    <legend><img src="imagens/relatorio.png" alt="[imagem]" style="width:55px; height:45px"></legend>
                    <br>
                    
                    <?php
                        if(isset($_SESSION['msg'])):
                            echo $_SESSION['msg'];
                            session_unset();
                        endif;
                    ?>
                    
                    <!-- Campo Data -->
                    <div class="input-field col s12">
                        <i class="material-icons prefix">event_available</i>
                        <input type="date" name="datainicial" id="data" maxlength="10" required>
                        <label for="data">Data Inicial</label>
                    </div>
                    
                    <div class="input-field col s12">
                        <i class="material-icons prefix">event_busy</i>
                        <input type="date" name="datafinal" id="data" maxlength="10" required>
                        <label for="data">Data Final</label>
                    </div>
                    
                    <!-- Botões -->
                    <div class="input-field col s12">
                        <input type="submit"style="width:120px; height:37px" value="Gerar" class="btn blue">
                        <input type="reset" style="width:120px; height:37px" value="limpar" class="btn red">
                    </div>
                    
                </fieldset>
            </form>
        </div>
        
        
<?php include_once 'includes/footer.inc.php';?>
<?php include_once 'includes/script.inc.php'; 

consulta_rel.php

 

<?php
    session_start();
    include_once 'conexao.php';
    
$datainicial    = $_POST [ 'datainicial' ];
$datafinal      = $_POST [ 'datafinal' ];
    
$sql= "select * from tb_cadastro where data between '$datainicial' and '$datainicial'";
$consulta_rel = mysqli_query($link, $sql);

echo "sql";

if($consulta_rel) {
//////    $_SESSION['msg'] = "<p class='center green-text'>".'Devolução efetuada com Sucesso!'."<br>";
    header("Location: ../arquivo_rel.php");
    exit();
}

 

Capturar1.PNG

Capturar2.PNG

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, sua pergunta ta um pouco confusa, por causa dos códigos que você postou.

Vamos la,

 

primeiro, você esta iniciando uma sessão em todas as paginas, isso é desnecessário

segundo, você esta "imprimindo" o resultado da query no consulta_rel.php , como você redireciona você perde esses dados.

tente colocar a pagina que vai exibir esses dados como action da form ou armazene esse resultado na sessão e regaste na pagina de destino.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá icaro, primeiro obrigado pela atenção e ajuda, então, ontem eu fiz alguns ajuste melhorei um pouco, mas não estou conseguindo trazer os dados do banco quando filtro pela data inicial e data final. se eu mudo a query de select e deixo para mostrar todos os dados da tabela sem o BETWEEN, ela me retorna certinho, mas todos os dados de todas as datas. Vou postar o código!

 

create.php

<?php

session_start();
include_once 'conexao.php';



$id         = $_POST ['id'];
$nome       = $_POST ['nome'];
$inst       = $_POST ['inst'];
//$data       = $_POST ['data'];
$data       = date('y-m-d'); // verificar se é dessa forma.
$telefone   = $_POST ['telefone'];
$chave      = $_POST ['chave'];


$queryInsert = $link->query("insert into tb_cadastro VALUES ('" . $id . "', '" . $nome . "','" . $inst . "','" . $data . "','" . $telefone . "','" . $chave . "')");
$affected_rows = mysqli_affected_rows($link);

if ($affected_rows > 0):
    $_SESSION['msg'] = "<p class='center green-text'>" . 'Cadastrado com Sucesso!' . "<br>";
    header("Location: ../cadastro.php");
endif;

-----------------------------
  
  cadastro.php
  
  <?php
session_start();
include_once 'includes/header.inc.php';
include_once 'includes/menu.inc.php';
?>

<!-- Formulário de Cadastro Cliente -->
<div class="row container">

    <form action="banco_de_dados/create.php" method="post" class="col s12">
        <fieldset class="formulario" style="padding: 1px;">
            <legend><!--<img src="imagens/CadCli.png" alt="[imagem]" style="width:40x; height:40px">--></legend>
            <br>

            <?php
            if (isset($_SESSION['msg'])):
                echo $_SESSION['msg'];
                session_unset();
            endif;
            ?>

            <!-- Campo Nome -->
            <div class="input-field col s12">
                <i class="material-icons prefix">account_circle</i>
                <input type="text" name="nome" id="nome" maxlength="40" required autofocus>
                <label for="nome">Nome</label>
            </div>

            <!-- Campo Instituição -->
            <div class="input-field col s12">
                <i class="material-icons prefix">account_balance</i>
                <input type="text" name="inst" id="inst" maxlength="40" required autofocus>
                <label for="inst">Instituição</label>
            </div>

            <!-- Campo Telefone -->
            <div class="input-field col s12">
                <i class="material-icons prefix">phone</i>
                <input type="text" name="telefone" id="telefone" maxlength="13" required>
                <label for="telefone">Telefone</label>
            </div>

            <!-- Campo Chave -->
            <div class="input-field col s12">
                <i class="material-icons prefix">vpn_key</i>
                <input type="text" name="chave" id="chave" maxlength="4" required>
                <label for="chave">Chave</label>
            </div>


            <!-- Botões -->
            <div class="input-field col s12">
                <input type="submit"style="width:120px; height:37px" value="cadastrar" class="btn blue">
                <input type="reset" style="width:120px; height:37px" value="limpar" class="btn red">
            </div>
        </fieldset>
    </form>
</div>


<?php include_once 'includes/script.inc.php'; ?>


----------------------------------------------------------

relatorio.php

<?php
session_start();
include_once 'includes/header.inc.php';
include_once 'includes/menu.inc.php';
?>

<!-- Formulário de Cadastro Cliente -->
<div class="row container">
    <form action="arquivo_rel.php" method="POST" class="col s12">
        <fieldset class="formulario" style="padding: 3px">
            <legend><img src="imagens/relatorio.png" alt="[imagem]" style="width:55px; height:45px"></legend>
            <br>

            <?php
            if (isset($_SESSION['msg'])):
                echo $_SESSION['msg'];
                session_unset();
            endif;
            ?>

            <!-- Campo Data -->
            <div class="input-field col s12">
                <i class="material-icons prefix">event_available</i>
                <input type="date" name="data_inicial" id="data_inicial" maxlength="8" required>
                <label for="data_inicial">Data Inicial</label>
            </div>

            <div class="input-field col s12">
                <i class="material-icons prefix">event_busy</i>
                <input type="date" name="data_final" id="data_final" maxlength="8" required>
                <label for="data_final">Data Final</label>
            </div>

            <!-- Botões -->
            <div class="input-field col s12">
                <input type="submit"style="width:120px; height:37px" value="Gerar" class="btn blue">
                <input type="reset" style="width:120px; height:37px" value="limpar" class="btn red">
            </div>

        </fieldset>
    </form>
</div>


<?php include_once 'includes/footer.inc.php'; ?>
<?php
include_once 'includes/script.inc.php';


-------------------------------------------------------------------
  
  arquivo_rel.php
  
  <?php
session_start();
include_once 'banco_de_dados/conexao.php';
include_once 'includes/header.inc.php';
include_once 'includes/menu.inc.php';
?>

<!-- Formulário de Cadastro Cliente -->
<div class="row container">
        <fieldset class="formulario" style="padding: 5px">
            <legend><img src="imagens/relatorio.png" alt="[imagem]" style="width:55px; height:45px"></legend>
            <br>

            <?php
            if (isset($_SESSION['msg'])):
                echo $_SESSION['msg'];
                session_unset();
            endif;
            ?>

            <?php
            echo "<table border=1>";
            echo "<thead>";
            echo "<tr>";
            echo "<th>id:</th>";
            echo "<th>Nome:</th>";
            echo "<th>inst:</th>";
            echo "<th>data:</th>";
            echo "<th>telefone:</th>";
            echo "<th>chave:</th>";
            echo "</tr>";
            echo "</thead>";

            //$data_inicial    = $_POST ['data_inicial'];
            //$data_final      = $_POST ['data_final'];
            //$data_inicial    = date('y-m-d');
            //$data_final      = date('y-m-d');

            $sql = "select * FROM tb_cadastro where data BETWEEN ('data_inicial') AND ('data_final')";
            $resultado = mysqli_query($link, $sql) or die("Erro ao retornar dados");
           
            // Obtendo os dados por meio de um loop while
            while ($registro = mysqli_fetch_array($resultado)) {
                $id = $registro['id'];
                $nome = $registro['nome'];
                $inst = $registro['inst'];
                $data = $registro['data'];
                $telefone = $registro['telefone'];
                $chave = $registro['chave'];
                echo "<tr>";
                echo "<td>".$id."</td>";
                echo "<td>".$nome."</td>";
                echo "<td>".$inst."</td>";
                //echo "<td>".$data."</td>";
                echo "<td>".date('d/m/Y')."</td>";
                echo "<td>".$telefone."</td>";
                echo "<td>".$chave."</td>";
                echo "</tr>";
            }
            mysqli_close($link);
            echo "</table>";
            ?>
        </fieldset>    
</div>

<?php include_once 'includes/footer.inc.php'; ?>
<?php include_once 'includes/script.inc.php'; ?>

  

 

 

Capturar.PNG

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta muda essa query

a sua ta assim

$sql = "select * FROM tb_cadastro where data BETWEEN ('data_inicial') AND ('data_final')";

ve se o data_inicial e o final estão recebendo os valores corretos, tenta por as variáveis ai entro da query

 

$sql = "select * FROM tb_cadastro where data BETWEEN '$data_inicial' AND '$data_final'";

tira o comentário das variáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 horas atrás, icarof disse:

tenta muda essa query

a sua ta assim


$sql = "select * FROM tb_cadastro where data BETWEEN ('data_inicial') AND ('data_final')";

ve se o data_inicial e o final estão recebendo os valores corretos, tenta por as variáveis ai entro da query

 


$sql = "select * FROM tb_cadastro where data BETWEEN '$data_inicial' AND '$data_final'";

tira o comentário das variáveis.

Era isso mesmo, faltava colocar a variável da forma correta na query como você mostrou! Muito Obrigado pela ajuda, deu certinho agora...

Só mais um duvida, quero por um campo no final com o total de registro buscado entre as datas, é possível fazer isso teria uma dica pra eu seguir ! Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

poe o resultado dessa query dentro de uma variavel e faz um mysqli_num_row que ele vai te dar o numero de linhas retornadas

tente essa função

function DBclose($link){
	@mysqli_close($link) or die (mysqli_error($link));
	}

// abre conexão ao MySQL - Mysqli
function DBConnect() {
	$link = mysqli_connect(HOSTNAME, USERNAME, PASSWORD, DATABASE) or die (mysqli_connect_error());
	mysqli_set_charset($link, CHARSET) or die (mysqli_error($link));

return $link;
}

function DBExecute($query){
	$link = DBConnect();
	$result = @mysqli_query($link, $query) or die (mysqli_error($link));
	
	DBclose($link);
	return $result;
}

function ContadorReg($sql){
	$query = $sql;
	$resultado = DBExecute($query); //nota essa é uma função minha que executa a query
	$m = mysqli_num_rows($resultado);
	return $m;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, percebi que você está recebendo o valor $data_inicial e $data_final via $_POST, você precisa usar o padrão americano YYYY-MM-DD para pesquisar usando o between.

 

Você deve estar recebendo o valor do seu formulário no padrão brasileiro (dd/mm/YYYY), você precisa converter para o padrão americano (YYYY-mm-dd).

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, André Severino disse:

Olá, percebi que você está recebendo o valor $data_inicial e $data_final via $_POST, você precisa usar o padrão americano YYYY-MM-DD para pesquisar usando o between.

 

Você deve estar recebendo o valor do seu formulário no padrão brasileiro (dd/mm/YYYY), você precisa converter para o padrão americano (YYYY-mm-dd).

Olá blz, então, ele esta recebendo agora tudo certo, coloquei o nome das varias da forma correta como o icarof falou, $data_inicial e $data_final, ao declarar a variável data  no create.php eu deixei ela assim, $data    = date('y-m-d');

4 horas atrás, icarof disse:

poe o resultado dessa query dentro de uma variavel e faz um mysqli_num_row que ele vai te dar o numero de linhas retornadas

tente essa função


function DBclose($link){
	@mysqli_close($link) or die (mysqli_error($link));
	}

// abre conexão ao MySQL - Mysqli
function DBConnect() {
	$link = mysqli_connect(HOSTNAME, USERNAME, PASSWORD, DATABASE) or die (mysqli_connect_error());
	mysqli_set_charset($link, CHARSET) or die (mysqli_error($link));

return $link;
}

function DBExecute($query){
	$link = DBConnect();
	$result = @mysqli_query($link, $query) or die (mysqli_error($link));
	
	DBclose($link);
	return $result;
}

function ContadorReg($sql){
	$query = $sql;
	$resultado = DBExecute($query); //nota essa é uma função minha que executa a query
	$m = mysqli_num_rows($resultado);
	return $m;
}

 

Obrigado novamente pela ajuda e pela dica, vou tentar aqui !

Compartilhar este post


Link para o post
Compartilhar em outros sites

de boas, qualquer duvida posta ae ae, se estive dentro dos meu sconhecimentos ajudo na hora.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 02/03/2020 at 14:32, André Severino disse:

Olá, percebi que você está recebendo o valor $data_inicial e $data_final via $_POST, você precisa usar o padrão americano YYYY-MM-DD para pesquisar usando o between.

 

Você deve estar recebendo o valor do seu formulário no padrão brasileiro (dd/mm/YYYY), você precisa converter para o padrão americano (YYYY-mm-dd).

Com certeza a solução seja essa aqui, algo do tipo: date($dataInicial, strtotime("2020-03-03"))

Compartilhar este post


Link para o post
Compartilhar em outros sites

o strtotime  nesse caso não serve, pois ele precisa da representação numerica da data, e essa função não serve para isso

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 ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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