librarySoftware/db/functions.php
2025-09-25 17:35:18 +02:00

190 lines
No EOL
6.8 KiB
PHP

<?php
include "bootstrap.php";
/////////GET BOOKS/////////
function getBooks($pdo){
$stmt = $pdo->query("SELECT bookID, title, author FROM books ORDER BY title ASC");
$books = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $books;
}
/////////GET BORROWERS/////////
function getBorrowers($pdo){
$stmt = $pdo->query("SELECT * FROM borrowers ORDER BY lastName ASC");
$borrowers = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $borrowers;
}
/////////GET AVAILABLE COPIES OF BOOK/////////
function getAvailableCopiesOfBook($pdo, $bookID){
$stmt = $pdo->query("SELECT * FROM copies WHERE bookID = $bookID AND isBorrowed = 0 ORDER BY copyID ASC");
$copies = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $copies;
}
/////////GET BORROWED COPIES OF BORROWER/////////
function getBorrowedCopiesOfBorrower($pdo, $borrowerID){
$stmt = $pdo->query("SELECT
loans.loanID,
loans.copyID,
copies.bookCondition as bookCondition,
books.title as bookTitle,
books.author as bookAuthor
FROM loans
INNER JOIN copies ON loans.copyID = copies.copyID
INNER JOIN books ON copies.bookID = books.bookID
WHERE borrowerID = $borrowerID AND returnedDate IS NULL
ORDER BY copyID ASC");
$copies = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $copies;
}
/////////GET ACTIVE LOANS/////////
function getActiveLoans($pdo){
$stmt = $pdo->query("SELECT
loans.*,
books.title as bookTitle,
books.author as bookAuthor,
borrowers.firstName as firstName,
borrowers.lastName as lastName,
borrowers.role as borrowerRole
FROM loans
INNER JOIN copies ON loans.copyID = copies.copyID
INNER JOIN books ON copies.bookID = books.bookID
INNER JOIN borrowers on loans.borrowerID = borrowers.borrowerID
WHERE loans.returnedDate IS NULL
ORDER BY dueDate ASC");
$activeLoans = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $activeLoans;
}
/////////GET LATE LOANS/////////
function getLateLoans($pdo){
$currentDate = date("Y-m-d");
$sql = "SELECT
loans.*,
books.title as bookTitle,
books.author as bookAuthor,
borrowers.firstName as firstName,
borrowers.lastName as lastName,
borrowers.role as borrowerRole
FROM loans
INNER JOIN copies ON loans.copyID = copies.copyID
INNER JOIN books ON copies.bookID = books.bookID
INNER JOIN borrowers on loans.borrowerID = borrowers.borrowerID
WHERE loans.dueDate < ? AND loans.returnedDate IS NULL
ORDER BY dueDate ASC";
$stmt = $pdo->prepare($sql);
$stmt->execute([$currentDate]);
$lateLoans = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $lateLoans;
}
/////////ADD COPIES/////////
function addCopies($pdo, $bookID, $amount, $copyCondition){
for($i=0; $i<$amount; $i++){
$sql = "INSERT INTO copies (bookID, bookCondition) VALUES (:bookID, :bookCondition)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':bookID', $bookID);
$stmt->bindParam(':bookCondition', $copyCondition);
try {
$stmt->execute();
$successfullyAdded = true;
} catch (PDOException $e) {
echo "<p>Error: " . $e->getMessage() . "</p>";
}
}
if($successfullyAdded){
if($amount > 1)
{
echo $amount . " Copies added successfully!";
}else{
echo "Copy added successfully!";
}
}
}
/////////ADD BOOK/////////
function addBook($pdo, $title, $author, $area){
$sql = "INSERT INTO books (title, author, areaOfStudy) VALUES (:title, :author, :area)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':title', $title);
$stmt->bindParam(':author', $author);
$stmt->bindParam(':area', $area);
try {
$stmt->execute();
echo "<p>Book added successfully!</p>";
} catch (PDOException $e) {
echo "<p>Error: " . $e->getMessage() . "</p>";
}
}
/////////ADD BORROWER/////////
function addBorrower($pdo, $firstname, $lastname, $role){
$sql = "INSERT INTO borrowers (firstname, lastname, role) VALUES (:firstname, :lastname, :role)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":firstname", $firstname);
$stmt->bindParam(":lastname", $lastname);
$stmt->bindParam(":role", $role);
try{
$stmt->execute();
echo "<p>Borrowers added!</p>";
}catch(PDOException $e){
echo "<p>Error: " . $e->getMessage() . "</p>";
}
}
/////////ADD LOAN/////////
function addLoan($pdo, $copyID, $borrowerID, $borrowedDate, $dueDate){
$sql = "INSERT INTO loans (copyID, borrowerID, borrowedDate, dueDate) VALUES (:copyID, :borrowerID, :borrowedDate, :dueDate)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":copyID", $copyID);
$stmt->bindParam("borrowerID", $borrowerID);
$stmt->bindParam("borrowedDate", $borrowedDate);
$stmt->bindParam(":dueDate", $dueDate);
try{
$stmt->execute();
echo "<p>Loan added!</p>";
}catch(PDOException $e){
echo "<p>Error: " . $e->getMessage() . "</p>";
}
$sql = "UPDATE copies SET isBorrowed=? WHERE copyID=?";
$stmt = $pdo->prepare($sql);
$stmt->execute([1, $copyID]);
}
/////////REMOVE LOAN/////////
function removeLoan($pdo, $copyID, $loanID, $dateReturned){
$sql = "UPDATE loans SET returnedDate = ? WHERE copyID = ? AND loanID = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$dateReturned, $copyID, $loanID]);
$sql = "UPDATE copies SET isBorrowed=? WHERE copyID=?";
$stmt = $pdo->prepare($sql);
$stmt->execute([0, $copyID]);
}
/////////SELECT REQUEST/////////
function selectRequest($pdo, $selectRequest){
$stmt = $pdo -> query("SELECT " . $selectRequest);
$results = $stmt -> fetchAll(PDO::FETCH_ASSOC);
foreach($results as $result){
echo '<pre>'; print_r($result); echo '</pre>';
}
}
?>