prepare("SELECT positions.ID,positions.Latitude,positions.Longitude,positions.Pace,positions.DateAdded,positions.TotalDistance,positions.TotalTime,positions.EventType,users.username,trips.Name,trips.ID FROM positions LEFT JOIN users ON (positions.FK_Users_ID=users.ID) LEFT JOIN trips ON (positions.FK_Trips_ID=trips.ID) WHERE positions.FK_Users_ID=? AND positions.FK_Trips_ID=? ORDER BY positions.DateAdded"); $query->bind_param('ii', $userid, $trackid); } else { // get data only for latest point $query = $mysqli->prepare("SELECT positions.ID,positions.Latitude,positions.Longitude,positions.Pace,positions.DateAdded,positions.TotalDistance,positions.TotalTime,positions.EventType,users.username,trips.Name,trips.ID FROM positions LEFT JOIN users ON (positions.FK_Users_ID=users.ID) LEFT JOIN trips ON (positions.FK_Trips_ID=trips.ID) WHERE positions.FK_Users_ID=? ORDER BY positions.DateAdded DESC LIMIT 1"); $query->bind_param('i', $userid); } $query->execute(); $query->bind_result($positionid,$latitude,$longitude,$pace,$dateadded,$totaldistance,$totaltime,$eventtype,$username,$trackname,$trackid); header("Content-type: text/xml"); $xml = new XMLWriter(); $xml->openURI("php://output"); $xml->startDocument("1.0"); $xml->setIndent(true); $xml->startElement('root'); while ($query->fetch()) { $xml->startElement("position"); $xml->writeAttribute("id", $positionid); $xml->writeElement("latitude", $latitude); $xml->writeElement("longitude", $longitude); $xml->writeElement("pace", $pace); $xml->writeElement("dateadded", $dateadded); $xml->writeElement("TotalDistance", $totaldistance); $xml->writeElement("TotalTime", $totaltime); $xml->writeElement("EventType", $eventtype); $xml->writeElement("username", $username); $xml->writeElement("trackid", $trackid); $xml->writeElement("trackname", $trackname); $distance = (isset($prev_latitude))?haversine_distance($prev_latitude,$prev_longitude,$latitude,$longitude):0; $prev_latitude = $latitude; $prev_longitude = $longitude; $xml->writeElement("distance", round($distance)); $seconds = (isset($prev_dateadded))?(strtotime($dateadded)-strtotime($prev_dateadded)):0; $prev_dateadded = $dateadded; $xml->writeElement("seconds", $seconds); $xml->endElement(); } $xml->endElement(); $xml->endDocument(); $xml->flush(); $query->free_result(); } $mysqli->close(); ?>