The reason for the missing update is the wrong NPC name
donpcevent "PvP Ranker::OnInit";
This assumes an NPC named "PvP Ranker" has an Event named "OnInit" (which is executed once after server start and on every @reloadscript and @loadnpc). Your NPC is named "PvP Ladder". So either rename your NPC to "PvP Ladder" or adjust all "PvP Ranker::OnInit" call to "PvP Ladder::OnInit".
This is like running to your service station saying "my car wont start".
Any mysql error in your map-server console?
How are the new vote points saved? Each vote a new table record or just a single record per account_id?
May you attach the voting PHP script too?
If you already did a mysql query to fetch anything for char or login table, its a simple JOIN to fetch the online character including his last_map info too.
But in general, if you got the choice, getmapxy should be faster i guess.
Your current map is saved as `last_map` (including `last_x` and `last_y`) every n seconds (defined in /conf/map-server.conf as `autosave_time`; see also `save_settings` setting).