Improve myway route reconciliation using direction headsigns
Improve myway route reconciliation using direction headsigns

<?php <?php
   
/* /*
* Copyright 2010,2011 Alexander Sadleir * Copyright 2010,2011 Alexander Sadleir
   
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
   
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
   
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
   
function getRoute($routeID) { function getRoute($routeID) {
global $conn; global $conn;
$query = "Select * from routes where route_id = :routeID LIMIT 1"; $query = "Select * from routes where route_id = :routeID LIMIT 1";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":routeID", $routeID); $query->bindParam(":routeID", $routeID);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetch(PDO :: FETCH_ASSOC); return $query->fetch(PDO :: FETCH_ASSOC);
} }
function getRoutesByShortName($routeShortName) { function getRoutesByShortName($routeShortName) {
global $conn; global $conn;
$query = "Select distinct route_id, route_short_name from routes where route_short_name = :routeShortName"; $query = "Select distinct route_id, route_short_name from routes where route_short_name = :routeShortName";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":routeShortName", $routeShortName); $query->bindParam(":routeShortName", $routeShortName);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
function getRouteHeadsigns($routeID) { function getRouteHeadsigns($routeID) {
global $conn; global $conn;
$query = "select distinct trip_headsign,direction_id from routes join trips on trips.route_id = routes.route_id $query = "select distinct stops.stop_name, trip_headsign,direction_id from routes join trips on trips.route_id = routes.route_id
join stop_times on stop_times.trip_id = trips.trip_id "; join stop_times on stop_times.trip_id = trips.trip_id join stops on stop_times.stop_id = stops.stop_id where trips.route_id = :routeID and stop_times.stop_sequence = 1";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":routeID", $routeID); $query->bindParam(":routeID", $routeID);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
function getRouteByFullName($routeFullName) { function getRouteByFullName($routeFullName) {
global $conn; global $conn;
$query = "Select * from routes where route_short_name||route_long_name = :routeFullName LIMIT 1"; $query = "Select * from routes where route_short_name||route_long_name = :routeFullName LIMIT 1";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":routeFullName", $routeFullName); $query->bindParam(":routeFullName", $routeFullName);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetch(PDO :: FETCH_ASSOC); return $query->fetch(PDO :: FETCH_ASSOC);
} }
   
function getRoutes() { function getRoutes() {
global $conn; global $conn;
$query = "Select * from routes order by route_short_name;"; $query = "Select * from routes order by route_short_name;";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
function getRoutesByNumber($routeNumber = "") { function getRoutesByNumber($routeNumber = "") {
global $conn; global $conn;
if ($routeNumber != "") { if ($routeNumber != "") {
$query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id = $query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id =
routes.route_id join stop_times on stop_times.trip_id = trips.trip_id routes.route_id join stop_times on stop_times.trip_id = trips.trip_id
where route_short_name = :routeNumber OR route_short_name LIKE :routeNumber2 order by route_short_name;"; where route_short_name = :routeNumber OR route_short_name LIKE :routeNumber2 order by route_short_name;";
} else { } else {
$query = "SELECT DISTINCT route_short_name from routes order by route_short_name"; $query = "SELECT DISTINCT route_short_name from routes order by route_short_name";
} }
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
if ($routeNumber != "") { if ($routeNumber != "") {
$query->bindParam(":routeNumber", $routeNumber); $query->bindParam(":routeNumber", $routeNumber);
$routeNumber2 = "% " . $routeNumber; $routeNumber2 = "% " . $routeNumber;
$query->bindParam(":routeNumber2", $routeNumber2); $query->bindParam(":routeNumber2", $routeNumber2);
} }
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
function getRoutesByNumberSeries($routeNumberSeries = "") { function getRoutesByNumberSeries($routeNumberSeries = "") {
global $conn; global $conn;
if (strlen($routeNumberSeries) == 1) { if (strlen($routeNumberSeries) == 1) {
return getRoutesByNumber($routeNumberSeries); return getRoutesByNumber($routeNumberSeries);
} }
$seriesMin = substr($routeNumberSeries, 0, -1) . "0"; $seriesMin = substr($routeNumberSeries, 0, -1) . "0";
$seriesMax = substr($routeNumberSeries, 0, -1) . "9"; $seriesMax = substr($routeNumberSeries, 0, -1) . "9";
$query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id = $query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id =
routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where to_number(route_short_name, 'FM999') between :seriesMin and :seriesMax OR route_short_name LIKE :routeNumberSeries order by route_short_name;"; routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where to_number(route_short_name, 'FM999') between :seriesMin and :seriesMax OR route_short_name LIKE :routeNumberSeries order by route_short_name;";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":seriesMin", $seriesMin); $query->bindParam(":seriesMin", $seriesMin);
$query->bindParam(":seriesMax", $seriesMax); $query->bindParam(":seriesMax", $seriesMax);
$routeNumberSeries = "% " . substr($routeNumberSeries, 0, -1) . "%"; $routeNumberSeries = "% " . substr($routeNumberSeries, 0, -1) . "%";
$query->bindParam(":routeNumberSeries", $routeNumberSeries); $query->bindParam(":routeNumberSeries", $routeNumberSeries);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
function getRouteNextTrip($routeID) { function getRouteNextTrip($routeID) {
global $conn; global $conn;
$query = "select * from routes join trips on trips.route_id = routes.route_id $query = "select * from routes join trips on trips.route_id = routes.route_id
join stop_times on stop_times.trip_id = trips.trip_id where join stop_times on stop_times.trip_id = trips.trip_id where
arrival_time > :currentTime and routes.route_id = :routeID order by arrival_time > :currentTime and routes.route_id = :routeID order by
arrival_time limit 1"; arrival_time limit 1";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":currentTime", current_time()); $query->bindParam(":currentTime", current_time());
$query->bindParam(":routeID", $routeID); $query->bindParam(":routeID", $routeID);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
$r = $query->fetch(PDO :: FETCH_ASSOC); $r = $query->fetch(PDO :: FETCH_ASSOC);
   
// past last trip of the day special case // past last trip of the day special case
if (sizeof($r) < 16) { if (sizeof($r) < 16) {
$query = "select * from routes join trips on trips.route_id = routes.route_id $query = "select * from routes join trips on trips.route_id = routes.route_id
join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID order by join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID order by
arrival_time DESC limit 1"; arrival_time DESC limit 1";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":routeID", $routeID); $query->bindParam(":routeID", $routeID);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
   
$r = $query->fetch(PDO :: FETCH_ASSOC); $r = $query->fetch(PDO :: FETCH_ASSOC);
} }
return $r; return $r;
} }
   
function getRouteAtStop($routeID, $stop_id) { function getRouteAtStop($routeID, $stop_id) {
$nextTrip = getRouteNextTrip($routeID); $nextTrip = getRouteNextTrip($routeID);
if ($nextTrip['trip_id']) { if ($nextTrip['trip_id']) {
foreach (getTripStopTimes($nextTrip['trip_id']) as $tripStop) { foreach (getTripStopTimes($nextTrip['trip_id']) as $tripStop) {
if ($tripStop['stop_id'] == $stop_id) if ($tripStop['stop_id'] == $stop_id)
return $tripStop; return $tripStop;
} }
} }
return Array(); return Array();
} }
   
function getRouteTrips($routeID) { function getRouteTrips($routeID) {
global $conn; global $conn;
$query = "select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id $query = "select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id
join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID and stop_sequence = '1' order by join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID and stop_sequence = '1' order by
arrival_time "; arrival_time ";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":routeID", $routeID); $query->bindParam(":routeID", $routeID);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
function getRoutesByDestination($destination = "", $service_period = "") { function getRoutesByDestination($destination = "", $service_period = "") {
global $conn; global $conn;
if ($service_period == "") if ($service_period == "")
$service_period = service_period(); $service_period = service_period();
if ($destination != "") { if ($destination != "") {
$query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id $query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id
FROM stop_times join trips on trips.trip_id = FROM stop_times join trips on trips.trip_id =
stop_times.trip_id join routes on trips.route_id = routes.route_id stop_times.trip_id join routes on trips.route_id = routes.route_id
WHERE route_long_name = :destination AND service_id=:service_period order by route_short_name"; WHERE route_long_name = :destination AND service_id=:service_period order by route_short_name";
} else { } else {
$query = "SELECT DISTINCT route_long_name $query = "SELECT DISTINCT route_long_name
FROM stop_times join trips on trips.trip_id = FROM stop_times join trips on trips.trip_id =
stop_times.trip_id join routes on trips.route_id = routes.route_id stop_times.trip_id join routes on trips.route_id = routes.route_id
WHERE service_id= :service_period order by route_long_name"; WHERE service_id= :service_period order by route_long_name";
} }
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":service_period", $service_period); $query->bindParam(":service_period", $service_period);
if ($destination != "") if ($destination != "")
$query->bindParam(":destination", $destination); $query->bindParam(":destination", $destination);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
function getRoutesBySuburb($suburb, $service_period = "") { function getRoutesBySuburb($suburb, $service_period = "") {
if ($service_period == "") if ($service_period == "")
$service_period = service_period(); $service_period = service_period();
global $conn; global $conn;
$query = "SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name $query = "SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name
FROM stop_times join trips on trips.trip_id = stop_times.trip_id FROM stop_times join trips on trips.trip_id = stop_times.trip_id
join routes on trips.route_id = routes.route_id join routes on trips.route_id = routes.route_id
join stops on stops.stop_id = stop_times.stop_id join stops on stops.stop_id = stop_times.stop_id
WHERE zone_id LIKE ':suburb AND service_id=:service_period ORDER BY route_short_name"; WHERE zone_id LIKE ':suburb AND service_id=:service_period ORDER BY route_short_name";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":service_period", $service_period); $query->bindParam(":service_period", $service_period);
$suburb = "%" . $suburb . ";%"; $suburb = "%" . $suburb . ";%";
$query->bindParam(":suburb", $suburb); $query->bindParam(":suburb", $suburb);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) { function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) {
if ($service_period == "") if ($service_period == "")
$service_period = service_period(); $service_period = service_period();
$service_ids = service_ids($service_period); $service_ids = service_ids($service_period);
$sidA = $service_ids[0]; $sidA = $service_ids[0];
$sidB = $service_ids[1]; $sidB = $service_ids[1];
if ($limit != "") if ($limit != "")
$limitSQL = " LIMIT :limit "; $limitSQL = " LIMIT :limit ";
global $conn; global $conn;
$query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id,
min(ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE)) as distance min(ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE)) as distance
FROM stop_times FROM stop_times
join trips on trips.trip_id = stop_times.trip_id join trips on trips.trip_id = stop_times.trip_id
join routes on trips.route_id = routes.route_id join routes on trips.route_id = routes.route_id
join stops on stops.stop_id = stop_times.stop_id join stops on stops.stop_id = stop_times.stop_id
WHERE (service_id=:service_periodA OR service_id=:service_periodB) WHERE (service_id=:service_periodA OR service_id=:service_periodB)
AND ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), :distance, FALSE) AND ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), :distance, FALSE)
group by service_id,trips.route_id,route_short_name,route_long_name group by service_id,trips.route_id,route_short_name,route_long_name
order by distance $limitSQL"; order by distance $limitSQL";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":service_periodA", $sidA); $query->bindParam(":service_periodA", $sidA);
$query->bindParam(":service_periodB", $sidB); $query->bindParam(":service_periodB", $sidB);
$query->bindParam(":distance", $distance); $query->bindParam(":distance", $distance);
if ($limit != "") if ($limit != "")
$query->bindParam(":limit", $limit); $query->bindParam(":limit", $limit);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
return $query->fetchAll(); return $query->fetchAll();
} }
   
?> ?>
<?php <?php
/* /*
* Copyright 2010,2011 Alexander Sadleir * Copyright 2010,2011 Alexander Sadleir
   
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
   
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
   
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
include ('../include/common.inc.php'); include ('../include/common.inc.php');
auth(); auth();
foreach ($_REQUEST as $key => $value) { foreach ($_REQUEST as $key => $value) {
if (strstr($key, "route") && !strstr($value, "Select")) { if (strstr($key, "route") && !strstr($value, "Select")) {
$myway_route = str_replace("route", "", $key); $myway_route = str_replace("route", "", $key);
$route_id = $value; $vparts = explode("-",$value);
$query = "update myway_routes set route_id = :route_id where myway_route = :myway_route"; $route_short_name = $vparts[0];
  $trip_headsign = $vparts[1];
  $query = "update myway_routes set route_short_name = :route_short_name, trip_headsign = :trip_headsign where myway_route = :myway_route";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":myway_route", $myway_route, PDO::PARAM_STR, 5); $query->bindParam(":myway_route", $myway_route, PDO::PARAM_STR, 5);
$query->bindParam(":route_id", $route_id, PDO::PARAM_STR, 42);  
  $query->bindParam(":route_short_name", $route_short_name, PDO::PARAM_STR, 42);
  $query->bindParam(":trip_headsign", $trip_headsign, PDO::PARAM_STR, 42);
$query->execute(); $query->execute();
die(print_r($conn->errorInfo(), true)); die(print_r($conn->errorInfo(), true));
} }
if (strstr($key, "myway_stop")) { if (strstr($key, "myway_stop")) {
$myway_stop = $value; $myway_stop = $value;
$stop_id = $_REQUEST['stop_id']; $stop_id = $_REQUEST['stop_id'];
$query = "update myway_stops set stop_id = :stop_id where myway_stop = :myway_stop"; $query = "update myway_stops set stop_id = :stop_id where myway_stop = :myway_stop";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":myway_stop", $myway_stop, PDO::PARAM_STR, 25); $query->bindParam(":myway_stop", $myway_stop, PDO::PARAM_STR, 25);
$query->bindParam(":stop_id", $stop_id, PDO::PARAM_STR, 32); $query->bindParam(":stop_id", $stop_id, PDO::PARAM_STR, 32);
$query->execute(); $query->execute();
die(print_r($conn->errorInfo(), true)); die(print_r($conn->errorInfo(), true));
} }
} }
include_header("MyWay Data Reconcile", "mywayTimeRec"); include_header("MyWay Data Reconcile", "mywayTimeRec");
// initialise // initialise
$count = $conn->exec("insert into myway_stops $count = $conn->exec("insert into myway_stops
select distinct myway_stop from myway_observations select distinct myway_stop from myway_observations
WHERE myway_stop NOT IN WHERE myway_stop NOT IN
( (
SELECT myway_stop SELECT myway_stop
FROM myway_stops FROM myway_stops
)"); )");
echo "$count new stops.<br>"; echo "$count new stops.<br>";
if (!$count) { if (!$count) {
print_r($conn->errorInfo()); print_r($conn->errorInfo());
} }
$count = $conn->exec("insert into myway_routes select distinct myway_route from myway_observations $count = $conn->exec("insert into myway_routes select distinct myway_route from myway_observations
WHERE myway_route NOT IN WHERE myway_route NOT IN
( (
SELECT myway_route SELECT myway_route
FROM myway_routes FROM myway_routes
)"); )");
echo "$count new routes.<br>"; echo "$count new routes.<br>";
if (!$count) { if (!$count) {
print_r($conn->errorInfo()); print_r($conn->errorInfo());
} }
echo "<h2>Stops</h2>"; echo "<h2>Stops</h2>";
/* stops /* stops
search start of name, display map and table nuimbered, two text boxes */ search start of name, display map and table nuimbered, two text boxes */
$query = "Select * from myway_stops where stop_id is NUll;"; $query = "Select * from myway_stops where stop_id is NUll;";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
foreach ($query->fetchAll() as $myway_stop) { foreach ($query->fetchAll() as $myway_stop) {
echo "<h3>{$myway_stop[0]}</h3>"; echo "<h3>{$myway_stop[0]}</h3>";
$markers = array(); $markers = array();
$stopKey = 0; $stopKey = 0;
$foundStops = getStops("",$myway_stop[0]); $foundStops = getStops("",$myway_stop[0]);
if (sizeof($foundStops) > 0) { if (sizeof($foundStops) > 0) {
echo "<table>"; echo "<table>";
foreach ($foundStops as $stopResult) { foreach ($foundStops as $stopResult) {
$markers[] = array( $markers[] = array(
$stopResult['stop_lat'], $stopResult['stop_lat'],
$stopResult['stop_lon'] $stopResult['stop_lon']
); );
echo "<tr><td>" . $stopKey++ . "</td><td>" . $stopResult['stop_name'] . "</td><td>" . $stopResult['stop_id'] . "</td></tr>"; echo "<tr><td>" . $stopKey++ . "</td><td>" . $stopResult['stop_name'] . "</td><td>" . $stopResult['stop_id'] . "</td></tr>";
} }
echo '</table>'; echo '</table>';
echo "" . staticmap($markers,false,false,false,true) . "<br>\n"; echo "" . staticmap($markers,false,false,false,true) . "<br>\n";
} }
echo '<form id="inputform' . md5($myway_stop[0]) . '"> echo '<form id="inputform' . md5($myway_stop[0]) . '">
<input type="hidden" name="myway_stop" value="' . $myway_stop[0] . '"> <input type="hidden" name="myway_stop" value="' . $myway_stop[0] . '">
<div data-role="fieldcontain"> <div data-role="fieldcontain">
<label for="stop_id">Stop ID</label> <label for="stop_id">Stop ID</label>
<input type="text" name="stop_id" id="stop_id" value="' . $foundStops[0]['stop_id'] . '" /> <input type="text" name="stop_id" id="stop_id" value="' . $foundStops[0]['stop_id'] . '" />
</div> <input type="button" onclick="$.post(\'myway_timeliness_reconcile.php\', $(\'#inputform' . md5($myway_stop[0]) . '\').serialize())" value="Go!"></form> </div> <input type="button" onclick="$.post(\'myway_timeliness_reconcile.php\', $(\'#inputform' . md5($myway_stop[0]) . '\').serialize())" value="Go!"></form>
'; ';
echo '<hr>'; echo '<hr>';
} }
echo '<h2>Routes</h2>'; echo '<h2>Routes</h2>';
/* routes /* routes
remove alpha char, search present dropdown */ remove alpha char, search present dropdown */
$query = "Select * from myway_routes where route_short_name is NUll;"; $query = "Select * from myway_routes where route_short_name is NUll;";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
foreach ($query->fetchAll() as $myway_route) { foreach ($query->fetchAll() as $myway_route) {
echo "<h3>{$myway_route[0]}</h3>"; echo "<h3>{$myway_route[0]}</h3>";
$query = "Select * from myway_observations where myway_route = :route order by time"; $query = "Select * from myway_observations where myway_route = :route order by time";
debug($query, "database"); debug($query, "database");
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":route", $myway_route[0]); $query->bindParam(":route", $myway_route[0]);
$query->execute(); $query->execute();
if (!$query) { if (!$query) {
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
return Array(); return Array();
} }
foreach ($query->fetchAll() as $myway_obvs) { foreach ($query->fetchAll() as $myway_obvs) {
echo $myway_obvs['myway_stop'] . $myway_obvs['time'] . "<br>"; echo $myway_obvs['myway_stop'] . $myway_obvs['time'] . "<br>";
} }
$searchRouteNo = preg_replace("/[A-Z]/", "", $myway_route[0]); $searchRouteNo = preg_replace("/[A-Z]/", "", $myway_route[0]);
echo $searchRouteNo; echo $searchRouteNo;
echo '<form id="inputform' . $myway_route[0] . '"> echo '<form id="inputform' . $myway_route[0] . '">
<select name="route' . $myway_route[0] . '" onchange=\'$.post("myway_timeliness_reconcile.php", $("#inputform' . $myway_route[0] . '").serialize())\'> <select name="route' . $myway_route[0] . '" onchange=\'$.post("myway_timeliness_reconcile.php", $("#inputform' . $myway_route[0] . '").serialize())\'>
<option>Select a from/to pair...</option>'; <option>Select a from/to pair...</option>';
foreach (getRoutesByShortName($searchRouteNo) as $routeResult) { foreach (getRoutesByShortName($searchRouteNo) as $routeResult) {
foreach(getRouteHeadsigns($routeResult['route_id']) as $headsign ) { foreach(getRouteHeadsigns($routeResult['route_id']) as $headsign ) {
echo "<option value=\"{$routeResult['route_short_name']}{$routeResult['route_long_name']}\"> echo "<option value=\"{$routeResult['route_short_name']}-{$headsign['trip_headsign']}\">
{$routeResult['route_short_name']}{$routeResult['route_long_name']} {$headsign['trip_headsign']}</option>\n"; {$routeResult['route_short_name']}{$routeResult['route_long_name']} - {$headsign['trip_headsign']} {$headsign['direction_id']} @ {$headsign['stop_name']} </option>\n";
} }
} }
echo "</select></form>"; echo "</select></form>";
echo '<hr>'; echo '<hr>';
} }
include_footer(); include_footer();
?> ?>