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

feat: donw until excesice 8

parent 130471e9
Branches main
No related tags found
No related merge requests found
......@@ -24,6 +24,11 @@ class Author
{
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
public string $login,
public string $citation,
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
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
{
static private PDO $pdo = null;
static protected ?PDO $pdo = null;
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);
$result = $req->execute($params);
......@@ -22,16 +24,18 @@ class DBAdapter
return $req;
}
private function connect()
private static function connect(): void
{
if (!is_null(DBAdapter::$pdo)) {
return;
}
global $dbConfig;
try {
DBAdapter::pdo = new PDO(
self::$pdo = new PDO(
"mysql:host={$dbConfig["host"]}:{$dbConfig["port"]};dbname={$dbConfig["database"]}",
$dbConfig["user"],
$dbConfig["password"],
......@@ -53,30 +57,40 @@ class CitationModel extends DBAdapter
public function __construct()
{
DBAdapter::__construct("citation");
parent::__construct("citation");
}
public function find(array $params = null)
{
$sql = "SELECT * FROM `$this->table` " . isset($params) ?: "WHERE :key = :value";
$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";
$req = $this->execute($sql, $params);
return $req->fetch();
$result = $req->fetch();
return Citation::fromArray($result);
}
public function findByID(int $id)
{
$sql = "SELECT * FROM `$this->table` WHERE author_id = :id";
$req = $this->execute($sql, ["id" => $id]);
return $req->fetch();
$result = $req->fetch();
return Citation::fromArray($result);
}
public function create(Citation $citation)
{
......@@ -96,7 +110,7 @@ class AuthorModel extends DBAdapter
public function __construct()
{
DBAdapter::__construct("author");
parent::__construct("author");
}
public function find(array $params)
......@@ -125,7 +139,7 @@ class AuthorModel extends DBAdapter
{
$sql = "INSERT INTO author(`name`,`last_name`,`birth_year`) VALUES (':name',':lastName',':birthYear')";
$params = ["name" => $author->name, "lastName" => $author->lastName, "birthYear" => $author->birthYear];
$req = $this->execute($sql, $params);
return $this->execute($sql, $params);
}
public function update()
{
......
<?php require("./utils/inputs.php") ?>
<?php
require("./utils/inputs.php");
include_once("./utils/db-functions.php");
?>
<!DOCTYPE html>
<html lang="en">
......@@ -28,29 +32,39 @@
</head>
<body>
<?php
$citationModel = new CitationModel();
$citation = Citation::toArray($citationModel->findByID(getValue($_GET["id"])));
?>
<h1>View Citation</h1>
<div class="citation">
<p>login:
<b>
<?php echo getValue($_POST["login"]) ?>
<?php echo $citation["login"] ?>
<?php // echo getValue($_POST["login"]) ?>
</b>
</p>
<p>
Citation:
<b>
<?php echo getValue($_POST["citation"]) ?>
<?php echo $citation["citation"] ?>
<?php //echo getValue($_POST["citation"]) ?>
</b>
</p>
<p> Auteur:
<b>
<?php echo getValue($_POST["auteur"]) ?>
<?php echo $citation["author"] ?>
<?php //echo getValue($_POST["auteur"]) ?>
</b>
</p>
<p>
Date:
<b>
<?php echo getValue($_POST["date"]) ?>
<?php echo $citation["date"] ?>
<?php //echo getValue($_POST["date"]) ?>
</b>
</p>
</div>
......
<?php
include_once("Entity/Citation.class.php");
include "utils/db-functions.php";
function displayCitationRow(array $citation): string
......@@ -9,8 +8,8 @@ function displayCitationRow(array $citation): string
<td>{$citation["login"]}</td>
<td>{$citation["author"]}</td>
<td>{$citation["date"]}</td>
<td>{$citation["creation_date"]}</td>
<td><a href=\"viewCitation.php?id={$citation["citation_id"]}\" target=\"_blank\" rel=\"noopener noreferrer\"></a></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;
}
......@@ -50,14 +49,9 @@ function displayCitationRow(array $citation): string
$citationModel = new CitationModel();
$citations = $citationModel->find();
print_r($citations);
// foreach ($citations as $citation) {
// if ( $citation instanceof Citation) {
// $data = ["login" => $citation->login, "author" => $citation->author]
// echo displayCitationRow($citation);
// }
// // $item = ["login" => $citation->];
// }
foreach ($citations as $citation) {
echo displayCitationRow(Citation::toArray($citation));
}
?>
</table>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment