Ir para o conteúdo
ricardoneves93

[Resolvido] Fazer query para comparar datas em PHP

Mensagens Recomendadas

ricardoneves93

Estou com uma problema com a minha Query em php. Se fizer exactamente a mesma coisa em sqlite3 funciona bem mas não estou a conseguir por a funcionar em php.

A minha tabela:

CREATE TABLE factura(
idFactura INTEGER PRIMARY KEY AUTOINCREMENT,
invoiceNum VARCHAR,
invoiceDate DATE,
idDocumentTotals INTEGER REFERENCES documentTotals
);

se mandar a seguinte URL para o php:

"API/searchInvoicesByField.php?op=range&field=InvoiceDate&value[]=2013-01-21&value[]=2013-11-12"

<?php
if(isset($_GET['field']) && isset($_GET['value']) && isset($_GET['op']))
  {

#Apenas vai buscar os dois primeiros valores, os outros são ignorados o range apenas necessita de dois valores
$val1 = $_GET['value'][0];
$val2 = $_GET['value'][1];

else if($_GET['field'] == "invoiceDate")
{
 $stmt1 = $db->prepare(
  "SELECT * FROM cliente, documentTotals, factura
  where strftime('%Y-%m-%d', invoiceDate) BETWEEN date(:val1) and date(:val2)
  and documentTotals.idDocumentTotals = factura.idFactura and cliente.customerID = factura.idFactura");
  #esta Query nao está a dar qualquer resultado, já tentei com valores absolutos sem usar variáveis mas sem resultados
}

$parameters = array("val1" => $_GET['value'][0], "val2" => $_GET['value'][1]);
$stmt1->execute($parameters);
$result1 = $stmt1->fetch();
$invoices = array();

while($result != null)
{
 $newInvoice['companyName'] = $result1['companyName'];
 $newInvoice['grossTotal'] = $result1['grossTotal'];

 array_push($invoices, $newInvoice);

 $result1 = $stmt1->fetch();
}
echo json_encode($invoices);
  }
?>

Mas não dá qualquer resultado.

Editado por ricardoneves93

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Verifica para já se te dá algum erro.

if(!$stmt1->execute($parameters)){
echo "Erro: $db->error";
break;
}

Segundo, uma coisa é SQLite outra é MySQL (e não PHP).

Terceiro, pelo que estive a ver, o MySQL não tem nenhuma função strftime.

http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html

http://www.sqlite.org/lang_datefunc.html

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ricardoneves93

Estou a usar sqlite3, mas já desobri o problema na URL que mando para o php tenho que mandar as datas dentro de aspas para serem consideradas strings

API/searchInvoicesByField.php?op=range&field=InvoiceDate&value[]="2013-01-21"&value[]="2013-11-12", era apenas isto que me estava a falhar.

Obrigado pela ajuda ;)

Cumprimentos,

Ricardo Neves

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.