Jump to content
MrFilipe

Realizar consulta num intervalo de datas...

Recommended Posts

MrFilipe

Boas pessoal,

Gostaria que me ajudassem numa pesquisa entre duas datas seleccionadas.

Estou a utilizar este plugin do jQuery http://jqueryui.com/demos/datepicker/#date-range para fazer esta pesquisa, mas o problema na verdade é que não consigo fazer-la... Tipo queria que ao seleccionar as duas datas e clicando num button ou num link levava dois parâmetros, que são as duas datas, para depois poder filtrar e mostrar a consulta

Eu inicialmente parecia-me fácil, mas o problema é que não consigo raciocinar de forma a colocar isto a funcionar, por isso é que peço a vossa ajuda...

Obrigado.


Abraço.

Share this post


Link to post
Share on other sites
MrFilipe

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<meta charset="utf-8">
<link type="text/css" href="jQuery/css/ui-lightness/jquery-ui-1.8.10.custom.css" rel="stylesheet" />
<script type="text/javascript" src="jQuery/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="jQuery/js/jquery-ui-1.8.10.custom.min.js"></script>
<script type="text/javascript">
$(function() {
	var dates = $( "#from, #to" ).datepicker({
		defaultDate: "+1w",
		changeMonth: true,
		numberOfMonths: 1,
		onSelect: function( selectedDate ) {
			var option = this.id == "from" ? "minDate" : "maxDate",
				instance = $( this ).data( "datepicker" ),
				date = $.datepicker.parseDate(
					instance.settings.dateFormat ||
					$.datepicker._defaults.dateFormat,
					selectedDate, instance.settings );
			dates.not( this ).datepicker( "option", option, date );
		}
	});
});
</script>
</head>

<body>
<div class="demo">

  <p>
  <form id="form" name="form" method="post" action="pesq_admin.php">
   <label for="from">Pesquisar reservas de</label>
  <input type="text" id="from" name="from"/>
    a
  <input type="text" id="to" name="to"/>
    <input type="submit" name="Data" id="Data" value="Pesquisar" />
  </form>
  </p>
  <p> </p>
</div><!-- End demo -->



<div class="demo-description">
<p>Select the date range to search for.</p>
</div>
<p> </p>
<p> </p>
<!-- End demo-description -->
</body>
</html>

Ora bem é este o código que tenho...


Abraço.

Share this post


Link to post
Share on other sites
ruimcosta

Broas,

Se isso é para executar sql, podes utilizar jquery/ajax para informares das datas:

$("input[type=submit]").click(function(e){
e.preventDefault();
var di = $("#from").val();
var df = $("#to").val();

$.post(
   "ficheiro.php", 
   { di: di, df: df  },
   function(data){
    alert(data);
   }		
);
});

<?php
$di = $_POST['di'];
$df = $_POST['df'];

$sql = "select * from tabela where data between $di and $df";
// something like that
echo $sql;
?>


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
MrFilipe

Deixa ver se entendi...

$("input[type=submit]").click(function(e){
e.preventDefault();
var di = $("#from").val();
var df = $("#to").val();

$.post(
   "ficheiro.php",
   { di: di, df: df  },
   function(data){
    alert(data);
   }           
);
});

E esta é para colocar na outra pagina certo???

<?php
$di = $_POST['di'];
$df = $_POST['df'];

$sql = "select * from tabela where data between $di and $df";
// something like that
echo $sql;
?>


Abraço.

Share this post


Link to post
Share on other sites
ruimcosta

Certo, do dito ficheiro.php que referi no jquery.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
MrFilipe

Mas neste código eu abro as tag's <?php ?>, e não aceita este código, abaixo:

$("input[type=submit]").click(function(e){
e.preventDefault();
var di = $("#from").val();
var df = $("#to").val();

$.post(
   "ficheiro.php",
   { di: di, df: df  },
   function(data){
    alert(data);
   }          
);
});


Abraço.

Share this post


Link to post
Share on other sites
ruimcosta

Claro que não, isso é javascript!!!!

Aqui tens o código alterado.

<script type="text/javascript">
    $(function() {
        var dates = $( "#from, #to" ).datepicker({
                defaultDate: "+1w",
                changeMonth: true,
                numberOfMonths: 1,
                onSelect: function( selectedDate ) {
                        var option = this.id == "from" ? "minDate" : "maxDate",
                                instance = $( this ).data( "datepicker" ),
                                date = $.datepicker.parseDate(
                                        instance.settings.dateFormat ||
                                        $.datepicker._defaults.dateFormat,
                                        selectedDate, instance.settings );
                        dates.not( this ).datepicker( "option", option, date );
                }
        });

        $("input[type=submit]").click(function(e){
            e.preventDefault();
            var di = $("#from").val();
            var df = $("#to").val();

            $.post(
               "ficheiro.php",
               { di: di, df: df  },
               function(data){
                alert(data);
               }          
            );
        });
    });
</script>


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
MrFilipe

Peço desculpa se não estou a entender, é que clico no submit e aparece tipo um alerta com o código sql...  ;), em vez de aparecer apenas as datas...

Mais uma coisa, não para colocar antes ao fazer submit aparecer numa pagina em vez de aparecer o alerta??


Abraço.

Share this post


Link to post
Share on other sites
ruimcosta

Biba,

MrFilipe, Aparecer o sql no alert, significa que funciona até ao ponto que te dei o exemplo.

O que está feito, faz com que o echo $sql, apareça depois no alert...

Passo seguinte: No ficheiro.php tens de continuar com o código, executar e se existir dados imprimi-los no ecra.

No ficheiro que tens o jquery, no local que quiseres crias uma div (apenas para exemplificar)

<div id="resultados"></div>

Mais acima, dentro do jquery, onde tens o alert(data) substituis por

$("#resultados").html(data);

Assim e resumindo, o que mandares mostrar no ficheiro.php aparece nessa div.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
MrFilipe

Continuo sem perceber o que tenho de fazer  ;)

A partir daqui onde disseste :

No ficheiro que tens o jquery, no local que quiseres crias uma div (apenas para exemplificar)

<div id="resultados"></div>

Mais acima, dentro do jquery, onde tens o alert(data) substituis por

$("#resultados").html(data);

Assim e resumindo, o que mandares mostrar no ficheiro.php aparece nessa div.

Desculpa o incomodo  ;)


Abraço.

Share this post


Link to post
Share on other sites
ruimcosta

Pronto, analisa o código que partilho e lê os comentários:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>

        <link type="text/css" href="jQuery/css/ui-lightness/jquery-ui-1.8.10.custom.css" rel="stylesheet" />
        <script type="text/javascript" src="jQuery/js/jquery-1.4.4.min.js"></script>
        <script type="text/javascript" src="jQuery/js/jquery-ui-1.8.10.custom.min.js"></script>
        <script type="text/javascript">
            $(function() {
                var dates = $( "#from, #to" ).datepicker({
                    defaultDate: "+1w",
                    changeMonth: true,
                    numberOfMonths: 1,
                    onSelect: function( selectedDate ) {
                            var option = this.id == "from" ? "minDate" : "maxDate",
                                    instance = $( this ).data( "datepicker" ),
                                    date = $.datepicker.parseDate(
                                            instance.settings.dateFormat ||
                                            $.datepicker._defaults.dateFormat,
                                            selectedDate, instance.settings );
                            dates.not( this ).datepicker( "option", option, date );
                    }
                });
    
                $("input[type=submit]").click(function(e){
                    e.preventDefault();
                    var di = $("#from").val();
                    var df = $("#to").val();
        
                    $.post(
                        "ficheiro.php",
                        { di: di, df: df  },
                        function(data){
                            // AQUI VAIS OBTER O RESULTADO DO FICHEIRO.PHP E INTRODUZIR ESSE VALOR NO DVI COM ID=RESULTADOS
                            //alert(data);
                            $("#resultados").html(data);
                        }          
                    );
                });
            });
    </script>
</head>

<body>
    <div class="demo">
        <p>
            <form id="form" name="form" method="post" action="pesq_admin.php">
                <label for="from">Pesquisar reservas de</label>
                <input type="text" id="from" name="from"/>
                a
                <input type="text" id="to" name="to"/>
                <input type="submit" name="Data" id="Data" value="Pesquisar" />
            </form>
        </p>
        <p> </p>
    </div><!-- End demo -->
    <div class="demo-description">
        <p>Select the date range to search for.</p>
    </div>
    <p> </p>
    <!-- Aqui vai aparecer o resultado da execução do teu FICHEIRO.PHP -->
    <div id="resultados"></div>
    <!-- End demo-description -->
    </body>
</html>

Consegues fazer o ficheiro.php a executar o que pretendes?


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
MrFilipe

Pois o problema esta mesmo ai, não estou a ver de que maneira hei-de fazer no ficheiro.php para apresentar o que quero tas a ver  ;)


Abraço.

Share this post


Link to post
Share on other sites
ruimcosta

Então vamos lá:

O ficheiro.php (ou o nome que lhe queiras dar) fará o seguinte:

- Liga ao servidor de mysql (presumo que seja mysql que irás consultar);

- Selecciona a base de dados;

- Executa o sql pretendido;

- Verifica se há registos;

- Imprime no ecrã;

Seguindo estes passos, tenta e vai-me dizendo as dificuldades/erros que te surgem.

"Não lhe dês peixe, ensina-o a pescar!"


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
MrFilipe

Ora bem segui os passos como disseste, mas não esta a imprimir nada  ;)

Envio aqui o código que coloquei no ficheiro.php

<?php
$di = $_POST['di'];
$df = $_POST['df'];

$ligax = mysqli_connect("localhost","root","");
if(!ligax){
     '<p> Falha na ligacao.';exit;}
mysqli_select_db($ligax,'reserva');
$sql = "select * from calendario_has_reserva where Data between $di and $df";
$result = mysqli_query($ligax,$sql);
$nregistos = mysqli_num_rows($result);
'Nr de registos encontrados: '.$nregistos;

'<table border="1">
        <tr><td>Aula</td>
        <td>Reserva</td>
        <td>Data</td>';


    while ($registo = mysqli_fetch_assoc($result)){
        '<tr>
            <td>'.$registo['celndario_Aula'].'</td>
                <td>'.$registo['reserva_reservaID'].'</td>
                <td>'.$registo['Data'].'</td>
                </tr>';
        }
       " </table>";
?>


Abraço.

Share this post


Link to post
Share on other sites
ruimcosta

Desculpa lá...não seria suposto esta linha e restantes

'Nr de registos encontrados: '.$nregistos;

Ser do tipo:

echo 'Nr de registos encontrados: '.$nregistos;

Não precisas de echo para mandar imprimir qualquer coisa no ecra?


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
MrFilipe

Ta certo,  ;).

Mas é que eu ja tentei fazer modificações para aparecer os dados mas mesmo assim nao aparece os dados  ;)


Abraço.

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Olá MrFilipe...

Experimenta na linha:

if(!ligax){

Mudar para:

if(!$ligax){

Abraço

Share this post


Link to post
Share on other sites
MrFilipe

Pois fiz essa alteração e mesmo assim nao funciona  ;)

E coloquei as mesmas datas no querybrowser, para fazer a consulta e aparece dados com a pesquisa que realizei, porque ao inicio pensei que nas datas que coloquei não havia dados referentes...

Não será que esta a passar mal os parâmetros, porque ele apresenta sempre que os dados encontrados é 0


Abraço.

Share this post


Link to post
Share on other sites
ruimcosta

ok.

Faz a seguinte alteração para debug:

$sql = "select * from calendario_has_reserva where Data between $di and $df";
echo $sql;

Vê o sql que retorna.


Abraços e beijinhos,Rui Costa

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.