<?php class GPSSimulation { private $conn; private $hst = null; private $db = null; private $usr = null; private $pwd = null; private $gpsdata = []; //////////////////////// PRIVATE private function fillDataTable() { $this->initializeDatabase(); $add = $this->conn->prepare("INSERT INTO gpsmsg(dom, wagon, x, y) VALUES(?, ?, ?, ?)"); // voorkom dubbele entries in de database. // als satelliet, datum, x en y al voorkomen in de tabel // kun je vaststellen dat de huifkar tijdelijk stilstaat // voor pauze, lunch of restaurantbezoek // en is een nieuwe entry niet nodig. $doesRecordExist = $this->conn->prepare( "SELECT COUNT(*) FROM gpsmsg WHERE dom = ? AND wagon = ? AND x = ? AND y = ?" ); foreach($this->gpsdata as $ins) { list($dom, $wagon, $x, $y) = $ins; $doesRecordExist->execute([$dom, $wagon, $x, $y]); if($doesRecordExist->fetchColumn() == 0) { $add->execute([$dom, $wagon, $x, $y]); } } } private function initializeDatabase() { $this->conn->query("TRUNCATE TABLE gpsmsg"); $this->gpsdata[] = ["2023-10-19", "Old Faithful", 100, 100]; $this->gpsdata[] = ["2023-10-19", "Old Faithful", 150, 150]; $this->gpsdata[] = ["2023-10-19", "Old Faithful", 230, 310]; $this->gpsdata[] = ["2023-10-19", "Old Faithful", 80, 245]; // test dubbelen, worden niet opgenomen in de database $this->gpsdata[] = ["2023-10-19", "Old Faithful", 100, 100]; $this->gpsdata[] = ["2023-10-19", "Old Faithful", 150, 150]; $this->gpsdata[] = ["2023-10-19", "Old Faithful", 230, 310]; $this->gpsdata[] = ["2023-10-19", "Old Faithful", 80, 245]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 10, 54]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 75, 194]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 175, 161]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 134, 280]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 300, 160]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 400, 290]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 544, 222]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 444, 122]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 321, 60]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 200, 88]; $this->gpsdata[] = ["2023-10-15", "Jade Princess", 25, 25]; $this->gpsdata[] = ["2023-10-10", "Skyblue Wonder", 50, 50]; $this->gpsdata[] = ["2023-10-10", "Skyblue Wonder", 300, 188]; $this->gpsdata[] = ["2023-10-10", "Skyblue Wonder", 225, 90]; // test dubbelen, worden niet opgenomen in de database $this->gpsdata[] = ["2023-10-10", "Skyblue Wonder", 50, 50]; $this->gpsdata[] = ["2023-10-10", "Skyblue Wonder", 300, 188]; $this->gpsdata[] = ["2023-10-10", "Skyblue Wonder", 225, 90]; $this->gpsdata[] = ["2023-10-05", "Red Lobster", 50, 50]; $this->gpsdata[] = ["2023-10-05", "Red Lobster", 190, 288]; $this->gpsdata[] = ["2023-10-05", "Red Lobster", 260, 122]; $this->gpsdata[] = ["2023-10-05", "Red Lobster", 340, 90]; $this->gpsdata[] = ["2023-10-05", "Red Lobster", 240, 45]; } //////////////////////// PUBLIC public function __construct($phst, $pdb, $pusr, $ppwd, $refresh = false) { $this->hst = $phst; // bewaar de verbindingsgegevens $this->db = $pdb; $this->hst = $pusr; $this->pwd = $ppwd; $this->conn = new PDO("mysql:host=$phst;dbname=$pdb", $pusr, $ppwd); if($refresh) $this->fillDataTable(); } public function getDataRaw($wagname = null) { $sql = "SELECT * FROM gpsmsg "; if($satnm != null) { $sql .= "WHERE wagon = :wag"; $stmt = $this->conn->prepare($sql); $stmt->execute([":wag" => $wagname]); } else { $stmt = $this->conn->query($sql); } $s = "<table border='1' cellspacing='5' cellpadding='5'>"; $s .= "\r<tr><td>Date</td><td>Wagon</td><td>X</td><td>Y</td><tr>"; while ($row = $stmt->fetch(PDO::FETCH_OBJ)) { $s .= "\r<tr>" ."<td>{$row->dom}</td>" ."<td>{$row->wagon}</td>" ."<td>{$row->x}</td>" ."<td>{$row->y}</td>" ."</tr>"; } $s .= "\r</table><br>"; return $s; } public function getTraject() { $stmt = $this->conn->query("SELECT * FROM gpsmsg "); $dta = []; while($row = $stmt->fetch(PDO::FETCH_OBJ)) { $dta[] = [ "dom" => $row->dom, "wagon" => $row->wagon, "x" => $row->x, "y" => $row->y ]; } return $dta; } public function createSelectbox() { $stmt = $this->conn->query("SELECT DISTINCT wagon FROM gpsmsg"); $s = "<div id='pleaseChooseWagon'><strong>Wagon</strong>"; $s .= "<select name='selWagon' id='selWagon' " ."onchange='getWagonSelected(this)'>"; $s .= "<option value='0'>-- choose wagon --</option>"; while($row = $stmt->fetch(PDO::FETCH_OBJ)) { $s .= "<option value='{$row->wagon}'>{$row->wagon}</option>"; } $s .= "</select></div>"; return $s; } } // einde class GPSSimulation