2013-08-06 56 views
0

我目前正在一個小型私人網站上工作。我試圖讓它可以編輯數據庫中的用戶詳細信息。我的第一頁顯示所有用戶和詳細信息,每個用戶在他們名字旁邊都有編輯,然後第二頁打開一個表單輸入數據庫的新數據。問題是它不會更新數據庫。我不認爲表單是通過正確地將信息拖到編輯頁面。編輯會員表格未更新數據庫

也知道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> 

這是一個在admin按下編輯後出現的窗體。它應該將用戶數據拖入要編輯的文本區域。但它並沒有通過數據。這可能是問題開始的地方。

編輯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

它看起來你在你的動作形式使用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'] ;?>"

+0

謝謝你,會解決這個問題第2次故障,而第一個錯誤只是我的錯,而帖子的主題:P – GaZzErZz