【问题标题】:updating table entry from edit button从编辑按钮更新表格条目
【发布时间】:2017-05-09 00:17:36
【问题描述】:

谁能告诉我我的问题出在哪里,这个页面是从我嵌入在所有条目表中的编辑按钮链接的。但是,当我输入新值时,它正在将当前数据输入字段并且不更新?任何帮助表示赞赏。

php:

<?php
    include_once("config.php");

    date_default_timezone_set('Europe/London');

    //getting id from url
    $id = $_GET['id'];

    //selecting data associated with this particular id
    $EditQuery = "SELECT * FROM ACW WHERE UserID=$id";

    $results = sqlsrv_query ($conn, $EditQuery);

    while($row = sqlsrv_fetch_array($results, SQLSRV_FETCH_ASSOC))
    {
        $firstname = $row['FirstName'];
        $lastname = $row['LastName'];
        $location = $row['location'];
    }

    if(isset($_POST['update']))
    {   
    $id = $_POST['UserID']; 
    $firstname = $_POST['FirstName'];
    $lastname = $_POST['LastName'];
    $location = $_POST['location'];

    // checking empty fields
    if(empty($firstname) || empty($lastname) || empty($location)) {

        if(empty($firstname)) {
            echo "<font color='red'>First Name field is empty.</font><br/>";
        }

        if(empty($lastname)) {
            echo "<font color='red'>Last Name field is empty.</font><br/>";
        }

        if(empty($location)) {
            echo "<font color='red'>Location field is empty.</font><br/>";
        }

        //link to the previous page
        echo "<br/><a href='javascript:self.history.back();'>Go Back</a>";

    } 

    if (preg_match("/^[0-9-]+$/",$firstname || $lastname || $location)) {
        echo "<font color='red'>Numbers are not valid in these fields</font><br/>";
    }
    } else {    
        //updating the table
        $UpdateQuery ="UPDATE ACW SET FirstName='$firstname', LastName='$lastname', location='$location' WHERE UserID='$id'";

        echo $UpdateQuery;
        //echo "<font color='green'>Data has been updated.</font><br/>";

        $results = sqlsrv_query ($conn, $UpdateQuery);
    }
?>

表格:

<form name="form1" method="get" action="edit.php">
        <table border="0">
            <tr> 
                <td>First Name</td>
                <td><input type="text" name="firstname" value="<?php echo $firstname;?>"></td>
            </tr>
            <tr> 
                <td>Last Name</td>
                <td><input type="text" name="lastname" value="<?php echo $lastname;?>"></td>
            </tr>
            <tr> 
                <td>Location</td>
                <td><input type="text" name="location" value="<?php echo $location;?>"></td>
            </tr>
            <tr>
                <td><input type="hidden" name="id" value=<?php echo $_GET['id'];?>></td>
                <td><input type="submit" name="update" value="Update"></td>
            </tr>
        </table>
</form>

【问题讨论】:

  • 不确定这是否是您的问题,但您有$_POST['update'],但您的表单是method="get"
  • 感谢您的帮助!

标签: php html sql-server


【解决方案1】:

我建议您进行 3 处更改:
1.0 为从数据库收集的表单输入不同的变量名称(例如,而不是 $firstname 给出但说 $firstname_form)

2.0 您的表单具有 GET 方法,但您使用 POST 进行更新

3.0 您的表单操作页面是 edit.php 但您通过 GET 收集项目 id 的事实意味着您的编辑按钮必须链接到某个 edit.php?id=$item_id 因此操作页面应该是编辑.php?id=$id

c/o 您的评论:是的。跟我想象的一模一样。因此,对于您的表单操作,将 edit.php 替换为
edit.php?id=
你的意思是,如果 id 存在于该页面上,则将其显示为参数。

【讨论】:

  • 非常感谢我会做出这些改变
  • echo " Edit 这是我使用的表单链接你好吗?
  • 你知道他的 html 中有一个隐藏的输入吗?
  • 我现在得到一个未定义的变量:id 错误,我已将按钮格式化为 echo " 编辑
【解决方案2】:

我并没有要求更改您的链接按钮。它是正确的。为了证明它是正确的,请像这样在您的编辑页面上回显 id

if(isset($_GET['id'])){

$id = $_GET['id'];

回显 $id;
出口();

}

在确认 id 传递到编辑页面后,您可以评论或删除 echo 和 exit 行。

现在,在您的表单上,我是说动作应该是这样的

按照我之前的建议调整变量名称,并将输入验证从 POST 更改为 GET。您的数据库现在应该已更新。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签