Uw sql-query moet uw voorwaarden correct groeperen
$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 ");
Wat je aan het doen was, komt overeen met zoiets als dit in code:
if (status == 'found' && firstname like 'a')
{
return row;
}
else if (lastname like 'a')
{
return row;
}
Als je dit ziet, is het misschien wat duidelijker als de eerste voorwaarde faalt (de enige die controleert of status == 'found'
dan springt het naar de volgende voorwaarde (na de OR-instructie) en controleert alleen of lastname
wedstrijden.
U moet uw select statement-voorwaarde groeperen zodat deze correct wordt gecontroleerd:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
In dit geval groeperen we beide firstname
en lastname
voorwaarden samen (tussen haakjes) zodat de hele OF-voorwaarde resulteert in een enkel waar/onwaar antwoord, dat antwoord wordt dan toegepast op de status
controleer daarna.