这是我的整个文件与功能
function getSite($fallback)
{
if (isset($_GET['site'])) {
if (file_exists('./site/' . $_GET['site'] . '.php')) {
include_once('./site/' . $_GET['site'] . '.php');
}
} else {
include_once('./site/' . $fallback . '.php');
}
}
function makeStatement($query, $params)
{
global $conn;
try {
$stmt = $conn->prepare($query);
$stmt->execute($params);
return $stmt;
} catch (PDOException $e) {
echo "" . $e->getMessage();
}
}
function makeTable($query, $params = array())
{
$stmt = makeStatement($query, $params);
echo "<table class='table'>";
echo "<tr>";
echo "<th></th>";
for ($i = 0; $i < $stmt->columnCount(); $i++) {
$column = $stmt->getColumnMeta($i);
if ($column["name"] != "projekt_id") {
echo "<th>" . $column["name"] . "</th>";
}
}
echo "<th></th><th></th></tr>";
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
echo "<tr><form method='post'>";
echo '<td><input hidden name="projekt_id" class="form-control-plaintext" value="' . $row['projekt_id'] . '"></input></td>';
echo '<td><input class="form-control" name="projekt_name" value="' . $row['projekt_name'] . '"></input></td>';
echo '<td><input class="form-control" name="projekt_beschreibung" value="' . $row['projekt_beschreibung'] . '"></input></td>';
echo '<td><input class="form-control" type="date" name="projekt_start" value="' . $row['projekt_start'] . '"></input></td>';
echo '<td><input class="form-control" type="date" name="projekt_ende" value="' . $row['projekt_ende'] . '"></input></td>';
echo '<td><input class="form-control" value="' . $row['Teamleiter'] . '"></input></td>';
echo '<td></td>';
echo "<td><button type='submit' name='editProject' class='btn btn-primary'><i class='bi bi-pen-fill'></i></button></td>";
echo "<td><button type='submit' name='deleteProject' class='btn btn-danger'><i class='bi bi-trash3-fill'></i></button></td>";
echo "<td><button type='submit' name='showProject' class='btn btn-secondary' data-bs-dismiss='alert'><i class='bi bi-arrow-right'></i></button></td>";
echo "</form></tr>";
}
echo "<tr><form method='post'>";
echo '<td></td>';
echo '<td><input name="projekt_name" class="form-control" placeholder="Projektname" required></input></td>';
echo '<td><input name="projekt_beschreibung" class="form-control" placeholder="Projektbeschreibung" required></input></td>';
echo '<td><input type="date" name="projekt_start" class="form-control" placeholder="Projektstart" required></input></td>';
echo '<td><input type="date" name="projekt_ende" class="form-control" placeholder="Projektende"></input></td>';
echo '<td>';
$queryMitarbeiter = "select * from mitarbeiter;";
$stmtMitarbeiter = makeStatement($queryMitarbeiter, array());
$rowsMitarbeiter = $stmtMitarbeiter->fetchAll(PDO::FETCH_ASSOC);
echo '<select id="mitarbeiter_id" name="mitarbeiter_id" class="form-control" required>';
echo '<option value="">Teamleiter auswählen...</option>';
foreach ($rowsMitarbeiter as $row) {
echo '<option value="' . $row['mitarbeiter_id'] . '">' . $row['mitarbeiter_vname'] . ' ' . $row['mitarbeiter_nname'] . '</option>';
}
echo '</select>';
echo '</td>';
echo '<td></td>';
echo "<td><button type='submit' name='addProject' class='btn btn-success'><i class='bi bi-plus'></i></button></td>";
echo "</form></tr>";
echo "</table>";
echo '<div id="selectedValue"></div>'; // Div zur Anzeige des ausgewählten Wertes
echo '
<script>
document.addEventListener("DOMContentLoaded", function() {
var mitarbeiterSelect = document.getElementById("mitarbeiter_id");
var selectedValueDiv = document.getElementById("selectedValue");
mitarbeiterSelect.addEventListener("change", function() {
var selectedOption = this.options[this.selectedIndex];
selectedValueDiv.innerHTML = "Selected Value: " + selectedOption.value + " - " + selectedOption.text;
});
});
</script>
';
}
function getProjectTable($filter)
{
$filter = $filter . '%';
$query = "SELECT projekt_id, projekt_name, projekt_beschreibung, projekt_start, projekt_ende, concat(mitarbeiter_vname,' ', mitarbeiter_nname) as Teamleiter from projekt p
join mitarbeiter m on m.mitarbeiter_pNr = p.mitarbeiter_pNr
WHERE projekt_name LIKE ?;";
makeTable($query, array($filter));
}
function createProject($projekt_name, $projekt_beschreibung, $projekt_start, $teamleiter, $projekt_ende = null)
{
$query = "INSERT INTO projekt(projekt_name, projekt_beschreibung, projekt_start, projekt_ende, mitarbeiter_pNr)
VALUES (?, ?, ?, ?, ?);";
$params = array($projekt_name, $projekt_beschreibung, $projekt_start, $projekt_ende, 1);
makeStatement($query, $params);
}
function deleteProject($id)
{
$query1 = 'DELETE FROM mitarbeiter_projekt WHERE projekt_id = ?;';
makeStatement($query1, array($id));
$query2 = 'DELETE FROM projekt WHERE projekt_id = ?';
makeStatement($query2, array($id));
}
function editProject($id, $projekt_name, $projekt_beschreibung, $projekt_start, $projekt_ende)
{
$query = "UPDATE projekt SET projekt_name = ?, projekt_beschreibung = ?, projekt_start = ?, projekt_ende = ? WHERE projekt_id = ?";
$params = array($projekt_name, $projekt_beschreibung, $projekt_start, $projekt_ende, $id);
makeStatement($query, $params);
}
?>
这是项目概述所在的文件
<h2>Übersicht der Projekte der Stadt</h2>
<?php
if (isset($_POST["deleteProject"]) && isset($_POST["projekt_id"])) {
deleteProject($_POST["projekt_id"]);
}
if (isset($_POST["addProject"]) && isset($_POST["projekt_name"]) && isset($_POST["projekt_beschreibung"]) && isset($_POST["projekt_start"])) {
if (isset($_POST["projekt_ende"])) {
createProject($_POST["projekt_name"], $_POST["projekt_beschreibung"], $_POST["projekt_start"], $_POST["mitarbeiter_id"], $_POST["projekt_ende"]);
} else {
createProject($_POST["projekt_name"], $_POST["projekt_beschreibung"], $_POST["projekt_start"], $_POST["mitarbeiter_id"]);
}
}
if (isset($_POST["showProject"]) && isset($_POST["projekt_id"])) {
$query = "select * from projekt where projekt_id = " . $_POST["projekt_id"];
$stmt = makeStatement($query, array());
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (isset($row['projekt_start']) && isset($row['projekt_ende'])) {
$projekt_start = $row['projekt_start'];
$projekt_ende = $row['projekt_ende'];
// Datumsdifferenz berechnen
$startDate = new DateTime($projekt_start);
$endDate = new DateTime($projekt_ende);
$interval = $startDate->diff($endDate);
echo '<div class="alert alert-primary alert-dismissible fade show" role="alert">
<strong>' . $row["projekt_name"] . '</strong> Das Projekt dauert ' . $interval->days . ' Tage.<br>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>';
} else {
echo "Hierfür kann kein Zeitraum angezeigt werden.<br>";
}
}
if (isset($_POST["editProject"]) && isset($_POST["projekt_id"])) {
editProject($_POST["projekt_id"], $_POST["projekt_name"], $_POST["projekt_beschreibung"], $_POST["projekt_start"], $_POST["projekt_ende"]);
}
?>
<div class="bg-body-tertiary p-5 rounded">
<h5>Filter</h5>
<form method="post" class="d-flex mb-3">
<input class="form-control me-2" name="filterValue" type="search" placeholder="Projekt beginnend mit ...">
<button class="btn btn-outline-success" type="submit"><i class="bi bi-funnel-fill"></i></button>
</form>
<?php
$filter = '';
if (isset($_POST["filterValue"])) {
$filter = $_POST["filterValue"];
}
getProjectTable($filter);
?>
</div>
这个例子是一个练习,我想从一个城市管理项目。 目前,可以在为 mitarbeiter(团队负责人)提供固定 ID 时添加项目。 如果有人能在这种情况下帮助我,那就太好了。
注意:我将用模板替换原始 echo 语句,以提高可读性和安全性。