Ihre SQL-Abfrage muss Ihre Bedingungen richtig gruppieren
$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 ");
Was Sie getan haben, entspricht im Code etwa dem Folgenden:
if (status == 'found' && firstname like 'a')
{
return row;
}
else if (lastname like 'a')
{
return row;
}
Wenn Sie dies sehen, ist es möglicherweise etwas klarer, wenn die erste Bedingung fehlschlägt (die einzige, die prüft, ob status == 'found'
dann springt es zur nächsten Bedingung (nach der OR-Anweisung) und prüft nur, ob lastname
Übereinstimmungen.
Sie müssen Ihre select-Anweisungsbedingung gruppieren, damit sie korrekt überprüft wird:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
In diesem Fall gruppieren wir beide firstname
und lastname
Bedingungen zusammen (in Klammern), sodass die gesamte ODER-Bedingung zu einer einzigen Wahr/Falsch-Antwort führt, diese Antwort wird dann auf den status
angewendet prüfen nach.