mirror of
https://github.com/BreizhHardware/PHP.git
synced 2026-01-18 16:27:32 +01:00
TP 8
This commit is contained in:
10156
.idea/dataSources/ea349d8e-8a78-4229-a175-518b1e682b00.xml
generated
10156
.idea/dataSources/ea349d8e-8a78-4229-a175-518b1e682b00.xml
generated
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||
@@ -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>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user