non ho capito granche' della struttura, ma di una tabella tipi con il nome delle tabelle del database non me la vedo di gran utilita'.

locali.id_tipo = tipi.id_info che poi indirizza al nome della tabella su cui fare la ricerca

equivale a mettere in locali.id_tipo direttamente il nome della tabella ed eliminare la tabella tipi. Si presume infatti che non possa esserci lo stesso tipo con due tabelle di riferimento ma potrebbe esserci una tabella di riferimento che risponde a piu' tipologie. Se cosi' fosse sarebbe rispettata la relazione 1 <-> molti e non servirebbe la tabella di unione (la tab tipi).

Si potrebbe considerare anche che, alla fin della fiera, il nome tabella di riferimento sia un attributo della tabella locali.

A questo punto serviranno sempre due query. La prima estrarra' il nome della tabella e la seconda utilizzera' il nome_tabella estratto per la propria query.

Inoltrandosi sempre piu' ... allora perche' non fare un array con indice numerico dove per valore trovi il nome_tabella? Sarebbe ancora piu' pulito.

Codice PHP:
$array = array(=> 'ciccio'=> 'pallino'=> 'pallo');

$id 2;

$query "select * from $array[$id]"
ma forse e' troppo semplice e non va bene.

Naturalmente tutto condito con un bel IMHO!!!