rexona 0 Denunciar post Postado Março 1, 2010 Daew galera, eu tenho que construir uma agenda que o usuario tenha a opção de pesquisar todos os agendamentos da Data X até a Data Y ... Estou usando PHP em conjunto com o MySQL para obter os dados e consulta-los , o problema que eu não tenho a mínima ideia de como fazer esse range ... Se alguém poder me ajudar =/ Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Março 1, 2010 você ja fez alguma coisa ? Dá algum erro ? Poste. Compartilhar este post Link para o post Compartilhar em outros sites
Shrek-BH 0 Denunciar post Postado Março 1, 2010 Na sua query você faz assim: $query = 'SELECT * FROM tabela WHERE data>="'.$_POST['data_inicio'].'" AND data<="'.$_POST['data_terminao'].'"' Compartilhar este post Link para o post Compartilhar em outros sites
rexona 0 Denunciar post Postado Março 1, 2010 você ja fez alguma coisa ? Dá algum erro ? Poste. Não eu não fiz nada , pois não sei por onde começar .... Irei testar a solução proposta pelo Shrek ... Eu não havia penssado na possibilidade de usar operadores junto a consulta ... Valeu pela solução , irei testa-lo na aula de hoje ! Se alguém tiver outra solução ou dica deixe-as ai! Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Março 1, 2010 Se sua data for datetime a solução do Sherek irá dar errado. Qual o tipo de campo data ? Se nao for DATETIME coloque. Eh sempre bom trabalhar com os campos correspondentes ao tipo. Se é data, entao DATETIME, se é texto, entao TEXT ou VARCHAR. Se é numero, entao NUMERIC, INT, ou INTEGER. E assim vai. $sql = 'select * from tabela where data between convert(datetime,'.$_POST['data_inicio'].',103) and convert(datetime,'.$_POST['data_final'].',103)'; Compartilhar este post Link para o post Compartilhar em outros sites
rexona 0 Denunciar post Postado Março 3, 2010 Se sua data for datetime a solução do Sherek irá dar errado. Qual o tipo de campo data ? Se nao for DATETIME coloque. Eh sempre bom trabalhar com os campos correspondentes ao tipo. Se é data, entao DATETIME, se é texto, entao TEXT ou VARCHAR. Se é numero, entao NUMERIC, INT, ou INTEGER. E assim vai. $sql = 'select * from tabela where data between convert(datetime,'.$_POST['data_inicio'].',103) and convert(datetime,'.$_POST['data_final'].',103)'; Pois é, ta dando problema :) Eu estou com 3 campos no Banco de Dados : DIA , MES e ANO ... Os 3 são INT ... No php pra ficar com um designe descente eu utilizei 3 select, 1 para dia , 1 para mes e outro para ano ... E fui jogar no select do Shreck , e ele nao ta filtrando ... Ai agora eu queria saber se tem como utilizar 1 campo só com DateTime e usar a verificação do shreck e sem desmanchar o meu SELECT ... Eu penssei em uma solução que antes de inserir no campo DATETIME , eu concatenar as 3 variaveis ( dia/mes/ano ) em uma variavel só com o formato do DATETIME para ser aceito no banco, mais ai me surgiu um outro problema , como que eu irei Exibir elas separadamente na hora das consultas ... Realmente ta fervendo meus neuronios EAUOHAEUOEHA Compartilhar este post Link para o post Compartilhar em outros sites
Shrek-BH 0 Denunciar post Postado Março 3, 2010 O ideal é que no banco o campo seja datetime. Se a sua tabela já estiver com os dados separados (dia,mes e ano) e você quiser alterar o campo para datetime, manda a descrição da sua tabela (DESC nome_tabela). Mas só se tiver com dados nela, caso não tenha é só você criar a tabela com um campo apenas datetime. Para salvar no banco basta você concatenar as variáveis que você tem, por exemplo, porém, para salvar no MySql precisa ser aaaa-mm-dd: $data = $_POST['ano'].'-'.$_POST['mes'].'-'.$_POST['dia']; Para você recuperar os dados no banco e exibí-los separadamente: $query1 = 'SELECT * FROM agenda WHERE xxxxx'; $resultado1 = mysql_query($query1, $conexao); $item1 = mysql_fetch_array($resultado1); $dia = date('d',strtotime($item1['data'])); $mes = date('m',strtotime($item1['data'])); $ano = date('Y',strtotime($item1['data'])); Compartilhar este post Link para o post Compartilhar em outros sites