【问题标题】:Instead of displaying MySQL Data from tables into HTML tables, display it on editable text boxes不是将 MySQL 数据从表中显示到 HTML 表中,而是将其显示在可编辑的文本框中
【发布时间】:2019-04-04 15:49:07
【问题描述】:

我已经设法将数据从我的数据库表导入到 HTML 表中,但是,我想将它们放在锁定的文本框中,当按下“编辑”按钮时,相应的文本框将被解锁,可以在 MySQL 表中更改和更新数据吗?我该怎么做?

我已经研究了将它们放入文本框中的类似方法,但是我没有找到任何明确的答案。

$result = mysqli_query($con,"SELECT * FROM dados");

echo "<table border='2'>
<tr>
<th>nome</th>
<th>Idade</th>
<th>Email</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['nome'] . "</td>";
echo "<td>" . $row['idade'] . "</td>";
echo "<td>" . $row['email'] . "</td>";

echo "</tr>";
}
echo "</table>";

这就是表格在我的 PHP 文件中的显示方式,一切正常,但是,我希望每个字段都是一个锁定的文本框,按下“编辑”按钮即可对其进行编辑。

【问题讨论】:

  • 您想要每列都有按钮吗?还是只在每一行?编辑后如何保存新数据?
  • 因为我不确定你的要求(这里是一个 jQuery 的例子):jsfiddle.net/michaelyuen/shdz4ak8

标签: javascript php html css contenteditable


【解决方案1】:

您可以创建带有拖曳图标的新列,一个用于删除,另一个用于编辑,当单击该按钮时,一个 javascript 函数将启动并为其提供该行的 ID,它将使用 ajax 查询并获取该行的数据和打开一个模态进行编辑,您可以使用ajax来保存数据。

让我们一步一步来:

1-添加新列

<?php
$result = mysqli_query($con, "SELECT * FROM dados");
echo "<table border='2'>
<tr>
<th>nome</th>
<th>Idade</th>
<th>Email</th>
<th>Edit</th>
</tr>";
while ($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['nome'] . "</td>";
echo "<td>" . $row['idade'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "<td><i class=\"fas fa-clock\" data-toggle="modal" data- 
target="#exampleModal" onclick=\"getDataForEdit(" . $row['id'] . 
")\"></i></td>";
echo "</tr>";
}
?>

2- 创建一个模式来插入我们将从 getDataForEdit 函数获得的数据

<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria- 
labelledby="exampleModalLabel"
 aria-hidden="true">
<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
            <button type="button" class="close" data-dismiss="modal" aria- 
label="Close">
                <span aria-hidden="true">&times;</span>
            </button>
        </div>
        <div class="modal-body">
            <div class="form-group">
                <form action="" method="post">
                    @csrf
                    <div class="md-form mb-4">
                        <label data-error="wrong" data-success="right" 
for="defaultForm-pass">title
                        </label>
                        <div class="row">
                            <div class="col-8">
                                <input type="text" name="name" id="defaultForm- 
pass"
                                       class="form-control validate">
                            </div>
                            <div class="col-2">
                                <input type="text" name="tag" id="defaultForm- 
pass-email"
                                       class="form-control validate">
                            </div>
                            <div class="col-2">
                                <button type="submit" class="btn btn- 
primary">submit</button>
                            </div>
                        </div>
                    </div>
                </form>
            </div>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data- 
dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">Save 
changes</button>
        </div>
    </div>
</div>
</div>

3- 所以现在我们应该先编写 javascript 代码,我们 ajax 并获取我们想要编辑的行的数据,然后我们将其插入到模态中

<script>
function getDataForEdit(id) {
    var response = null;
    return $.ajax({
        type: 'GET',
        url: 'myanswerpage.php?id=' + id,
        success: function (data) {
            insertData(data.name,data.email);
        },
        error: function () {
            alert('getting data was not successful');

        }
    });
}
</script>

<script>
function insertData(name,email) {
    document.getElementById('defaultForm-pass').value = name;
    document.getElementById('defaultForm-pass-email').value = email;
}
</script>

因此,当您单击编辑图标时,将打开一个模式,其中包含您要编辑的行的信息。

【讨论】:

    【解决方案2】:

    您可以使用表单而不是表格并获取所有数据并将输入标记中的所有数据保持为禁用状态。

    通过使用jquery点击事件,你可以让它可编辑,然后写你想要的任何东西并保存它。该保存数据应通过包含 php 并触发 mysql 更新查询在数据库中进行编辑。

    【讨论】:

    • 这个答案缺少句子结构和标点符号,阅读起来相当困难。见How to Answer
    猜你喜欢
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    相关资源
    最近更新 更多