My website contains many php pages that extract the content of a database according to a selected geographical area (regions and cities in the UK). To help google index all my pages, I have included all those php links in my sitemap. An example is

Typing "Chinese tutor oxford" in the google search field will indeed return this php link in the search result.

However, if you type "Chinese tutor bath", my php link for the city of bath won't show up. The first link to appear in the ranking is my home page.

I have tested a few cities and most city-related php links are not picked up by google. Can anyone tell me why? Thank you

webmaster at www.chinesetutorcentre.co.uk

for starters, and I mean starters:
this page http://www.chinesetutorscentre.co.uk/UK/oxford.php has many urls, the urls extremely outweigh the text content of the page and google really hates that. Google wants to provide content to its users and if you have a hundred links and one small sentence in the body of your page, you can't really expect great results.

Also, I've clicked around on those links on the right and the content is all the same, "Can't find what you are looking for? Send us a query and we will contact you if we have a tutor to match your needs.". Google is not going to index 30 pages in your website that all say the same thing. Maybe once you start adding more, unique content to each page you might get a little further indexed.

Google will demote the pagerank of similar pages. If there's only about 10 words different on each page, it's going to assume they are the same page and demote them.

I've noticed that you don't have your site set up to have either the www. or not. Google will detect http://chinesetutorscentre.co.uk/UK/oxford.php and http://www.chinesetutorscentre.co.uk/UK/oxford.php as two different pages which will demote the page rank. You should either set up your dns to redirect any request to the non www. site to the www. site (or visa-versa) or set up your .htaccess file to do a rewrite.