建立编辑/更新数据库表单-添加列

时间:2018-11-21 13:11:09

标签: php html

我正在处理更新数据库记录表。从数据库表中获取数据,并将其填充到网页上的html表中。我现在被困在如何在表中添加另一列(第5列),该列将包含用于更新数据库脚本的'edit'href链接。

赞:

|Col1|Col2|Col3|Col4|Edit|
| -- | -- | -- | -- |href|

我知道这是一个非常基本的问题,但到目前为止我还无法解决。

如果有人可以帮助我进行工作,这将非常有帮助。

这是我的代码:

  <div id="update" class="col mb-4"> 

      <?php

        class TableRows extends RecursiveIteratorIterator {
            function __construct($it) {
                parent::__construct($it, self::LEAVES_ONLY);
            }

            function current() {
                return "<td style='width:150px;border:1px solid grey;'>" . parent::current(). "</td>";
            }

            function beginChildren() {
                echo "<tr>";
            }   

            function endChildren() {
                echo "</tr>" . "\n";
            }
        } 

        echo "<table class='table-bordered'>";
        echo "<thead class='table-dark'>";
        echo "<tr><th>Col1</th><th>Col2<th>Col3</th><th>xCol4</th></tr>";
        echo "</thead>";
        echo "<tbody>";

        try {
            $stmt = $conn->prepare("SELECT Col1, Col2, Col3, Col14 FROM table");
            $stmt->execute();

            // set the resulting array to associative
            $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
            foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {       
                echo $v;
            }
        }
        catch(PDOException $e) {
            echo "Error: " . $e->getMessage();
        }

        // $conn = null;

        echo "</tbody>";
        echo "</table>";

        ?>

    </div>

1 个答案:

答案 0 :(得分:0)

您的代码过于复杂,这使得修改变得很困难。

似乎您只想使用数据库中的数据创建一个简单的表。您基本上可以这样做:

<div id="update" class="col mb-4"> 

    <table class='table-bordered'>
        <thead class='table-dark'>
            <tr>
                <th>Col1</th>
                <th>Col2</th>
                <th>Col3</th>
                <th>Col4</th>
                <th>Edit</th>
            </tr>
        </thead>
        <tbody>

        <?php
        try {
            $stmt = $conn->prepare("SELECT Col1, Col2, Col3, Col14 FROM table");
            $stmt->execute();

            $stmt->setFetchMode(PDO::FETCH_ASSOC);
            foreach($stmt->fetchAll() as $row) {
            ?>

                <tr>
                    <td style='width:150px;border:1px solid grey;'><?= $row['Col1'] ?></td>
                    <td style='width:150px;border:1px solid grey;'><?= $row['Col2'] ?></td>
                    <td style='width:150px;border:1px solid grey;'><?= $row['Col3'] ?></td>
                    <td style='width:150px;border:1px solid grey;'><?= $row['Col4'] ?></td>
                    <td style='width:150px;border:1px solid grey;'><a href="some-path-somewhere/">Edit</a></td>
                </tr>

            <?php
            }
        }
        catch(PDOException $e) {
            echo "Error: " . $e->getMessage();
        }
        ?>

        </tbody>
    </table>

</div>

我还建议将数据库查询从视图移到类或其他内容中。然后,视图将更加清晰(无需尝试/捕获等)。然后,视图中的所有PHP都将类似于:

<?php foreach ($myClass->getTheData() as $row) : ?>

    <tr>
        <td style='width:150px;border:1px solid grey;'><?= $row['Col1'] ?></td>
        <td style='width:150px;border:1px solid grey;'><?= $row['Col2'] ?></td>
        <td style='width:150px;border:1px solid grey;'><?= $row['Col3'] ?></td>
        <td style='width:150px;border:1px solid grey;'><?= $row['Col4'] ?></td>
        <td style='width:150px;border:1px solid grey;'><a href="some-path-somewhere/">Edit</a></td>
    </tr>

<?php endforeach ?>

现在,更改HTML会容易得多。