This commit is contained in:
2023-11-14 16:32:22 +01:00
parent 6a0a630a42
commit f5596e9133
5 changed files with 5283 additions and 5085 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -3,10 +3,49 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<title>TP8-PHP-Marquet</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="citations.php">Infomations</a>
</li>
<li class="nav-item">
<a class="nav-link" href="recherche.php">Recherche</a>
</li>
<li class="nav-item">
<a class="nav-link" href="modification.php">Modification</a>
</li>
</ul>
</div>
</div>
</nav>
<h1> La citation du jour </h1>
<hr>
<?php
require_once('database.php');
// Enable all warnings and errors.
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Database connection.
$db = dbConnect();
?>
<p> Il y'a
<?php
// Number of Quotes
$nbQuotes = getNumberofQuotes($db);
echo "<b> $nbQuotes </b>";
?>
citations répértoriées </p>
<p> Et voici l'une d'entre elle générée aléatoirement: </p>
<?php
randomQuote($db);
?>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -4,7 +4,6 @@
$dsn = 'pgsql:dbname=' . DB_NAME . ';host=' . DB_SERVER . ';port=' . DB_PORT;
try {
$conn = new PDO($dsn, DB_USER, DB_PASSWORD);
echo "Connected successfully\n";
return $conn;
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
@@ -33,4 +32,81 @@
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
function getNumberofQuotes(PDO $db)
{
try
{
$statement = $db->query('SELECT count(id) FROM citation');
$result = $statement->fetch(PDO::FETCH_ASSOC);
$nbQuotes = $result['count'];
}
catch (PDOException $exception)
{
error_log('Request error: '.$exception->getMessage());
return false;
}
return $nbQuotes;
}
function randomQuote($db){
$statement = $db->query('SELECT phrase, auteurid, siecleid FROM citation ORDER BY RANDOM() LIMIT 1');
$result = $statement->fetch(PDO::FETCH_ASSOC);
$phrase = $result['phrase'];
$auteurid = $result['auteurid'];
$siecleid = $result['siecleid'];
$statement = $db->query("SELECT nom, prenom FROM auteur WHERE id = $auteurid");
$result = $statement->fetch(PDO::FETCH_ASSOC);
$nom = $result['nom'];
$prenom = $result['prenom'];
$statement = $db->query("SELECT numero FROM siecle WHERE id = $siecleid");
$result = $statement->fetch(PDO::FETCH_ASSOC);
$numero = $result['numero'];
echo "<p><strong> $phrase </strong></p>";
echo "<p> $prenom $nom ($numero<sup>e</sup> siècle)</p>";
}
function getAuthorAndSiecle(PDO $db, $author, $siecle){
// Requête préparée pour récupérer l'id de l'auteur
$statement = $db->prepare("SELECT id FROM auteur WHERE nom = :author");
$statement->bindParam(':author', $author);
$statement->execute();
$result = $statement->fetch(PDO::FETCH_ASSOC);
// Vérifier si la requête a retourné des résultats
if ($result !== false) {
$auteurid = $result['id'];
// Requête préparée pour récupérer l'id du siècle
$statement = $db->prepare("SELECT id FROM siecle WHERE numero = :siecle");
$statement->bindParam(':siecle', $siecle);
$statement->execute();
$result = $statement->fetch(PDO::FETCH_ASSOC);
// Vérifier si la requête a retourné des résultats
if ($result !== false) {
$siecleid = $result['id'];
// Requête préparée pour récupérer la phrase
$statement = $db->prepare("SELECT phrase FROM citation WHERE auteurid = :authorid AND siecleid = :siecleid");
$statement->bindParam(':authorid', $auteurid);
$statement->bindParam(':siecleid', $siecleid);
$statement->execute();
$result = $statement->fetch(PDO::FETCH_ASSOC);
// Vérifier si la requête a retourné des résultats
if ($result !== false) {
$phrase = $result['phrase'];
echo "<p><strong> $phrase </strong></p>";
echo "<p> $author ($siecle<sup>e</sup> siècle)</p>";
} else {
echo "<p>Aucune phrase trouvée pour cet auteur et ce siècle.</p>";
}
} else {
echo "<p>Aucun siècle trouvé pour le numéro spécifié.</p>";
}
} else {
echo "<p>Aucun auteur trouvé pour le nom spécifié.</p>";
}
}
?>

View File

@@ -3,10 +3,27 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<title>TP8-PHP-Marquet</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" aria-current="page" href="citations.php">Infomations</a>
</li>
<li class="nav-item">
<a class="nav-link" href="recherche.php">Recherche</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="modification.php">Modification</a>
</li>
</ul>
</div>
</div>
</nav>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -1,12 +1,78 @@
<?php
require_once('database.php');
// Enable all warnings and errors.
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Database connection.
$db = dbConnect();
?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<title>TP8-PHP-Marquet</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<body class="m-3">
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" aria-current="page" href="citations.php">Infomations</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="recherche.php">Recherche</a>
</li>
<li class="nav-item">
<a class="nav-link" href="modification.php">Modification</a>
</li>
</ul>
</div>
</div>
</nav>
<form action="recherche.php" method="post">
<div>
<label for="auteur" class="form-label">Auteur</label>
<select id="auteur" name="auteur" class="form-select">
<option selected>Choisir un auteur</option>
<?php
$authors = dbGetAuthorsNames($db);
foreach ($authors as $author) {
echo "<option>" . $author['nom'] . " " . $author['prenom'] . "</option>";
}
?>
</select>
<label for="siecle" class="form-label">Siècle</label>
<select id="siecle" name="siecle" class="form-select">
<option selected>Choisir un siècle</option>
<?php
$centuries = dbGetCenturies($db);
foreach ($centuries as $century) {
echo "<option>" . $century['numero'] . "</option>";
}
?>
</select>
<br>
<button type="submit" class="btn btn-primary">Rechercher</button>
</div>
</form>
<?php
if(isset($_POST['auteur']) && isset($_POST['siecle'])){
$author = $_POST['auteur'];
$century = $_POST['siecle'];
$quotes = getAuthorAndSiecle($db, $author, $century);
if($quotes != null){
foreach ($quotes as $quote) {
echo "<p>" . $quote['phrase'] . "</p>";
}
}
else{
echo "<p>Aucune citation trouvée</p>";
}
}
?>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>