user3397260
user3397260

Reputation: 271

Get the ID of the selected check box

I am currently working on a php and MySQL application. In my application I load a table from MySQL and I display it in my Website. The table consists of the columns (ID,Name,SurName). When I load the table I also create another column which consists of different checkboxes. My source code for the creation of the table is the following:

function user_clients_table() {

   $con = mysql_connect("localhost","root",'');
   if(!$con){

   die("Cannot Connect" . mysql_error());

   }
    mysql_select_db("client_app",$con);
    $get_user_clients = "SELECT `ID`,`Name`,`SurName` FROM `clients`  ";
    $clients = mysql_query($get_user_clients,$con);

   echo "<table  border=2>
   <tr>   
   <th>Client</th>
   <th>Name</th>
   <th>SurName</th>
   <th>Receive Message</th>
   </tr>";
   while($record = mysql_fetch_array($clients)){
    echo "<form action=pushnotification.php method=post>";
    echo "<tr>";
    echo "<td>".$record['ID']." </td>";
    echo "<td>".$record['Name']." </td>";
    echo "<td>".$record['SurName']." </td>";
    echo "<td>"."<input type=checkbox name= checkbox[".$record['ID']."] "."</td>";
    echo "</tr>";
    echo "</form>";
     }

echo "</table>";     
mysql_close();

}

The table looks Lke that in the Website:

enter image description here

What i want to do is to echo the client id from the first column of the table if the checkbox of the client isset after i click the send button on the website. For example if the top checkbox isset i want to echo "1" , if the checkbox in the third row is checked i want to echo "3".

I ve done this so far:

if (isset($_POST['checkbox']))
{
    foreach ($_POST['checkbox'] as $key => $value)
    {
        $receivemsg = $key;
    }

    echo '<span style="color:#AFA;text-align:center;">'.$receivemsg.'</span>';

}

But it works only for the first checkbox the other ones are not working. Can someone please help me to do this? Thanks in Regards

Upvotes: 0

Views: 771

Answers (1)

kry
kry

Reputation: 362

(In HTML, you put the attributes in "", like type="checkbox". Use '' for your tags, so you can use "" for the attributes. You are also missing a " />" at the end of your input tag.)

With the isset you actually check only the first one. Remove it, with foreach, you don't need it anyway, as it loops through the checked checkboxes (if you send them from HTML as an array). If none of the checkboxes are selected, the loop will run 0 times anyway.

foreach ($_POST['checkbox'] as $key => $value)
    {
        $receivemsg = $key;
    }

If you write it this way, it will only save the very last checked checkbox. Maybe you want

foreach ($_POST['checkbox'] as $key => $value)
        {
            $receivemsg[] = $key;
        }

And of course, injection, mysqli, and others what has been mentioned in the comments.

(Personally I find it kind of strange that if checkboxes are sent as an array, isset doesn't work on them anymore. Or to be more precise, it works on them as elements of the array.)

As @Johannes said, you also declare a form for each checkbox.

Upvotes: 1

Related Questions