You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.7 KiB
87 lines
2.7 KiB
<?php
|
|
include_once __DIR__ . '/person.php';
|
|
$dbconn = pg_connect("host=localhost dbname=contacts2");
|
|
|
|
class Location {
|
|
public $id;
|
|
public $street;
|
|
public $city;
|
|
public $state;
|
|
public function __construct($id, $street, $city, $state) {
|
|
$this->id = $id;
|
|
$this->street = $street;
|
|
$this->city = $city;
|
|
$this->state = $state;
|
|
$this->inhabitants = [];
|
|
}
|
|
}
|
|
class Locations {
|
|
static function create($location){
|
|
$query = "INSERT INTO locations (street, city, state) VALUES ($1, $2, $3)";
|
|
$query_params = array($location->street, $location->city, $location->state);
|
|
pg_query_params($query, $query_params);
|
|
return self::all();
|
|
}
|
|
static function delete($id){
|
|
$query = "DELETE FROM locations WHERE id = $1";
|
|
$query_params = array($id);
|
|
$result = pg_query_params($query, $query_params);
|
|
|
|
return self::all();
|
|
}
|
|
static function update($updated_location){
|
|
$query = "UPDATE locations SET street = $1, city = $2, state = $3 WHERE id = $4";
|
|
$query_params = array($updated_location->street, $updated_location->city, $updated_location->state, $updated_location->id);
|
|
$result = pg_query_params($query, $query_params);
|
|
|
|
return self::all();
|
|
}
|
|
static function all(){
|
|
$locations = array();
|
|
|
|
$results = pg_query("SELECT
|
|
locations.*,
|
|
people.id AS person_id,
|
|
people.name,
|
|
people.age
|
|
FROM locations
|
|
LEFT JOIN people
|
|
ON locations.id = people.home_id
|
|
ORDER BY locations.id ASC");
|
|
|
|
$row_object = pg_fetch_object($results);
|
|
$last_location_id = null;
|
|
while($row_object){
|
|
|
|
if($row_object->id !== $last_location_id){
|
|
$new_location = new Location(
|
|
$row_object->id,
|
|
$row_object->street,
|
|
$row_object->city,
|
|
$row_object->state
|
|
);
|
|
$locations[] = $new_location;
|
|
$last_location_id = $row_object->id;
|
|
}
|
|
|
|
if($row_object->person_id){
|
|
$new_person = new Person(
|
|
intval($row_object->person_id),
|
|
$row_object->name,
|
|
$row_object->age
|
|
);
|
|
|
|
$locations_length = count($locations);
|
|
$last_index_of_locations = $locations_length-1;
|
|
$most_recently_added_location = $locations[$last_index_of_locations];
|
|
$most_recently_added_location->inhabitants[] = $new_person;
|
|
}
|
|
|
|
$row_object = pg_fetch_object($results);
|
|
}
|
|
|
|
return $locations;
|
|
}
|
|
}
|
|
?>
|