Cita:
Iniciado por sotadeoros
Buenas
Tengo dos string Fecha1 y fecha2 con las que quiero hacer un filtro en mysql y estoy dando vueltas y siempre me da error.
Las cadenas son
Código:
$inicio = isset($_GET['fecha1'])? strval($_GET['fecha1']) : '';
$final = isset($_GET['fecha2'])? strval($_GET['fecha2']) : '';
y la forma de hacer el filtro es:
Código:
$pdf->Table('select DATE_FORMAT(fecha,"%d-%m-%y") AS fecha,expedi,consigna,domicilio,pobla,bultos,tipo,reembolso,observ from envio where codigo = "'.$contra.'" and almacen = "'.$almacen.'" and enviado = "S" and fecha BETWEEN $inicio AND $final');
El tema es que, claro, en la base de datos, fecha es tipo timestamp, y las variables inicio y final son tipo cadena, por lo que no puede compararse y tendria que convertir antes éstas cadenas.
Una ayuda
Saludos
luego por que hay webs hackeadas, bueno eso ya a futuro supongo que implementaras filtros para evitar inyecciones sql,
supongo que tu tabla de Mysql, esta ya con el campo DATETIME o DATE, asi que no es necesario que conviertas el string, basta con enviarle un ENTERO en tiempo UNIX segundos desde el año 1970, o bien enviarle la fecha con el formato que MYSQL espera recibir
asi que
Código PHP:
//https://www.php.net/manual/es/function.strtotime.php
$inicio = isset($_GET['fecha1'])? strval($_GET['fecha1']) : '0';
$timestamp_Segundos = strtotime($inicio );
$final = date("Y-m-d H:i:s", $timestamp_Segundos);
$inicio = date("Y-m-d H:i:s", $timestamp_Segundos);
en todo caso lo principal es que tu GET que tiene la fecha o tiempo debe estar en un formato que acepte la funcion "strtotime", una vez lo tengas asunto resuelto