Hello, Yes we could use a map as a select tool, if you use this script inclusion you can have a google map: Then you make a div to put the map in, add icons to the map, and set click events for the icons. Attached GMapFront.unpacked.zip might be a reasonable place to start. I can help you work on that, probably next week. To make a download file, build up a comma separated string of values while you are looping through doing calculations, and then assign it to a $_SESSION variable. i.e.: $csv = ""; foreach($result as $row) { $eto = somecalculation(); $etr = someothercalculation(); $csv .= $eto.",".$etr."\n"; } $_SESSION['csvFileName'] = "download.csv"; $_SESSION['csvData'] = $csv; And then have a download data form with a button on it something like this: (the $retVal is just building up the form, and then it is echoed, sorry for the hackish code) $retVal .= "
".PHP_EOL; $retVal .= " "; $retVal .= "".PHP_EOL; $retVal .= "".PHP_EOL; $retVal .= "
".PHP_EOL; You will notice that the "action" is /utils/CsvOutput.php, which is also included in the .zip file and should be able to prompt the user to save the file. Ummm... Oh the button by default has a label of "Processing..." and is updated to "Download Data" by the following bit of code, which is wrapped in a $(document).ready which makes it happen after the page has been completly drawn on the users screen (otherwise the .csv file data may not be available, depending ...) Jquery is required. $retVal .= "$(document).ready(function(){ "; $retVal .= "$(function() { ".PHP_EOL; $retVal .= " document.CsvOutputForm.downloadbutton.enabled=true;".PHP_EOL; $retVal .= "document.CsvOutputForm.downloadbutton.value = 'Download Data';".PHP_EOL; $retVal .= " } ".PHP_EOL; $retVal .= "}) ;".PHP_EOL; Again, sorry about the $retVal stuff... I can help clean this up together next week!