La requête suivante ne retournera aucun résultat ...
if (empty($from_date)) {
$from_date = 2000-01-01;
}
if (empty($to_date)) {
$to_date = 3000-01-01;
}
if (empty($_POST['supervisor'])) {
$_POST['supervisor'] = "%";
}
$query
->select(array('id', 'job_date', 'emp_name', 'super', 'qty_jobs', 'job_id', 'job_name', 'qty_measure', 'qty_install', 'qty_shop', 'qty_misc'))
->from($db->quoteName('admin_service_reports'))
->where(($db->quoteName('job_date') . ' >= ' . $db->quote($from_date).' AND '.$db->quoteName('job_date') . ' <= ' . $db->quote($to_date)).' AND '.$db->quoteName('emp_name').' LIKE "'.$_POST['employee'].'"')
->order('id DESC');
Mais si je supprime la comparaison des employés dans la partie où, comme ...
$query
->select(array('id', 'job_date', 'emp_name', 'super', 'qty_jobs', 'job_id', 'job_name', 'qty_measure', 'qty_install', 'qty_shop', 'qty_misc'))
->from($db->quoteName('admin_service_reports'))
->where(($db->quoteName('job_date') . ' >= ' . $db->quote($from_date).' AND '.$db->quoteName('job_date') . ' <= ' . $db->quote($to_date)).'')
->order('id DESC');
Ça fonctionne bien.
J'ai essayé d'utiliser des parenthèses et des dizaines d'autres choses et il ne retournera tout simplement pas de lignes. Je me demandais si quelqu'un voyait quelque chose que je n'avais pas vu au cours des 5 dernières heures. Je ne sais pas si c'est assez d'informations pour résoudre même. Je suis sur le point de supprimer le code JDatabase ici et d'utiliser PHP/MySQL standard.
La clausule semblable est incorrecte. Au lieu de
LIKE "'.$_POST['employee'].'"
CA devrait etre
LIKE "%'.$_POST['employee'].'%"
Notez le% entourant votre texte.
En passant, ce n’est pas une bonne pratique d’injecter des globales telles que $ _POST ou $ _GET dans les requêtes car cela produit un code vulnérable à l’injection SQL. Vous feriez mieux d’obtenir des données de publication via JInput
class et, comme vous l’avez fait auparavant, de citer et d’échapper ces données avec $db->quote($posted_data, true);