2016-06-11 3 views
0

Auf meiner Website habe ich eine Admin-Seite, wo ich in der Lage sein, Informationen in der Datenbank zu aktualisieren, mithilfe eines Formulars.Aktualisieren einer MySQLi-Datenbank mit PHP- und HTML5-Formularen

Dies ist der Code im Informationen einzugeben verwenden und zu aktualisieren, was in meiner Datenbank:

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> 

ich ca Das Formular wird ausgeführt, aber die Informationen können nicht in der Datenbank geändert oder auf dem Bildschirm angezeigt werden.

Vielen Dank im Voraus.

Antwort

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(); 
} 

Es gibt kein Element namens _submit_check in Ihrem Formular. Ich schätze, du hast das name-Attribut deines Submit-Buttons vergessen.

Ihr Skript ist sehr anfällig für SQL-Injection. Sie sollten die Benutzereingabe nicht einfach in Ihre Abfrage werfen. Sie können mysqli_real_escape_string() oder Prepared Statements verwenden, um Ihre Anwendung zu schützen.

Um die Lesbarkeit Ihres Codes zu verbessern, können Sie die Struktur ein wenig ändern. In Ihrer admin1.php sollten Sie die Geschäftslogik machen, bevor Sie HTML ausgeben. Sie würden also zuerst prüfen, ob das Formular gesendet wurde, und dann die Datenbankoperation ausführen. Das Ergebnis der Prüfung oder der Erfolg/Fehlermeldung der Datenbankoperation kann in eine Variable geschrieben werden, bis Sie den Inhalt Ihrer Site ausgeben.

So weiß jeder, der den Code sofort liest, "in Ordnung, dieses Skript ist das Ziel irgendeiner Form und greift auf die Datenbank für eine Schreiboperation zu".