编辑成员表单不更新数据库

时间:2013-08-06 14:15:59

标签: php mysql forms

我目前正在开设一个小型私人网站。我正在尝试这样做,以便我可以编辑数据库中的用户详细信息。我的第一页显示所有用户和详细信息,每个用户在其名称旁边编辑,然后第二页打开一个表单以输入数据库的新数据。问题是它不会更新数据库。我认为表单不会正确地将信息提取到编辑页面。

还要注意sql注入问题,但我会在修复初始问题后对它们进行排序。

TL; DR - 编辑成员表单未更新数据库。我如何解决它?

此页面从dastabase中提取成员,以便管理员选择要编辑的成员。 Edit.php:

<html>
<head>
<title>Choose User To Edit</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table>
  <tr>
    <td align="center">EDIT DATA</td>
  </tr>
  <tr>
    <td>
      <table border="1">
      <?
      include"conn.php";//database connection
      $order = "SELECT * FROM members";
      $result = mysql_query($order);
      while ($row=mysql_fetch_array($result)){
        echo ("<tr><td><a href=\"edit_form.php?id=$row[member_id]\">Edit</a></td>");
        echo ("<td>$row[firstname]</td>");
        echo ("<td>$row[lastname]</td>");
        echo ("<td>$row[member_id]</td>");
        echo ("<td>$row[login]</td>");
        echo ("<td>$row[addline1]</td>");
        echo ("<td>$row[addline2]</td>");
        echo ("<td>$row[town]</td>");
        echo ("<td>$row[county]</td>");
        echo ("<td>$row[postcode]</td>");
        echo ("<td>$row[telenum]</td>");
        echo ("<td>$row[email]</td></tr>");
      }
      ?>
      </table>
    </td>
   </tr>
</table>
</body>
</html>

这是管理员按下编辑后显示的表单。它应该将用户数据拉入要编辑的文本区域。但它并没有提取数据。这可能是问题开始的地方。

编辑form.php的:

<html>
<head>
<title>Edit Client</title>
</head>

<body>
<table border=1>
  <tr>
    <td align=center>Edit The Clients Data</td>
  </tr>
  <tr>
    <td>
      <table>
      <?
      include "conn.php";//database connection
      $order = "SELECT * FROM members 
where member_id='$id'";
      $result = mysql_query($order);
      $row = mysql_fetch_array($result);
      ?>
      <form method="post" action="edit_data.php">
      <input type="hidden" name="id" value="<? echo "$row[member_id]"?>">
         <tr>        
          <td>First Name</td>
          <td>
            <input type="text" name="firstname" 
    size="40" value="<? echo "$row[firstname]"?>">
          </td>
        </tr>
          <td>Last Name</td>
          <td>
            <input type="text" name="lastname" 
    size="40" value="<? echo "$row[lastname]"?>">
          </td>
        </tr>
          <td>Login</td>
          <td>
            <input type="text" name="login" 
    size="40" value="<? echo "$row[login]"?>">
          </td>
          </tr>
          <td>Add Line 1</td>
          <td>
            <input type="text" name="addline1" 
    size="40" value="<? echo "$row[addline1]"?>">
          </td>
        </tr>
          <td>Add Line 2</td>
          <td>
            <input type="text" name="addline2" 
    size="40" value="<? echo "$row[addline2]"?>">
          </td>
        </tr>
          <td>Town</td>
          <td>
            <input type="text" name="town" 
    size="40" value="<? echo "$row[town]"?>">
          </td>
        </tr>
           <td>County</td>
          <td>
            <input type="text" name="county" 
    size="40" value="<? echo "$row[county]"?>">
          </td>
        </tr>
          <td>Postcode</td>
          <td>
            <input type="text" name="postcode" 
    size="40" value="<? echo "$row[postcode]"?>">
          </td>
        </tr>
          <td>telephone number</td>
          <td>
            <input type="text" name="telenum" 
    size="40" value="<? echo "$row[telenum]"?>">
          </td>
        </tr>
        <tr>
          <td>Email</td>
          <td>
            <input type="text" name="email" size="40" 
      value="<? echo "$row[email]"?>">
          </td>
        </tr>
        <tr>
          <td align="right">
             <input type="submit" 
      name="submit value" value="Edit">
          </td>
        </tr>
      </form>
      </table>
     </td>
  </tr>
</table>
</body>
</html>

最后,exec页面理想地使用上面表格中输入的数据编辑成员信息。 编辑exec.php:

<?
//edit_data.php
include "conn.php";
$id = $_GET["member_id"];
$order = "UPDATE members 
          SET firstname='$_POST[firstname]',
              lastname='$_POST[lastname]',  
              login='$_POST[login]',    
              addline1='$_POST[addline1]',  
              addline2='$_POST[addline2]',  
              town='$_POST[town]',  
              county='$_POST[county]',  
              postcode='$_POST[postcode]',  
              telenum='$_POST[telenum]',  
              email='$_POST[email]' 
          WHERE 
          member_id='$id'";
mysql_query($order);
header("location:edit.php");
?>

理想情况下,我希望编辑表单显示在上一页中选择的信息,然后更新所做的任何更改。

任何帮助?

感谢您阅读

1 个答案:

答案 0 :(得分:1)

它会在您的操作表单中使用wrrong文件

  <form method="post" action="edit_data.php">
                                  ^^--------wrong file or you didnt show it.

这应该是

  <form method="post" action="edit-exec.php">

但是你的代码太糟糕了,有数百个错误,我无法为你解决这些问题。

示例

value="<? echo "$row[login]"?>"应该是          value="<?php echo $row['login'] ;?>"