Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

buscar um intervalo de data inserida na tabela

27-04-2007 20:19

tenho uma tabela

id---data----evento----descricao

id=int, auto increment
data=date
descricao=varchar(5000)

1--2007-01-04--festa---festa de formatura
2--2007-02-06--festa---outra formatura
3--2007-01-31--festa---mais formatura

pois bem, quero fazer uma busca que me limite aos resultados entre a data definida atravez de um post.

No form vou postar a data limite entre
1º de janeiro de 2007 e 31 de janeiro de 2007

como faço esta consulta no banco de dados?
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

27-04-2007 20:45

Vou postar um script detalhado para você usar como base.

Esse exemplo vai pegar mes e ano passados para o script, e mostrar a partir do Banco de Dados, quais resultados são iguais.

<?php $conexao = mysql_connect("localhost", "usuario", "senha") or die(mysql_error()); $db = mysql_select_db("bancodedados"); ?> <?php // $ano_enviado será obtido do formulário $ano_enviado = "2007"; // $mes_enviado será obtido do formulário $mes_enviado = "04"; // pega todos os valores da sua tabela $selec = "SELECT * FROM suatabela"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); ?> <?php // esse $adicional é uma variável para mostrar quantos foram encontrados // será incrementado a cada resultado positivo $adicional = 0; while($dados=mysql_fetch_array($exec)) { // a data do bd é separada (-) $data = explode("-", $dados['data']); /* o ano enviado é comparado com os anos cadastrados o mês enviado é comparado com os meses cadastrados quando o ano e mês forem iguais, vai mostrar na tela -- se a data do bd for: 2007-04-27 $data[0] = 2007 $data[1] = 04 $data[2] = 27 */ if($ano_enviado==$data[0] and $mes_enviado==$data[1]) { echo "Data: ".$dados['data']."<br>"; $adicional++; } // fim do if } // fim do while echo "Foi encontrado $adicional resultado(s)."; ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

buscar um intervalo de data inserida na tabela

28-04-2007 11:32

Obrigado o codigo funciona, mostra a data dos eventos correspondentes, mas a função $total não ta expecificada. o unico errinho.

Outra coisa, quero que ele busque em um intervalo, exemplo, quero saber quais os eventos entre o natal e o ano novo, ou seja, tudo que tem na tabela entre as datas
2007-12-25 a 2007-12-31

Será que há uma busca com esta lógica..

//inicio e fim postado pelo form
$inicio = 2007-12-25;
$fim = 2007-12-31;

$query = "SELECT * FROM agenda WHERE data<=$fim AND data=>$inicio";

busca na tabela AGENDA pela DATA menor/igual e maior/igual

nao sei qual seria o codigo correto, mas a logica é facil, teria algo parecido?
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

28-04-2007 14:31

tenta assim:

<?php $conexao = mysql_connect("localhost", "login", "senha") or die(mysql_error()); $db = mysql_select_db("bancodedados"); // 2007-04-20 data inicial // 2007-04-30 data final $selec = "SELECT * FROM suatabela WHERE seucampo BETWEEN '2007-04-20' AND '2007-04-30'"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); $total = mysql_num_rows($exec); while($dados=mysql_fetch_array($exec)) { // exibindo os dados encontrados echo $dados['seucampo']."<br>"; } echo "Foi encontrado $total resultado(s)."; ?>

1
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

buscar um intervalo de data inserida na tabela

28-04-2007 15:37

Blz, agora ficou perfeito, como a data vai ser postada por um formulario então fiz uma alteraçãozinha, mas esta ótimo, funciona perfeitamente

$inicio = "2007-01-01";
$fim = "2007-01-30";
$query = "SELECT * FROM tabelaWHERE data BETWEEN '$inicio' AND '$fim'";

só uma coisa, a data no formulario é postada em separado em tres campos com nomes
diai---mesi----anoi
-28---04------2007

a data é postada desta forma, tem como criar uma string para unir elas? para inserir na tabela é a mesma coisa, e fiz o seguinte

$sqli= mysql_query(" INSERT INTO tabela (data) VALUES (
'".$_POST['anoi']."-".$_POST['mesi']."-".$_POST['diai']."' )

mas não consigo usar esta lógica para criar algo como

$data = '".$_POST['anoi']."-".$_POST['mesi']."-".$_POST['diai']."'

teria como me ajudar nisto?
1
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

28-04-2007 15:42

se teus inputs de inicio forem:
dia_inicio, mes_inicio e ano_inicio

no PHP fica (se enviado por POST):

$data_inicio = "".$_POST['ano_inicio']."[/color]-".$_POST['mes_inicio']."-".$_POST['dia_inicio']."";
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

buscar um intervalo de data inserida na tabela

28-04-2007 15:45

blz, ficou perfeito, valeu fera
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

28-04-2007 18:51

:)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 10:01

Minha necessidade é semelhante à do Impossível. Necessito buscar os anúncios a expirar entre duas datas. O código em que estou baseando o site que estou desenvolvendo funciona, mas quero acrescer um elemento: o tipo de anúncio (TipoAnuncioID, sendo TipoAnuncioID == '1', anúncio de particular, e TipoAnuncioID == '2', de revenda). Fiz alterações, mas retorna, quando submetido o formulário, a mensagem "Query est vide". O código original é este:

$exp1 = mktime(0,0,0,date(m), date(d) + $_GET[days], date(y));     $exp2 = mktime(23,59,59,date(m), date(d) + $_GET[days], date(y));     $q1 = "select *, from_unixtime(RegDate, '%d/%m/%y') as dp, from_unixtime(ExpDate, '%d/%m/%y') as de from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' ";     $r1 = mysql_query($q1) or die(mysql_error()); 

E estou tentando vincular a consulta ao tipo de arquivo. Tentei assim:

if($_GET[TipoAnuncioID] == '1'){     $q1 = "select *, from_unixtime(RegDate, '%d/%m/%y') as rd, from_unixtime(ExpDate, '%d/%m/%y') as ed from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '1' ";     }else {     if($_GET[TipoAnuncioID] == '2'){     $q1 = "select *, from_unixtime(RegDate, '%d/%m/%y') as rd, from_unixtime(ExpDate, '%d/%m/%y') as ed from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '2'";     }} 

Mas retorna a tal mensagem "Query est vide". Os campos RegDate, ExpDate e TipoAnuncioID fazem parte da tabela em que se pretende consultar. Onde, nessa consulta, em posso inserir a vinculação ao campo TipoAnuncioID, se é que isso é possível, para que a consulta não retorne tal erro?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 10:23

Desculpe. A consulta acredito estar certa. O problema está na consulta entre os if (if($_GET[TipoAnuncioID] == '1'){ e if($_GET[TipoAnuncioID] == '2'){). Se for o caso, apague este post.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

08-06-2009 10:55

O AND está Ok.

Troca seu if

if($_GET[TipoAnuncioID] == '1'){

Por

if(isset($_GET['TipoAnuncioID'])=='1') {

Verifica se realmente está passando o TipoAnuncioID pelo link.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 11:30

Coloquei o isset, mas a mensagem continua a mesma. O TipoAnuncioID está passando. Criei uma consulta preliminar, e coloquei aquela consulta dentro de um while, assim:

if($_GET[TipoAnuncioID] == '1'){ $qt = "select * from ztab_anunciosaeromodelo where TipoAnuncioID = '1' "; } else { if($_GET[TipoAnuncioID] == '2'){ $qt = "select * from ztab_anunciosaeromodelo where TipoAnuncioID = '2' "; }} $rt = mysql_query($qt) or die(mysql_error()); while($at = mysql_fetch_array($rt)) {

Para, no título do formulário, variar entre anúncio de particular e de revenda, fiz assim, dentro do while:

<table width=\"468\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td width=\"100%\" height=\"30\" align=\"center\" valign=\"middle\" class=\"InfoBoxContentsAdmin\">"; if($at[TipoAnuncioID] == '1'){$Anuncios .= "AN&Uacute;NCIO DE VE&Iacute;CULO DE PARTICULAR"; } else { if($at[TipoAnuncioID] == '2'){$Anuncios .= "AN&Uacute;NCIO DE VE&Iacute;CULO DE REVENDA";}} $Anuncios .= "</td></tr></table>

E está dando certo. Quanto à consulta que pretendo fazer, fiz assim:

    if($at['TipoAnuncioID']=='1') {     $exp1 = mktime(0,0,0,date(m), date(d) + $_GET[days], date(y));     $exp2 = mktime(23,59,59,date(m), date(d) + $_GET[days], date(y));          $q1 = "select *, from_unixtime(RegDate, '%d/%m/%y') as rd, from_unixtime(ExpDate, '%d/%m/%y') as ed from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '1' ";     }else{     if($at['TipoAnuncioID']=='2') {     $exp1 = mktime(0,0,0,date(m), date(d) + $_GET[days], date(y));     $exp2 = mktime(23,59,59,date(m), date(d) + $_GET[days], date(y));     $q1 = "select *, from_unixtime(RegDate, '%d/%m/%y') as rd, from_unixtime(ExpDate, '%d/%m/%y') as ed from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '2' ";     }} 

Mas continua a mensagem "Query est vide". Se tiro os if, a consulta funciona. Também tentei assim:

$q1 = "select *, from_unixtime(RegDate, '%d/%m/%y') as rd, from_unixtime(ExpDate, '%d/%m/%y') as ed from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '1' " || "select *, from_unixtime(RegDate, '%d/%m/%y') as rd, from_unixtime(ExpDate, '%d/%m/%y') as ed from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '2' ";

E assim:

$q1 = "select *, from_unixtime(RegDate, '%d/%m/%y') as rd, from_unixtime(ExpDate, '%d/%m/%y') as ed from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '1' || TipoAnuncioID = '2' "; 

Mas o erro retornado é o mesmo. No caso destas duas últimas formas, não usei os if. O interessante é que outras consultas que fiz com tais if referentes ao tipo de anúncio funcionam.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

08-06-2009 11:48

O que seria esse $at ?

$at['TipoAnuncioID']

Deu o echo antes do if para ver se o valor dele vem?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 12:00

$at se refere à consulta antes do while. Isso funciona, conforme referi sobre aparecer, no título do form, a referência a ser anunciante de particular (TipoAnuncioID == '1'), ou de revenda (TipoAnuncioID == '2').
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

08-06-2009 12:14

Vou dar algumas dicas que pode ajudar

- Joga a execução da query dentro do if

if... { SELECT... $r1 = mysql_query($q1) or die(mysql_error()); }

- Ao invés de fazer o select nos ifs, coloca um texto, tipo, e 1, veio 1, se 2, veio 2

- Tenta também, tirar todas as condicionais, deixa somente

WHERE TipoAnuncioID = '1'

- Verifica também letras maiúsculas e minúsculas.

MOVIDO: de PHP para MySQL
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 13:13

Eu entendi. Vou tentar. Outra coisa. O formulário envia para o mesmo arquivo. Está com o método get. Deve ser isso mesmo. Substituí para o método post, e coloquei um action para o mesmo arquivo, aí parou de submeter. Com get, se submeto sem os tais if do tipo de anúncio, o retorno é ok.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

08-06-2009 13:16

Então, coloca tudo no POST, inclusive o METHOD, ai adapta tudo no script para ele

$_POST['campo']
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 14:09

Coloquei tudo no post, mas não vai. Dá o mesmo erro. Vou fazer um arquivo para cada consulta, incluindo nas consultas "and TipoAnuncioID = '1'" e "and TipoAnuncioID = '2'". No futuro, insisto em tentar usar um arquivo para os dois tipos. Obrigado pela força, novamente.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

08-06-2009 14:15

Você deve estar deixando alguma variável passar, quando tiver um tempo, verifica com calma que vai achar, lembrando:

if($_POST['name_do_submit']) {

Esse if é ideal para informar o envio dos dados

após o if, adicione

extract($_POST);

Assim todos campos do form são extraídos, não precisando trabalhar com $_POST['name_do_campo'] somente $name_do_campo
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 14:53

Vou verificar novamente. Quando o arquivo é carregado, e dou echo (echo "$_GET[TipoAnuncioID]";), aparece o número correspondente (1 ou 2, respectivamente particular ou revenda). Se dou o submit, não aparece mais o número referente ao tipo de anúncio. Tem a ver? É assim mesmo? Se não for, o problema deve estar em face do submit. Se dou o submit, a variável $_GET carregada quando o arquivo é aberto se esvazia? Seria isso o problema? Vou postar o código para você ver sua estrutura, e se o problema tem a ver com o submit. A query comentada é do modo que pretendo fazer e não funciona. Com a query não comentada, o form funciona normalmente, executando o que deve executar:

<? require_once("../../configuracao_mysql.php"); require_once("../../doctype.php"); require_once("../../arquivo_estilos/arquivo_estilos.php"); require_once("../../javascript/javascript.php"); require_once("ArquivoLinksGreybox.php"); echo "$_GET[TipoAnuncioID]"; ?> <br> <center> <form method=get> Selecione a quantidade de dias para expirar: <select name=days> <? for($i = '1'; $i <= '365'; $i++) { if($_GET[days] == $i) { echo "<option value=\"$i\" selected>$i</option>\n\t"; } else { echo "<option value=\"$i\">$i</option>\n\t"; } } ?> </select> <input type=submit name=s1 value="Go!"> </form> </center> <? if(isset($_GET[s1])) { $exp1 = mktime(0,0,0,date(m), date(d) + $_GET[days], date(Y)); $exp2 = mktime(23,59,59,date(m), date(d) + $_GET[days], date(Y)); if($_GET[TipoAnuncioID] == '1'){ /* $q1 = "select *, from_unixtime(RegDate, '%b-%d-%Y') as dp, from_unixtime(ExpDate, '%b-%d-%Y') as de from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '1' "; } else { if($_GET[TipoAnuncioID] == '2'){ $q1 = "select *, from_unixtime(RegDate, '%b-%d-%Y') as dp, from_unixtime(ExpDate, '%b-%d-%Y') as de from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' and TipoAnuncioID = '2' "; }} */ $q1 = "select *, from_unixtime(RegDate, '%b-%d-%Y') as dp, from_unixtime(ExpDate, '%b-%d-%Y') as de from ztab_anunciosaeromodelo where ExpDate between '$exp1' and '$exp2' "; $r1 = mysql_query($q1) or die(mysql_error()); if(mysql_num_rows($r1) == '0') { echo "<br><br><center>Nada encontrado.</center>"; exit(); } ?> <table align=center width=650 cellspacing=0> <tr style="background-color:#336699; font-family:verdana; font-size:11; font-weight:bold; color:white"> <td width=450>Nome e ID</td> <td width=100 align=center>Cadastrado em</td> <td width=100 align=center>Expira dia</td> </tr> <? $col = "white"; while($a1 = mysql_fetch_array($r1)) { if($col == "white") { $col = "dddddd"; } else { $col = "white"; } echo "<tr bgcolor=$col>\n\t<td>$a1[TipoAnuncioID] - TipoAnuncioNome</td>\n\t<td align=center>$a1[dp]</td>\n\t<td align=center>$a1[de]</td>\n</tr>\n "; } echo "</table>\n\n"; echo "$_GET[TipoAnuncioID]"; } ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

08-06-2009 15:08

Tem alguns erros no seu script

Primeiro a tag form, o correto deve ser

<form action="documento..." medthod="POST ou GET">

No select, é importante que o name esteja entre " e "

No submit a mesma coisa

Agora, esse
echo "$_GET[TipoAnuncioID]";

Suponho que venha por link, correto?

Se sim, o ideal é que ele seja um campo hidden dentro do form

<input type="hidden" name="TipoAnuncioId" value="<?=$_GET['TipoAnuncioID'];?>">

O if do envio deve ser o seguinte

// caso method POST
if(isset($_POST['s1'])) {

mais

extract($_POST);

Ai é só usar as variáveis enviada

$TipoAnuncioID
$days
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 15:31

Eu entendi. Esse echo "$_GET[TipoAnuncioID]"; vem por link, mesmo. Vem como option de um select, assim:

<option value=\"../anuncioaeromodelo/AnunciosAexpirarAeromodelo_Admin.php?TipoAnuncioID=1\">&nbsp;&#8226;&nbsp;AEROMODELO</option>

Vou fazer as verificações em face do que você disse. Obrigado.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Mensagens: 1309
Sexo: Masculino

buscar um intervalo de data inserida na tabela

08-06-2009 17:23

Fiz, mas na gambiarra. Eu coloquei uma consulta e um submit para cada tipo de anúncio, dentro de correspondentes if($_GET[TipoAnuncioID] == '1' ou if($_GET[TipoAnuncioID] == '2'. Há umas coisinhas a consertar, mas funcionaram as duas consultas num arquivo só. Tentei fazer como você me sugeriu, inclusive com o input hidden no arquivo que faz o link do tipo de anúncio, mas há um select que chama o arquivo, e não soube como colocar o input hidden nessa chamada. Enfim. O POG salva, e é isso que sei fazer. Obrigado.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

buscar um intervalo de data inserida na tabela

08-06-2009 17:31

Se conseguiu tá blz :)
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado