Вашата sql заявка трябва да групира вашите условия правилно
$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 ");
Това, което правехте, е еквивалентно на нещо подобно в кода:
if (status == 'found' && firstname like 'a')
{
return row;
}
else if (lastname like 'a')
{
return row;
}
Ако видите това, може да е малко по-ясно, ако първото условие е неуспешно (единственото, което проверява дали status == 'found'
след това ще премине към следващото условие (след оператора ИЛИ) и ще провери само дали lastname
съвпадения.
Ще трябва да групирате вашето условие за оператор select, така че да го проверява правилно:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
В този случай групираме и двете firstname
и lastname
условия заедно (в скоби), така че цялото условие ИЛИ да води до един отговор вярно/невярно, след което този отговор се прилага към status
проверете след.