Code PHP pour un Mécanicien/Mécanicienne de Bateaux

Voici un exemple de code PHP pour gérer les tâches courantes d’un mécanicien/mécanicienne de bateaux, telles que l’enregistrement des réparations, la gestion des pièces de rechange et la planification des entretiens.

1. Structure de la Base de Données

Assurez-vous d’avoir une base de données MySQL avec les tables suivantes :

CREATE DATABASE marine_maintenance;

USE marine_maintenance;

CREATE TABLE boats (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    type VARCHAR(50) NOT NULL,
    year INT NOT NULL
);

CREATE TABLE repairs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    boat_id INT NOT NULL,
    description TEXT NOT NULL,
    repair_date DATE NOT NULL,
    cost DECIMAL(10, 2) NOT NULL,
    FOREIGN KEY (boat_id) REFERENCES boats(id)
);

CREATE TABLE parts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    quantity INT NOT NULL,
    price DECIMAL(10, 2) NOT NULL
);

CREATE TABLE maintenance_schedule (
    id INT AUTO_INCREMENT PRIMARY KEY,
    boat_id INT NOT NULL,
    maintenance_date DATE NOT NULL,
    details TEXT NOT NULL,
    FOREIGN KEY (boat_id) REFERENCES boats(id)
);

2. Connexion à la Base de Données

Créez un fichier db.php pour gérer la connexion à la base de données.

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "marine_maintenance";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
?>

3. Fonctions pour Gérer les Bateaux, Réparations, Pièces et Entretien

Créez un fichier functions.php pour contenir les fonctions nécessaires à la gestion des bateaux, réparations, pièces et entretien.

<?php
include 'db.php';

// Ajouter un bateau
function addBoat($name, $type, $year) {
    global $conn;
    $sql = "INSERT INTO boats (name, type, year) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$name, $type, $year]);
}

// Ajouter une réparation
function addRepair($boat_id, $description, $repair_date, $cost) {
    global $conn;
    $sql = "INSERT INTO repairs (boat_id, description, repair_date, cost) VALUES (?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$boat_id, $description, $repair_date, $cost]);
}

// Ajouter une pièce
function addPart($name, $quantity, $price) {
    global $conn;
    $sql = "INSERT INTO parts (name, quantity, price) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$name, $quantity, $price]);
}

// Planifier un entretien
function scheduleMaintenance($boat_id, $maintenance_date, $details) {
    global $conn;
    $sql = "INSERT INTO maintenance_schedule (boat_id, maintenance_date, details) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$boat_id, $maintenance_date, $details]);
}

// Récupérer tous les bateaux
function getBoats() {
    global $conn;
    $sql = "SELECT * FROM boats";
    $stmt = $conn->query($sql);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

// Récupérer les réparations pour un bateau spécifique
function getRepairs($boat_id) {
    global $conn;
    $sql = "SELECT * FROM repairs WHERE boat_id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$boat_id]);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

// Récupérer les pièces
function getParts() {
    global $conn;
    $sql = "SELECT * FROM parts";
    $stmt = $conn->query($sql);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

// Récupérer le calendrier d'entretien
function getMaintenanceSchedule($boat_id) {
    global $conn;
    $sql = "SELECT * FROM maintenance_schedule WHERE boat_id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->execute([$boat_id]);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
?>

4. Interface Utilisateur

Créez un fichier index.php pour l’interface utilisateur.

<?php
include 'functions.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['addBoat'])) {
        addBoat($_POST['name'], $_POST['type'], $_POST['year']);
    } elseif (isset($_POST['addRepair'])) {
        addRepair($_POST['boat_id'], $_POST['description'], $_POST['repair_date'], $_POST['cost']);
    } elseif (isset($_POST['addPart'])) {
        addPart($_POST['name'], $_POST['quantity'], $_POST['price']);
    } elseif (isset($_POST['scheduleMaintenance'])) {
        scheduleMaintenance($_POST['boat_id'], $_POST['maintenance_date'], $_POST['details']);
    }
}

$boats = getBoats();
$parts = getParts();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Marine Maintenance System</title>
</head>
<body>
    <h1>Gestion de la Maintenance des Bateaux</h1>

    <h2>Ajouter un Bateau</h2>
    <form method="post">
        <input type="text" name="name" placeholder="Nom du bateau" required>
        <input type="text" name="type" placeholder="Type de bateau" required>
        <input type="number" name="year" placeholder="Année" required>
        <button type="submit" name="addBoat">Ajouter</button>
    </form>

    <h2>Ajouter une Réparation</h2>
    <form method="post">
        <select name="boat_id" required>
            <option value="">Sélectionner un bateau</option>
            <?php foreach ($boats as $boat): ?>
                <option value="<?= $boat['id'] ?>"><?= $boat['name'] ?></option>
            <?php endforeach; ?>
        </select>
        <textarea name="description" placeholder="Description de la réparation" required></textarea>
        <input type="date" name="repair_date" required>
        <input type="number" step="0.01" name="cost" placeholder="Coût" required>
        <button type="submit" name="addRepair">Ajouter</button>
    </form>

    <h2>Ajouter une Pièce</h2>
    <form method="post">
        <input type="text" name="name" placeholder="Nom de la pièce" required>
        <input type="number" name="quantity" placeholder="Quantité" required>
        <input type="number" step="0.01" name="price" placeholder="Prix" required>
        <button type="submit" name="addPart">Ajouter</button>
    </form>

    <h2>Planifier un Entretien</h2>
    <form method="post">
        <select name="boat_id" required>
            <option value="">Sélectionner un bateau</option>
            <?php foreach ($boats as $boat): ?>
                <option value="<?= $boat['id'] ?>"><?= $boat['name'] ?></option>
            <?php endforeach; ?>
        </select>
        <input type="date" name="maintenance_date" required>
        <textarea name="details" placeholder="Détails de l'entretien" required></textarea>
        <button type="submit" name="scheduleMaintenance">Planifier</button>
    </form>

    <h2>Liste des Pièces</h2>
    <ul>
        <?php foreach ($parts as $part): ?>
            <li><?= $part['name'] ?> - Quantité : <?= $part['quantity'] ?> - Prix : <?= $part['price'] ?></li>
        <?php endforeach; ?>
    </ul>

    <h2>Liste des Bateaux</h2>
    <ul>
        <?php foreach ($boats as $boat): ?>
            <li><?= $boat['name'] ?> (<?= $boat['type'] ?>, <?= $boat['year'] ?>)</li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

Conclusion

Ce code PHP fournit une interface simple pour gérer les bateaux, les réparations, les pièces de rechange et les entretiens planifiés. Vous pouvez l’adapter et l’améliorer selon les besoins spécifiques des mécaniciens de bateaux. Assurez-vous de tester et sécuriser le code avant de le déployer dans un environnement de production.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut