La tua query sql deve raggruppare correttamente le tue condizioni
$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 ");
Quello che stavi facendo è equivalente a qualcosa del genere nel codice:
if (status == 'found' && firstname like 'a')
{
return row;
}
else if (lastname like 'a')
{
return row;
}
Se vedi questo potrebbe essere un po' più chiaro, se la prima condizione fallisce (l'unica che controlla se status == 'found'
quindi passerà alla condizione successiva (dopo l'istruzione OR) e verificherà solo se lastname
partite.
Dovrai raggruppare la condizione dell'estratto conto selezionato in modo che lo controlli correttamente:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
In questo caso, raggruppiamo entrambi firstname
e lastname
condizioni insieme (tra parentesi) in modo che l'intera condizione OR risulti in un'unica risposta vero/falso, tale risposta viene quindi applicata allo status
controlla dopo.