diff options
4 files changed, 61 insertions, 41 deletions
| -rw-r--r-- | src/models/Company.php | 13 | ||||
| -rw-r--r-- | src/models/DB.php | 69 | ||||
| -rw-r--r-- | src/models/DBModel.php | 2 | ||||
| -rw-r--r-- | src/models/JobOffer.php | 18 |
diff --git a/src/models/Company.php b/src/models/Company.php index 1dfb05e..58b1734 100644 --- a/src/models/Company.php +++ b/src/models/Company.php @@ -1,5 +1,5 @@ <?php -include_once("models/DBModel.php"); +include_once('models/DBModel.php'); class Company extends DBModel { public string $name; @@ -12,13 +12,20 @@ class Company extends DBModel { * Everything from here is static functionality */ - public const TABLE_NAME = "companies"; + public const TABLE_NAME = 'companies'; static function __constructStatic() { $columns = array( - "name " . DB::STRING_TYPE, + 'name ' . DB::STRING_TYPE, ); self::$DB->createTable(self::TABLE_NAME, $columns); + + // Since there is no real way to add companies, this serves as the only official way. + if (sizeof(self::getAllFromDB()) == 0) { + self::insertIntoDB(new Company("MegaCorp")); + self::insertIntoDB(new Company("Cool INC.")); + self::insertIntoDB(new Company("Company Awesome Ltd.")); + } } /* Create */ diff --git a/src/models/DB.php b/src/models/DB.php index 8174831..f424334 100644 --- a/src/models/DB.php +++ b/src/models/DB.php @@ -3,37 +3,39 @@ * The model that has the database functionality. DO NOT instantiate this class! If you need an instance, extend the DBModel class! */ class DB { - private static $servername = "localhost"; - private static $username = "root"; - private static $password = "password"; - private static $dbname = "devrix_job_board"; + private static $servername = 'localhost'; + private static $username = 'root'; + private static $password = 'password'; + private static $dbname = 'devrix_job_board'; - public const STRING_TYPE = "VARCHAR(100)"; - public const FLOAT_TYPE = "DOUBLE(16,4)"; - public const INTEGER_TYPE = "INT"; + public const STRING_TYPE = 'VARCHAR(100)'; + public const FLOAT_TYPE = 'DOUBLE(16,4)'; + public const INTEGER_TYPE = 'INT'; private PDO $connection; function __construct() { // Try to connect try { - $this->connection = new PDO("mysql:host=" . self::$servername, self::$username, self::$password); + $this->connection = new PDO('mysql:host=' . self::$servername, self::$username, self::$password); $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { - echo "[DB Exception]: " . $e->getMessage(); + echo '[DB Exception]: ' . $e->getMessage(); } // Make sure the actual db exists - $createDBQuery = "CREATE DATABASE IF NOT EXISTS " . self::$dbname . ";"; + $createDBQuery = 'CREATE DATABASE IF NOT EXISTS ' . self::$dbname . ';'; $this->connection->exec($createDBQuery); // Connect to the actual database - $this->connection->exec("USE " . self::$dbname); + $this->connection->exec('USE ' . self::$dbname); } /** + * Generates a foreign key string from the given parameters. + * * @return string */ static function genFK(string $currentColumn, string $foreignTable, string $foreignColumn) { @@ -59,24 +61,26 @@ class DB { $query = "CREATE TABLE IF NOT EXISTS {$tableName}( id INT NOT NULL AUTO_INCREMENT, "; + // Create column parts of query string foreach ($columns as $column) { $query .= "{$column}, "; } - $query .= "PRIMARY KEY (id), "; + // Create key(s) parts of query string + $query .= 'PRIMARY KEY (id), '; foreach ($foreignKeys as $fk) { $query .= "{$fk}, "; } - $query = rtrim($query, ", "); - $query .= ");"; + $query = rtrim($query, ', '); + $query .= ');'; try { $this->connection->exec($query); } catch (PDOException $e) { - echo "[DB Exception]: " . $e->getMessage(); + echo '[DB Exception]: ' . $e->getMessage(); } } @@ -91,23 +95,23 @@ class DB { function insertValue(string $tableName, ...$values) { $query = "INSERT INTO {$tableName} VALUES(NULL, "; + // Create the values part of the query string foreach($values as $value) { - if (gettype($value) == "string") { + // In queries, strings must be surrounded in single quotes + if (gettype($value) == 'string') $query .= "'{$value}', "; - } - else { + else $query .= "{$value}, "; - } } - $query = rtrim($query, ", "); + $query = rtrim($query, ', '); - $query .= ");"; + $query .= ');'; try { $this->connection->exec($query); } catch (PDOException $e) { - echo "[DB Exception]: " . $e->getMessage(); + echo '[DB Exception]: ' . $e->getMessage(); } } @@ -117,7 +121,7 @@ class DB { * Returns the next value that has the given id. */ function getById(string $tableName, int $id) { - $sth = $this->connection->prepare("SELECT * FROM `{$tableName}` WHERE id = {$id}"); + $sth = $this->connection->prepare("SELECT * FROM {$tableName} WHERE id = {$id}"); $sth->execute(); return $sth->fetch(PDO::FETCH_OBJ); @@ -127,7 +131,7 @@ class DB { * Returns all values inside a table. */ function getAllValues(string $tableName) { - $sth = $this->connection->prepare("SELECT * FROM `{$tableName}`"); + $sth = $this->connection->prepare("SELECT * FROM {$tableName}"); $sth->execute(); return $sth->fetchAll(PDO::FETCH_OBJ); @@ -145,10 +149,19 @@ class DB { function updateById(string $tableName, int $id, ...$values) { $query = "UPDATE {$tableName} SET "; + // Create the name = value part of query string for ($i = 0; $i < sizeof($values); $i += 2) { - $query .= "{$values[$i]} = " . (gettype($values[$i+1]) == "string" ? "'{$values[$i+1]}'" : $values[$i+1]) . ", "; + $query .= "{$values[$i]} = "; + + // In queries, strings must be surrounded in single quotes + if (gettype($values[$i+1]) == 'string') + $query .= "'{$values[$i+1]}'"; + else + $query .= $values[$i+1]; + + $query .= ', '; } - $query = rtrim($query, ", "); + $query = rtrim($query, ', '); $query .= " WHERE id = {$id};"; @@ -156,7 +169,7 @@ class DB { $this->connection->exec($query); } catch (PDOException $e) { - echo "[DB Exception]: " . $e->getMessage(); + echo '[DB Exception]: ' . $e->getMessage(); } } @@ -170,7 +183,7 @@ class DB { $this->connection->exec("DELETE FROM {$tableName} WHERE id = {$id}"); } catch (PDOException $e) { - echo "[DB Exception]: " . $e->getMessage(); + echo '[DB Exception]: ' . $e->getMessage(); } } } diff --git a/src/models/DBModel.php b/src/models/DBModel.php index 4e10c18..a9f931c 100644 --- a/src/models/DBModel.php +++ b/src/models/DBModel.php @@ -1,5 +1,5 @@ <?php -include_once("DB.php"); +include_once('DB.php'); /** * A class, mainly for holding the static DB class intance. You can also get your model id from here. diff --git a/src/models/JobOffer.php b/src/models/JobOffer.php index b86ff86..4fd7acc 100644 --- a/src/models/JobOffer.php +++ b/src/models/JobOffer.php @@ -1,6 +1,6 @@ <?php -include_once("models/DBModel.php"); -include_once("models/Company.php"); +include_once('models/DBModel.php'); +include_once('models/Company.php'); /** * Model that contains the required JobOffer properties. It also contains the request methods to the job_offers table. @@ -22,17 +22,17 @@ class JobOffer extends DBModel { * Everything from here is static functionality */ - public const TABLE_NAME = "job_offers"; + public const TABLE_NAME = 'job_offers'; static function __constructStatic() { $columns = array( - "title " . DB::STRING_TYPE, - "description " . DB::STRING_TYPE, - "companyId " . DB::INTEGER_TYPE, // Requires a foreign key - "salary " . DB::FLOAT_TYPE, + 'title ' . DB::STRING_TYPE, + 'description ' . DB::STRING_TYPE, + 'companyId ' . DB::INTEGER_TYPE, // Requires a foreign key + 'salary ' . DB::FLOAT_TYPE, ); $foreignKeys = array( - DB::genFK("companyId", Company::TABLE_NAME, "id") + DB::genFK('companyId', Company::TABLE_NAME, 'id') ); self::$DB->createTable(self::TABLE_NAME, $columns, $foreignKeys); } @@ -77,7 +77,7 @@ class JobOffer extends DBModel { * @param JobOffer $jb */ static function updateFromDB($jb) { - self::$DB->updateById(self::TABLE_NAME, $jb->id, "title", $jb->title, "description", $jb->description, "companyId", $jb->companyId, "salary", $jb->salary); + self::$DB->updateById(self::TABLE_NAME, $jb->id, 'title', $jb->title, 'description', $jb->description, 'companyId', $jb->companyId, 'salary', $jb->salary); } /* Delete */ |
