2016-06-11 71 views
0

在我的網站我有我想要的是能夠在數據庫中更新信息的管理頁面,使用表格。使用PHP更新一個庫MySQLi數據庫和HTML5形成

這是一個利用輸入信息和更新什麼是我的數據庫中的代碼IM:

adminform.php

<html> 
<head> 
    <link rel="stylesheet" href="assets/css/main.css" /> 
</head> 
<body> 

<header id="header"> 
       <h1><a href="home.php">SafeTNet</a></h1> 
       <nav id="nav"> 
        <ul> 

         <li>Admin Page Only</li> 
         <li></li> 


         <li><a href="logout.php" class="button">Logout</a> </li> 

        </ul> 
       </nav> 
      </header> 

<h1> Select a member </h1> 
<br /> 
<select name="members" onchange="showUser(this.value)"> 
<option value="">Select a member email</option> 
<?php 
    $query = "SELECT * FROM members"; 
    $mysqli = new mysqli('localhost','root','root','SafeTNetD'); 
    $result = $mysqli->query($query); 
    while($row = $result->fetch_assoc()) 
    echo '<option value="'.$row["email"].'">'.$row["email"].'</option>'; 
?> 
</select> 
    <div id="signup"> 
     <h2>Update Your Member Information</h2> 
     <form method="post" action="admin1.php"> 
      <table> 
     <tr> 
      <td>Email</td> 
      <td><input type="text" name="email" required="required"></td> 
     </tr> 
     <tr> 
     </tr> 
     <tr> 
      <td>City </td> 
      <td><input type="text" name="city"></td> 
     </tr> 
     <tr> 
     </tr> 
     <tr> 
     </table> 
     <br><br> 
     <div id="buttons"> 
      <input type="submit"> 
     </div> 


    </body> 
    </html> 

admin1.php

<html> 
<head> 
<title>Admin</title> 
<link rel="stylesheet" href="assets/css/main.css" /> 
</head> 
<body> 


<header id="header"> 
       <h1><a href="home.php">SafeTNet</a></h1> 
       <nav id="nav"> 
        <ul> 

         <li>Admin Page Only</li> 
         <li></li> 


         <li><a href="logout.php" class="button">Logout</a></li> 

        </ul> 
       </nav> 
      </header> 
    <br /> 

<?php 
$query = "SELECT * FROM members"; 
$mysqli = new mysqli('localhost','root','root','SafeTNetD'); 
$result = $mysqli->query($query); 
while($row = $result->fetch_assoc()) 
echo '<option value="'.$row["email"].'">'.$row["email"].'</option>'; 
?> 
</select> 
<br /> 
<?php 
$q=$row["email"]; 
$mysqli = new mysqli('localhost','root','root','members'); 
$sql = "SELECT * FROM members WHERE email='".$q."'"; 
if(array_key_exists('_submit_check', $_POST)) 
{ 
    $email = $_POST['email']; 
    $city = $_POST['city']; 

$sql = "UPDATE members SET city = '$city' WHERE email = '$q'"; 
if($mysqli->query($sql) === TRUE) 
{ 
    echo 'Record updated successfully<br />'; 
} 
    else 
{ 
    echo $sql.'<br />' . $mysqli->error; 
} 
$mysqli->close(); 
} 
?> 

<br><br><br> 

<footer id="footer"> 
       <img src="logo.jpg" height="50px"> 

       <ul class="copyright"> 
        <li>&copy; SafeTNet. All rights reserved.</li><li> 2016</li> 
       </ul> 
      </footer> 
</body> 
</html> 

我CA n得到表單運行,但不能獲取信息在數據庫中更改或回顯到屏幕。

預先感謝您。

回答

0
if(array_key_exists('_submit_check', $_POST)) 
{ 
    $email = $_POST['email']; 
    $city = $_POST['city']; 

$sql = "UPDATE members SET city = '$city' WHERE email = '$q'"; 
if($mysqli->query($sql) === TRUE) 
{ 
    echo 'Record updated successfully<br />'; 
} 
    else 
{ 
    echo $sql.'<br />' . $mysqli->error; 
} 
$mysqli->close(); 
} 

在表單中沒有名爲'_submit_check'的元素。我猜你忘了提交按鈕的名稱屬性。

你的腳本是SQL注入非常脆弱。你真的不應該簡單地把用戶輸入放到你的查詢中。您可以使用mysqli_real_escape_string()Prepared Statements,以保護您的應用程序。

要提高代碼的可讀性,你可以改變蛋白質的結構一點點。在您的admin1.php中,您應該在輸出任何html之前執行業務邏輯。因此,您首先會檢查表單是否已發送,然後執行數據庫操作。數據庫操作的檢查結果或成功/錯誤消息可以寫入變量,直到您輸出站點的內容爲止。

這樣大家誰開始讀立即知道代碼「好吧,這個腳本是某種形式的目標,並訪問一些寫操作的數據庫」。