Emily Bichler
Emily Bichler

Reputation: 41

Get a mySQL line item id with PHP

Right now I have a table that displays menu items and I want an Admin to be able to delete and edit a particular line item. My delete.php code works correctly if I have the id equal to a particular number, but I want the id to be equal to the id of whichever row the delete button is in. So my question is how do I get that id number? Because what I'm doing now is not correct.

Here is my delete.php file:

<?php 
$con = mysql_connect("localhost", "root", "");
if(!$con)
    {
    die('Could not connect: ' .mysql_error());
    }
mysql_select_db("bics_place", $con);

echo "mysql connected";

$myid = $_POST['id'];

$sql = "DELETE FROM menu WHERE id='$myid'";

echo "sql = $sql";

if(!mysql_query($sql, $con))
    {
    die('Error: ' .mysql_Error());
    }
echo "1 record deleted";
header("location:admin_menu.php");

mysql_close($con);

?>

This is the table being made in admin_menu.php

            $result = mysql_query("SELECT * FROM menu");

            echo "<table border='1' id='menu'>
            <form method='post' action='delete.php'>
            <tr>
            <th> Id </th>
            <th> Type </th>
            <th> Product Name </th>
            <th> Price </th>
            <th></th>
            <th></th>
            </tr>";


            while($row = mysql_fetch_assoc($result))
              {
              echo "<tr>";
              echo "<td>" . $row['id'] . "</td>";
              echo "<td>" . $row['type'] . "</td>";
              echo "<td>" . $row['productName'] . "</td>";
              echo "<td>" . $row['price'] . "</td>";
              echo "<td>" . '<input type="submit" name="delete" value="Delete">' . "</td>";
              echo "<td>" . '<input type="submit" name="edit" value="Edit">' . "</td>";
              echo "</tr>";
              }
            echo "</form>";
            echo "</table>";

Upvotes: 0

Views: 515

Answers (2)

GBD
GBD

Reputation: 15981

Take on hidden field in your form.Then button onclick event set id into hidden field before submit.

<script>
function setId(idValue){
    document.getElementById('myid').value=idValue;
}
</script>
echo "<table border='1' id='menu'>
            <form method='post' action='delete.php'>
            <input type="hidden" name="id" id="myid" value="" />
            <tr>
            <th> Id </th>
            <th> Type </th>
            <th> Product Name </th>
            <th> Price </th>
            <th></th>
            <th></th>
            </tr>";


            while($row = mysql_fetch_assoc($result))
              {
              $myID = $row["id"];

              echo "<tr>";
              echo "<td>" . $row['id'] . "</td>";
              echo "<td>" . $row['type'] . "</td>";
              echo "<td>" . $row['productName'] . "</td>";
              echo "<td>" . $row['price'] . "</td>";
              echo "<td>" . '<input type="submit" name="delete" value="Delete" onClick="setId('.$myID.');">' . "</td>";
              echo "<td>" . '<input type="submit" name="edit" value="Edit">' . "</td>";
              echo "</tr>";
              }
            echo "</form>";
            echo "</table>";

Upvotes: 1

janenz00
janenz00

Reputation: 3310

Add a hidden field - id in the form :

 while($row = mysql_fetch_assoc($result)) {
    //your <td>'s here

           echo '<input type="hidden" name="id" value="{$row[id]}">';
    // echoes for form submit
 }

Note : mysql_* functions are deprecated. You should use mysqli_ functions instead. Read here

Upvotes: 0

Related Questions