php/html: skriva ut <table> med data från db som ska kunna ändras med inputfält + knapp
Hej!
Jag har stött på problem som jag absolut inte kommer på hur jag ska lösa.
Jag har en databas och jag vill kunna skriva ut en tabell med data från databasen med namn för arbetare.
Namnen som redan finns på arbetaren inuti ett <input> fält och bredvid vill jag ha en knapp som jag kan klicka på för att ändra namnet, och då ändrar jag namnet i input-fältet för den raden.
Men när jag försöker att trycka på knappen "Ändra för ett namn på en rad så tar den värdet för den sista utskrivna raden verkar det som.
Här är min lösning hittills:
<?php
if(isset($_POST["namnKorrigering"]))
{
$id=$_POST["namnKorrigering"];
$new_name = $_POST["new_name"];
debug("ID: $id");
debug("Nytt namn: $new_name");
$sql = "UPDATE EMPLOYEES SET name = '$new_name' WHERE id = '$id'";
mysqli_query($database, $sql) or die("ERROR: Det gick inte att uppdatera namnet.");
}
$sql = "SELECT * FROM EMPLOYEES";
$result = mysqli_query($database, $sql);
?>
<table style='padding-top:3px; font-family: monospace; font-size:14px; border-collapse: collapse;'>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<tr>
<td style='font-weight:bold; padding-left:10px; padding-right:10px; text-align:center;'>ID</td>
<td style='font-weight:bold; padding-left:10px; padding-right:10px; text-align:center;'>Namn</td>
<td></td>
</tr>
<?php
while($row = mysqli_fetch_array($result))
{
?>
<tr>
<td style='text-align:center;'> <?php echo $row["id"]; ?> </td>
<td style="padding-left: 10px;">
<input style="font-size:14px; width:140px;" name="new_name" value="<?php echo $row["name"]; ?>" type="text"> </td>
<td>
<button style="width:auto; text-align:center; margin-left:-3px; font-size:10px;" name="namnKorrigering" value="<?php echo $row["id"]; ?>" type="submit">Ändra</button>
</td>
</tr>
<?php
}
?>
</table>
</form>
Här är en bild på hur hur det ser ut i nuläget: https://24h.rip/SiriS30
Från bilden:
om jag försöker att ändra namnet "pelle" (id 1) till sven så kommer jag istället att få namnet "ragnar"
Hur löser jag detta som?