Le MVC va servir à simplifier l'architecture sur chaque pages du site. Dans cet exemple, le fichier connection.php est automatiquement inclus dans toutes les pages du site.
<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>Document</title>
<link rel="stylesheet" type="text/css" href="vendor/twbs/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="vendor/twbs/bootstrap-icons/font/bootstrap-icons.css">
<link rel="stylesheet" type="text/css" href="css styles.css">
<?php include 'Data/connexion.php'; ?>
Fichier de config :
<?php
// L'utilisateur et le mot de passe
$user = 'postgres';
$password = 'password';
?>
Fichier de connexion à la base de donnée :
<?php
// Chaîne de connexion
$dsnPostgres = "pgsql:host=pgdb; port=5432; dbname=appdb;";
// L'utilisateur et le mot de passe
$user = 'postgres';
$password = 'password';
// Un objet PDO pour gérer l'accès à la base
$pdo = new PDO ($dsnPostgres, $user, $password);
?>
Ignorer les fichiers connexion.php et config.php car il contient les indentifiants de connexion
app/Data/connexion.php
app/Data/config.php
<!DOCTYPE html>
<html lang="en">
<head>
<?php
include 'includes/header.php'
?>
</head>
<body>
<?php
include 'includes/navigation.php'
?>
<div class="container">
<?php
// SET SEARCH_PATH
$pdo->exec("SET SEARCH_PATH TO immo");
// Une phrase SQL
$sql = "SELECT * FROM proprietaires
ORDER BY nomproprietaire ASC;";
// Créer une requête
$requete = $pdo->prepare($sql);
$requete->execute();
// Récupérer les données de la requête
$donnees = $requete->fetchAll();
$total = count($donnees);
?>
<h2 class="mt-3">Liste des propriétaires <span class="bg-info text-white btn-lg"><i class="bi bi-person-circle"></i> <?php echo $total; ?></span></h2>
<table class="table table-striped">
<thead class="text-center">
<tr>
<th>Nom</th>
<th>Prénom</th>
<th>Titre</th>
<th>Mobile</th>
<th>Téléphone perso</th>
</tr>
</thead>
<tbody class="text-center">
<?php foreach($donnees as $ligne) : ?>
<tr>
<td>
<a href="proprietaire-detail.php?id=<?= $ligne['numeroproprietaire'] ?>">
<?= $ligne['nomproprietaire'] ?></a></td>
<td><?= $ligne['prenomproprietaire'] ?></td>
<td><?= $ligne['titre'] ?></td>
<td><?= $ligne['telephonemobile'] ?></td>
<td><?= $ligne['telephonepersonnel'] ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
<?php
include 'includes/footer.php'
?>
</body>
</html>
Résultat :
<!DOCTYPE html>
<html lang="en">
<head>
<?php
include 'includes/header.php'
?>
</head>
<body>
<?php
include 'includes/navigation.php'
?>
<div class="container">
<?php
$id = $_GET['id'];
// SET SEARCH_PATH
$pdo->exec("SET SEARCH_PATH TO immo");
// Une phrase SQL
$sql = "SELECT nomproprietaire, prenomproprietaire, telephonepersonnel, telephonemobile, email
FROM proprietaires
WHERE numeroproprietaire = $id;";
// Créer une requête
$requete = $pdo->prepare($sql);
$requete->execute();
// Récupérer les données de la requête
$donnees = $requete->fetch();
?>
<div class="row">
<div class="col-lg-4 mt-3">
<h2 class="mt-3"><i class="bi bi-person-circle"></i> Propriétaire</h2>
<div class="bg-info text-white btn-lg mt-3" style="width: 100%"><i class="bi bi-person-circle"></i> <?= $donnees['nomproprietaire'] ?> <?= $donnees['prenomproprietaire'] ?></div>
<table class="table mt-2">
<tbody>
<tr>
<td>Nom </td>
<td><strong><?= $donnees['nomproprietaire'] ?></strong></td>
</tr>
<tr>
<td>Prenom </td>
<td><strong><?= $donnees['prenomproprietaire'] ?></strong></td>
</tr>
<tr>
<td>Téléphone personnel </td>
<td><?= $donnees['telephonepersonnel'] ?></td>
</tr>
<tr>
<td>Téléphone mobile </td>
<td><?= $donnees['telephonemobile'] ?></td>
</tr>
<tr>
<td>Email </td>
<td><?= $donnees['email'] ?></td>
</tr>
</tbody>
</table>
</div>
<?php
$id = $_GET['id'];
// SET SEARCH_PATH
$pdo->exec("SET SEARCH_PATH TO immo");
// Une phrase SQL
$sql = "SELECT adresse1, codepostal, nomville, intituletransaction, intitulebien, biens.pieces, biens.montant
FROM biens
INNER JOIN villes ON biens.codeville = villes.codeville
INNER JOIN typestransactions ON biens.codetransaction = typestransactions.codetransaction
INNER JOIN typesbiens ON biens.codebien = typesbiens.codebien
WHERE numeroproprietaire = $id
ORDER BY montant DESC;";
// Créer une requête
$requete = $pdo->prepare($sql);
$requete->execute();
// Récupérer les données de la requête
$donnees = $requete->fetchAll();
$total = count($donnees);
?>
<div class="col-lg-8 mt-3">
<h2 class="mt-3">Liste des biens <span class="bg-info text-white btn-lg"><i class="bi bi-person-circle"></i> <?php echo $total; ?></span></h2>
<table class="table table-striped">
<thead class="text-center">
<tr>
<th>Adresse</th>
<th>Code postal</th>
<th>Villes</th>
<th>Transaction</th>
<th>Type de bien</th>
<th>Pièces</th>
<th>Montant</th>
</tr>
</thead>
<tbody class="text-center">
<?php foreach($donnees as $ligne) : ?>
<tr>
<td><?= $ligne['adresse1'] ?></td>
<td><?= $ligne['codepostal'] ?></td>
<td><?= $ligne['nomville'] ?></td>
<td><?= $ligne['intituletransaction'] ?></td>
<td><?= $ligne['intitulebien'] ?></td>
<?php if ($ligne['pieces'] >= 3) : ?>
<td><span class="badge bg-success text-white"><?= $ligne['pieces'] ?></span></td>
<?php else : ?>
<td><span class="badge bg-secondary text-white"><?= $ligne['pieces'] ?></span></td>
<?php endif ?>
<?php if ($ligne['montant'] > 300000) : ?>
<td><strong><?= $ligne['montant'] ?></strong></td>
<?php else : ?>
<td><?= $ligne['montant'] ?></td>
<?php endif ?>
</tr>
<?php endforeach ?>
</tbody>
</table>
<h6 class="mt-4 text-center">Copyright 2022 -Agence Immobilière Morbihannaise</h6>
</div>
</div>
</div>
<?php
include 'includes/footer.php'
?>
</body>
</html>
Résultat :