Din sql-forespørgsel skal gruppere dine betingelser korrekt
$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 ");
Det du lavede svarer til noget som dette i kode:
if (status == 'found' && firstname like 'a')
{
return row;
}
else if (lastname like 'a')
{
return row;
}
Hvis du ser dette kan det være lidt klarere, hvis den første betingelse fejler (den eneste, der kontrollerer om status == 'found'
så vil den springe til den næste betingelse (efter OR-sætningen) og kun kontrollere, om lastname
matcher.
Du bliver nødt til at gruppere din valgte erklæringstilstand, så den kontrollerer den korrekt:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
I dette tilfælde grupperer vi begge firstname
og lastname
betingelser sammen (i parentes), så hele ELLER-betingelsen resulterer i et enkelt sandt/falskt svar, det svar anvendes derefter på status
tjek efter.