Skip to content
Snippets Groups Projects
Commit d02de97c authored by user's avatar user
Browse files

feat: donw until excesice 8

parent 130471e9
No related branches found
No related tags found
No related merge requests found
...@@ -24,6 +24,11 @@ class Author ...@@ -24,6 +24,11 @@ class Author
{ {
return "{$this->lastName}, {$this->name}" == $fullname; return "{$this->lastName}, {$this->name}" == $fullname;
} }
public static function toArray(Author $data): array
{
return ["name" => $data->name, "lastName" => $data->lastName, "birthYear" => $data->birthYear, "citation" => array_map(fn($item) => Citation::toArray($item), $data->citations)];
}
} }
; ;
......
...@@ -7,9 +7,25 @@ class Citation ...@@ -7,9 +7,25 @@ class Citation
public string $login, public string $login,
public string $citation, public string $citation,
public string $date, public string $date,
public ?int $id = null,
public ?int $author = null,
public ?string $creationDate = null,
) )
{ {
} }
public static function fromArray(
array $data
)
{
// return new self(...$data);
return new self($data["login"], $data["citation"], $data["date"], $data["id"] ?: null, $data["author_id"] ?: null, $data["creationDate"] ?: null);
}
public static function toArray(
Citation $data
)
{
return ["login" => $data->login, "citation" => $data->citation, "date" => $data->date, "id" => $data->id, "author" => $data->author, "creationDate" => $data->creationDate,];
}
} }
; ;
......
<?php
include "utils/db-functions.php";
function displayCitationRow(array $citation): string
{
$markup = "
<tr>
<td>{$citation["login"]}</td>
<td>{$citation["author"]}</td>
<td>{$citation["date"]}</td>
<td>{$citation["creationDate"]}</td>
<td><a href=\"viewCitation.php?id={$citation["id"]}\" target=\"_blank\" rel=\"noopener noreferrer\">voir citation</a></td>
</tr>\n";
return $markup;
}
// connect to db
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Accueil</title>
</head>
<body>
<main>
<table>
<tr>
<th>Login</th>
<th>Auteur</th>
<th>Date de citation</th>
<th>Date d’enregistrement</th>
<th>Lire</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><a href="viewCitation.php?id=" target="_blank" rel="noopener noreferrer"></a></td>
</tr>
<?php
$citationModel = new CitationModel();
$result = $citationModel->execute("SELECT * FROM `citation` WHERE creationDate > now() - INTERVAL 5 day ORDER BY creationDate DESC")->fetchAll();
$citations = array_map(fn($item) => Citation::fromArray($item), $result);
foreach ($citations as $citation) {
echo displayCitationRow(Citation::toArray($citation));
}
?>
</table>
</main>
</body>
</html>
\ No newline at end of file
<?php <?php
include 'config/db-config.php'; include_once 'config/db-config.php';
include_once 'Entity/Citation.class.php';
include_once 'Entity/Author.class.php';
class DBAdapter class DBAdapter
{ {
static private PDO $pdo = null; static protected ?PDO $pdo = null;
public function __construct( public function __construct(
private string $table, protected string $table,
) )
{ {
$this->connect(); DBAdapter::connect();
} }
private function execute($sql, array $params = null) public function execute(string $sql, array $params = null)
{ {
$req = DBAdapter::$pdo->prepare($sql); $req = DBAdapter::$pdo->prepare($sql);
$result = $req->execute($params); $result = $req->execute($params);
...@@ -22,16 +24,18 @@ class DBAdapter ...@@ -22,16 +24,18 @@ class DBAdapter
return $req; return $req;
} }
private function connect() private static function connect(): void
{ {
if (!is_null(DBAdapter::$pdo)) { if (!is_null(DBAdapter::$pdo)) {
return; return;
} }
global $dbConfig; global $dbConfig;
try { try {
DBAdapter::pdo = new PDO(
self::$pdo = new PDO(
"mysql:host={$dbConfig["host"]}:{$dbConfig["port"]};dbname={$dbConfig["database"]}", "mysql:host={$dbConfig["host"]}:{$dbConfig["port"]};dbname={$dbConfig["database"]}",
$dbConfig["user"], $dbConfig["user"],
$dbConfig["password"], $dbConfig["password"],
...@@ -53,30 +57,40 @@ class CitationModel extends DBAdapter ...@@ -53,30 +57,40 @@ class CitationModel extends DBAdapter
public function __construct() public function __construct()
{ {
DBAdapter::__construct("citation"); parent::__construct("citation");
} }
public function find(array $params = null) public function find(array $params = null)
{ {
$sql = "SELECT * FROM `$this->table` " . isset($params) ?: "WHERE :key = :value"; $sql = "SELECT * FROM `$this->table` " . isset($params) ?: "WHERE :key = :value";
$req = $this->execute($sql, $params); $req = $this->execute($sql, $params);
return $req->fetchAll(); $result = $req->fetchAll();
return array_map(fn($item) => Citation::fromArray($item), $result);
} }
public function findOne(string $sql, array $params = null)
public function findOne(array $params = null)
{ {
$sql = "SELECT * FROM `$this->table` WHERE :key = :value"; $sql = "SELECT * FROM `$this->table` WHERE :key = :value";
$req = $this->execute($sql, $params); $req = $this->execute($sql, $params);
return $req->fetch(); $result = $req->fetch();
return Citation::fromArray($result);
} }
public function findByID(int $id) public function findByID(int $id)
{ {
$sql = "SELECT * FROM `$this->table` WHERE author_id = :id"; $sql = "SELECT * FROM `$this->table` WHERE author_id = :id";
$req = $this->execute($sql, ["id" => $id]); $req = $this->execute($sql, ["id" => $id]);
return $req->fetch(); $result = $req->fetch();
return Citation::fromArray($result);
} }
public function create(Citation $citation) public function create(Citation $citation)
{ {
...@@ -96,7 +110,7 @@ class AuthorModel extends DBAdapter ...@@ -96,7 +110,7 @@ class AuthorModel extends DBAdapter
public function __construct() public function __construct()
{ {
DBAdapter::__construct("author"); parent::__construct("author");
} }
public function find(array $params) public function find(array $params)
...@@ -125,7 +139,7 @@ class AuthorModel extends DBAdapter ...@@ -125,7 +139,7 @@ class AuthorModel extends DBAdapter
{ {
$sql = "INSERT INTO author(`name`,`last_name`,`birth_year`) VALUES (':name',':lastName',':birthYear')"; $sql = "INSERT INTO author(`name`,`last_name`,`birth_year`) VALUES (':name',':lastName',':birthYear')";
$params = ["name" => $author->name, "lastName" => $author->lastName, "birthYear" => $author->birthYear]; $params = ["name" => $author->name, "lastName" => $author->lastName, "birthYear" => $author->birthYear];
$req = $this->execute($sql, $params); return $this->execute($sql, $params);
} }
public function update() public function update()
{ {
......
<?php require("./utils/inputs.php") ?> <?php
require("./utils/inputs.php");
include_once("./utils/db-functions.php");
?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
...@@ -28,29 +32,39 @@ ...@@ -28,29 +32,39 @@
</head> </head>
<body> <body>
<?php
$citationModel = new CitationModel();
$citation = Citation::toArray($citationModel->findByID(getValue($_GET["id"])));
?>
<h1>View Citation</h1> <h1>View Citation</h1>
<div class="citation"> <div class="citation">
<p>login: <p>login:
<b> <b>
<?php echo getValue($_POST["login"]) ?> <?php echo $citation["login"] ?>
<?php // echo getValue($_POST["login"]) ?>
</b> </b>
</p> </p>
<p> <p>
Citation: Citation:
<b> <b>
<?php echo getValue($_POST["citation"]) ?> <?php echo $citation["citation"] ?>
<?php //echo getValue($_POST["citation"]) ?>
</b> </b>
</p> </p>
<p> Auteur: <p> Auteur:
<b> <b>
<?php echo getValue($_POST["auteur"]) ?> <?php echo $citation["author"] ?>
<?php //echo getValue($_POST["auteur"]) ?>
</b> </b>
</p> </p>
<p> <p>
Date: Date:
<b> <b>
<?php echo getValue($_POST["date"]) ?> <?php echo $citation["date"] ?>
<?php //echo getValue($_POST["date"]) ?>
</b> </b>
</p> </p>
</div> </div>
......
<?php <?php
include_once("Entity/Citation.class.php");
include "utils/db-functions.php"; include "utils/db-functions.php";
function displayCitationRow(array $citation): string function displayCitationRow(array $citation): string
...@@ -9,8 +8,8 @@ function displayCitationRow(array $citation): string ...@@ -9,8 +8,8 @@ function displayCitationRow(array $citation): string
<td>{$citation["login"]}</td> <td>{$citation["login"]}</td>
<td>{$citation["author"]}</td> <td>{$citation["author"]}</td>
<td>{$citation["date"]}</td> <td>{$citation["date"]}</td>
<td>{$citation["creation_date"]}</td> <td>{$citation["creationDate"]}</td>
<td><a href=\"viewCitation.php?id={$citation["citation_id"]}\" target=\"_blank\" rel=\"noopener noreferrer\"></a></td> <td><a href=\"viewCitation.php?id={$citation["id"]}\" target=\"_blank\" rel=\"noopener noreferrer\">voir citation</a></td>
</tr>\n"; </tr>\n";
return $markup; return $markup;
} }
...@@ -50,14 +49,9 @@ function displayCitationRow(array $citation): string ...@@ -50,14 +49,9 @@ function displayCitationRow(array $citation): string
$citationModel = new CitationModel(); $citationModel = new CitationModel();
$citations = $citationModel->find(); $citations = $citationModel->find();
print_r($citations); foreach ($citations as $citation) {
// foreach ($citations as $citation) { echo displayCitationRow(Citation::toArray($citation));
// if ( $citation instanceof Citation) { }
// $data = ["login" => $citation->login, "author" => $citation->author]
// echo displayCitationRow($citation);
// }
// // $item = ["login" => $citation->];
// }
?> ?>
</table> </table>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment