2016-04-28 4 views
0

Ich habe ein Formular, das Datensätze zu einer Datenbank hinzufügt. Jede Zeile hat einen 'Bearbeiten' Knopf. Wenn ein Benutzer auf die Schaltfläche "Bearbeiten" klickt, wird der Benutzer zu einer anderen Seite weitergeleitet, die das Formular speziell für die ID enthält, die zum Bearbeiten ausgewählt wurde, wobei die ursprünglichen Informationen darin enthalten sind. Das Problem: Wenn auf die Schaltfläche Aktualisieren geklickt wird, fügt die Seite der ersten Seite einen neuen Datensatz hinzu, anstatt die Informationen für dieselbe ID zu aktualisieren und zu ersetzen. Danke für die Hilfe! : DPHP: Update und REPLACE Zeile in der Datenbank

Code Snippet der ersten Seite mit einer Liste von Datensätzen mit 'Bearbeiten' Option neben jeder:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "database"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM users ORDER BY lastname ASC"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<div class='container'>"; 
      echo "<table class='table'>"; 
       echo "<tr id='hover'>"; 
        echo "<td id='lastname'>".$row["lastname"]."</td>"; 
        echo "<td id='firstname'>".$row["firstname"]."</td>"; 
        echo "<td id='username'>".$row["username"]."</td>"; 
        echo "<td id='email'>".$row["email"]."</td>"; 
        echo "<td id='editdelete'> 
        <form action='Edit.php?id=" . $row['id'] . "' method='post'> 
         <input type='submit' name='edit' value='Edit' id='Edit'><input type='hidden' name='id' value='" . $row['id'] . "'> 
         &nbsp;<input type='submit' name='delete' value='Delete' id='delete'><input type='hidden' name='id' value='" . $row['id'] . "'> 
        </form></td>"; 
       echo "</tr>"; 
      echo "</table>"; 
     echo "</div>"; 
    echo '<br>'; 
    } 
} 
else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 

Code of 'Bearbeiten' Seite (zweite Seite):

<?php 
// DB Connection Info 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "database"; 
// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 
// Code for EDIT button 
if (isset($_POST['edit'])) { 
$userid = $_POST['id']; 
} 
// Code for UPDATE button 
if (isset($_POST['update'])) { 
$userid = $_POST['id']; 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$username = $_POST['username']; 
$password = $_POST['password']; 
$email = $_POST['email']; 
$sql = "UPDATE users SET firstname = '$firstname', lastname = '$lastname', username = '$username', password = '$password', email = '$email' WHERE id = '$userid';"; 
$conn->query($sql); 
} 
// SQL Query 
$sql = "SELECT * FROM users WHERE id = '$userid';"; 
$result = $conn->query($sql); 
//Loop through and echo all the records 
while ($row = $result->fetch_assoc()){ 
echo "<form method='post' action='Index.php'>"; 
echo "<input type='hidden' name='id' value='" . $row['id'] . "'>"; 
echo "First Name: <input type='text' name='firstname' value='" .  $row['firstname'] . "'> <br>"; 
echo "Last Name: <input type='text' name='lastname' value='" . $row['lastname'] . "'> <br>"; 
echo "Username: <input type='text' name='username' value='" . $row['username'] . "'> <br>"; 
echo "Password: <input type='password' name='password' value='" . $row['password'] . "'> <br>"; 
echo "Email: <input type='text' name='email' value='" . $row['email'] . "'> <br> "; 
echo "<input type='submit' name='update' value='Update'>"; 
echo "</form>"; 
} 
$conn->close(); 
?> 

Antwort

2

In edit.php, Ihre Formularaktion verweist auf index.php anstelle von edit.php.

+0

Es funktionierte. Vielen Dank. Ich musste einen Link setzen, um zur Liste der Datensätze auf der ersten Seite zurückzukehren, aber es funktioniert perfekt. Vielen Dank. – DDG

Verwandte Themen