<?php class PageRideList extends Page { function Show(): string { if (array_key_exists('from', $_GET)) $PlaceFrom = $_GET['from']; else $PlaceFrom = ''; if (array_key_exists('to', $_GET)) $PlaceTo = $_GET['to']; else $PlaceTo = ''; if (array_key_exists('time', $_GET)) $Time = $_GET['time']; else $Time = ''; $Output = '<table style="width: 100%"><tr><td style="text-align: center;">'. '<form style="display: inline;" method="get" action="'.$this->System->Link('/').'">'. 'Odkud: <input type="text" name="from" value="'.$PlaceFrom.'"/> '. 'Kam: <input type="text" name="to" value="'.$PlaceTo.'"/> '. 'ÄŒas: <input type="text" name="time" value="'.$Time.'"/> '. '<input type="submit" value="Hledat"/>'. '</form></td></tr></table>'; if (array_key_exists('from', $_GET) and array_key_exists('to', $_GET)) { $Output .= $this->ShowRides($_GET['from'], $_GET['to']); } else $Output .= $this->ShowRides('', ''); return $Output; } function ShowRides($PlaceFrom, $PlaceTo) { $Output = '<h3>JÃzdy:</h3>'; $Output .= '<table>'; $Query = 'SELECT Ride.Id, Ride.SeatCount, User.Name AS DriverName, User.BirthDate, '. 'CONCAT(CarManufacturer.Name, " ", CarModel.Name) AS CarName '; if ((trim($PlaceFrom) != '') and (trim($PlaceTo != ''))) $Query .= ', (SELECT COALESCE(MAX(RideStop.PassengerCount), 0) FROM RideStop '. 'WHERE (RideStop.Ride=Ride.Id) AND (RideStop.Sequence > RideStopFrom.Sequence) AND '. '(RideStop.Sequence <= RideStopTo.Sequence)) AS PassengerCount '; else $Query .= ', (SELECT COALESCE(MAX(RideStop.PassengerCount), 0) FROM RideStop '. 'WHERE (RideStop.Ride=Ride.Id)) AS PassengerCount '; $Query .= 'FROM Ride '. 'LEFT JOIN Car ON Car.Id = Ride.Car '. 'LEFT JOIN CarModel ON CarModel.Id = Car.Model '. 'LEFT JOIN CarManufacturer ON CarManufacturer.Id = CarModel.Manufacturer '. 'LEFT JOIN User ON User.Id=Ride.Driver '; if ((trim($PlaceFrom) != '') and (trim($PlaceTo != ''))) $Query .= 'JOIN RideStop AS RideStopFrom ON (RideStopFrom.Ride = Ride.Id) AND (RideStopFrom.Place LIKE "%'.$PlaceFrom.'%") '. 'JOIN RideStop AS RideStopTo ON (RideStopTo.Ride = Ride.Id) AND (RideStopTo.Place LIKE "%'.$PlaceTo.'%") '. 'WHERE (RideStopFrom.Sequence < RideStopTo.Sequence)'; $Query .= 'LIMIT 10'; $DbResult = $this->Database->query($Query); while ($DbRow = $DbResult->fetch_assoc()) { $Stops = array(); $Price = 0; $DbResult2 = $this->Database->query('SELECT * FROM RideStop WHERE Ride='.$DbRow['Id'].' ORDER BY Sequence'); while ($DbRow2 = $DbResult2->fetch_assoc()) { $Stops[] = $DbRow2['Place']; $Price += $DbRow2['Price']; } if ($DbRow['BirthDate'] != '') $Age = ' ('.round((time() - MysqlDateToTime($DbRow['BirthDate'])) / (3600*24*364.25)).' let)'; else $Age = ''; $Output .= '<tr><td>ŘidiÄ:</td><td>'.$DbRow['DriverName'].$Age.'</td>'. '<td colspan="4"><a href="'.$this->System->Link('/jizda/?id='.$DbRow['Id'].'&from='.$PlaceFrom.'&to='.$PlaceTo).'">Ukázat</a></td></tr>'. '<tr><td>Trasa:</td><td>'.implode(' → ', $Stops).'</td></tr>'. '<tr><td>Cena:</td><td>'.$Price.' KÄ</td></tr>'. '<tr><td>Volných mÃst:</td><td>'.($DbRow['SeatCount'] - $DbRow['PassengerCount']).'</td></tr>'. '<tr><td>Auto:</td><td>'.$DbRow['CarName'].'</td></tr>'. '<tr><td> </td></tr>'; } $Output .= '</table>'; return $Output; } }