有谁知道为什么我无法选择 Teamleiter 数据(从下拉列表中)来完全添加项目

问题描述 投票:0回答:1

这是我的整个文件与功能


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 时添加项目。 如果有人能在这种情况下帮助我,那就太好了。

php
1个回答
0
投票

注意:我将用模板替换原始 echo 语句,以提高可读性和安全性。

© www.soinside.com 2019 - 2024. All rights reserved.