Przede wszystkim nie widze sensu istnienia dwoch tabel. Ja bym polaczyl obydwie w jedna calosc, ktora zawiera po prostu informacje o uzytkownikach (takze te szczegolowe).
Hmm... ja bym to zrobil w ten sposob. Masz formularz do filtrowania, w nim pola: "imie", "nazwisko", "email", "telefon". W skrypcie sprawdzasz ktore pola zostaly wypelniona i dolaczasz odpowiedni fragment zapytania do bazowego zapytania SQL. Np.:
$sql = 'SELECT * FROM users';
if ( !empty($_POST['imie']) )
{
$sql = append_sql($sql, 'imie', $_POST['imie']);
}
if ( !empty($_POST['email']) )
{
$sql = append_sql($sql, 'email', $_POST['email']);
}
{ i tutaj kilka warunkow }
Teraz w funkcji append_sql:
function append_sql($sql, $key, $value, $operator = '=')
{
/* sprawdz czy zapytanie posiada warunek WHERE */
if ( !strpos($sql, 'WHERE') )
{
/* jezeli nie - doklejamy warunek WHERE */
$sql .= ' WHERE ';
}
else
{
/* w przeciwnym razie - doklejamy AND */
$sql .= ' AND ';
}
/* warunek sprawdza czy parametr $value jest lancuchem */
if ( is_string($value) )
{
/* warunek sprwdza typ operatora (parametr $operator) */
if ( $operator == 'LIKE' )
{
/* nakladanie maski */
$value = '%' . $value . '%';
}
$value = '"' . mysql_escape_string($value) . '"';
}
/* doklejamy do zapytania i zwracamy rezultat */
return ( $sql .= "$key $operator $value" );
}
Mniej wiecej tak to powinno wygladac. Oczywiscie pomijam tutaj kwestie bezpieczenstwa, czyli zabezpieczenie sie przed SQL Injection.