Wylan Osorio
Wylan Osorio

Reputation: 1164

PHP get button ID

Is it possible to get the button ID? I have accumulated forms and I wanted to get the button clicked using the unique ID. The following scripts I used:

echo("<table><tr>
    <td id=\"i\"><img src='presentations/uploaded_files/$name.png' alt='animal' width='50px' height='50px'/></td>
    <td id=\"n\">$name</td>
    <td id=\"d\">$dsc</td>
    <td id=\"t\">$type</td>
    <td id=\"g\">$grade</td>
    <td id=\"b\">
    <form enctype=\"multipart/form-data\" action=\"admin_update_animal.php\" method=\"POST\"><input type=\"submit\" value=\"Update\" name=\"update\" id=\"$name\"/></form></td>
</tr></table>");

I used the following when any of the button clicked:

if (isset($_POST['update'])) { 
$f=trim($_POST['update']);
}

But I wanted to get which button clicked using its unique ID assigned. I am very glad for a help. Thanks.

Upvotes: 1

Views: 4235

Answers (2)

nurakantech
nurakantech

Reputation: 502

You cannot directly read the id of a control because name is passed to the server side script via any methods. You can use hidden input fields whose value can be the id of the button. This lets you know the id of the button in the server side. This can be done as:-

<script type="text/javascript">
  function createField(id)
  {
         var x = document.getElementById("hide");
         var y = "<input type='hidden' name='iddetector' value='"+id+"'/>";
         x.innerHTML = y;
        return;
  }
</script>
//maintain other stuffs here and now
<input type="submit" id="uniqueid" name="submit" value="submit"onClick="createField('uniqueid');return true;"/><br>
<div id="hide"></div>

You can detect the id of the button i the sever side as:-
 <?php
    $idButton = isset($_POST['iddetector'])?$_POST['iddetector']:NULL;
     echo "The id of the button clicked is ".$idButton;
  ?>

Upvotes: 2

S&#233;bastien
S&#233;bastien

Reputation: 12139

What is passed via POST is the name of the control, not the id. To capture the ID you would be better off using JavaScript before submit.

The point is that you may have multiple controls in different places in the page with the same name (but different IDs) that perform the same task (like submit).

Upvotes: 0

Related Questions