Votre requête sql doit regrouper correctement vos conditions
$query=mysql_query("select * from persons where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by date desc LIMIT $start,$per_page ");
Ce que vous faisiez équivaut à quelque chose comme ceci dans le code :
if (status == 'found' && firstname like 'a')
{
return row;
}
else if (lastname like 'a')
{
return row;
}
Si vous voyez ceci, cela peut être un peu plus clair, si la première condition échoue (la seule qui vérifie si status == 'found'
alors il passera à la condition suivante (après l'instruction OR) et ne vérifiera que si lastname
correspondances.
Vous devrez regrouper votre condition d'instruction select afin qu'elle la vérifie correctement :
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
Dans ce cas, nous regroupons les deux firstname
et lastname
conditions ensemble (entre parenthèses) de sorte que toute la condition OU aboutisse à une seule réponse vrai/faux, cette réponse est ensuite appliquée au status
vérifier après.