通过表单更新

时间:2016-09-17 17:20:37

标签: php html mysql forms post

我有一个sql数据库表,我正在使用HTML表在网页上显示。该表的最后一列是一个“编辑”选项,我希望通过该选项提示用户更新数据。

为此,我想传递用户选择编辑的行ID的数据值。

我的显示表包含以下代码

<?php
    while($row = mysql_fetch_array($fetched_value, MYSQL_ASSOC))
        {
            echo
                "<tr>
                    <td>{$row['name']}</td>
                    <td>{$row['email_id']}</td>
                    <td>{$row['mobile_number']}</td>;
                    echo '<td><button id="edit_button" name="edit_button" type="submit" style="border:0; background:transparent;"><i class="fa fa-pencil-square-o" aria-hidden="true" style="color:#006600;"></i></button></td>';
                echo "</tr>\n";
        }
?>

其中,

<?php $fetched_value = mysql_query( $fetch_query, $conn ); ?>

请注意,在每一行的末尾,我都有一个编辑按钮,我想用它进行进一步处理。

我想调用(通过POST方法)本地php文件,比如说update-data.php,其中会有代码接受POST ed数据,显示表格以及预填充表单空间。

但是我无法使用POST方法将数据传递给此更新PHP文件。

您能否建议一种方法来传递点击更新链接的特定数据值?

2 个答案:

答案 0 :(得分:1)

正如chris85所指出的那样,GET将是你的选择,除非你愿意用'FORM'包裹每一行或使用'JS'。

获取

生成链接而不是按钮:<a href="update-data.php?id={$row[id]}&action=edit">Edit</a>

你可以通过CSS让它们看起来像按钮。

您可以在update-data.php中获取其余数据以预先填写表格,或者发送它以扩展您的GET查询,但请注意:如果您希望传递任何类型的敏感数据,请通过GET发送所有数据 - 不是方式。

<强> FORM

换行表格中的每一行:

echo
                "
                <form method="post" action="update-data.php">
                <input type="hidden" name="name" value="{$row['name']}">
                <input type="hidden" name="email_id" value="{$row['email_id']}">
                <input type="hidden" name="mobile_number" value="{$row['mobile_number']}">
                <input type="hidden" name="id" value="{$row['id']}">
                <input type="hidden" name="action" value="edit">
                <tr>
                    <td>{$row['name']}</td>
                    <td>{$row['email_id']}</td>
                    <td>{$row['mobile_number']}</td>;
                    echo '<td><button id="edit_button" name="edit_button" type="submit" style="border:0; background:transparent;"><i class="fa fa-pencil-square-o" aria-hidden="true" style="color:#006600;"></i></button></td>';
                echo "</tr>\n</form>";

在这里你可以发送所有的值。在GET选项中,无论你做什么,你必须发送一个唯一的行标识符(假设你想要更新条目或做任何其他事情),所以我假设你有一个自动增量列'id',因为它是最常见的事情imo。如果不是这种情况,请将其更改为唯一的行标识符。

<强> JS

第三个选项是在提交按钮中添加onclick属性,链接到js函数,该函数提交填充字段的隐藏/生成表单,如上例所示。这可能看起来像这样:

<?php   echo
                "
                <tr>
                    <td>{$row['name']}</td>
                    <td>{$row['email_id']}</td>
                    <td>{$row['mobile_number']}</td>;
                    echo '<td><button id="{$row['id']}" name="edit_button" onclick="send(this)" style="border:0; background:transparent;"><i class="fa fa-pencil-square-o" aria-hidden="true" style="color:#006600;"></i></button></td>';
                echo "</tr>\n";
?>
    <scritp>

    function send(button) {
        var form = $('            
        <form method="post" action="update-data.php">                
            <input type="hidden" name="id" value="' + button.id + '">
            <input type="hidden" name="action" value="edit"></form>
    ');
        $('body').append(form);
        form.submit();
    }
    </scirpt>

希望你能在这里找到至少有用的东西。我不是真正的专家:D还是:D

答案 1 :(得分:0)

你可以这样做echo '<td><button onclick="editData()" type="button" style="border:0; background:transparent;"><i class="fa fa-pencil-square-o" aria-hidden="true" style="color:#006600;"></i></button></td>';。那么你可以通过ajax传递editData()中的数据。古德勒克