prepare("SELECT p.id, p.latitude, p.longitude, p.altitude, p.speed, p.bearing, p.time, p.accuracy, p.comment, u.login, t.name, t.id FROM positions p LEFT JOIN users u ON (p.user_id=u.id) LEFT JOIN tracks t ON (p.track_id=t.id) WHERE p.user_id=? AND p.track_id=? ORDER BY p.time"); $query->bind_param('ii', $userid, $trackid); } else { // get data only for latest point $query = $mysqli->prepare("SELECT p.id, p.latitude, p.longitude, p.altitude, p.speed, p.bearing, p.time, p.accuracy, p.comment, u.login, t.name, t.id FROM positions p LEFT JOIN users u ON (p.user_id=u.id) LEFT JOIN tracks t ON (p.track_id=t.id) WHERE p.user_id=? ORDER BY p.time DESC LIMIT 1"); $query->bind_param('i', $userid); } $query->execute(); $query->bind_result($positionid,$latitude,$longitude,$altitude,$speed,$bearing,$dateoccured,$accuracy,$comments,$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("altitude", ($altitude)?round($altitude):$altitude); $xml->writeElement("speed", $speed); $xml->writeElement("bearing", $bearing); $xml->writeElement("dateoccured", $dateoccured); $xml->writeElement("accuracy", $accuracy); $xml->writeElement("comments", $comments); $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_dateoccured))?(strtotime($dateoccured)-strtotime($prev_dateoccured)):0; $prev_dateoccured = $dateoccured; $xml->writeElement("seconds", $seconds); $xml->endElement(); } $xml->endElement(); $xml->endDocument(); $xml->flush(); $query->free_result(); } $mysqli->close(); ?>