html - Extract values from dynamic table corresponding to checked row - PHP only

I have a table created based on the rows in a mysql database table. So the rows are not fixed but depend on records from the source database table.

HTML and part of DB query:

 $query=mysqli_query($db_server, "SELECT DateTime, RefNumber, COUNT(*) AS count FROM requests GROUP BY DateTime");
    
          $i=1;      
        foreach($query as $row)
        
        {?>
        
        <tr>
        <td> <?php echo $i ?> </td>
    
        <td><input type='text' name='date_sent[]' value='<?php echo $row['DateTime'];?>' style='border-radius:0; margin:0' /></td>
        
        <td><input id='ref<?php echo $i?>' type='text' name='ref[]' value='<?php echo $row['RefNumber'];?>' style='border-radius:0; margin:0' /></td>
        
        <td ><input id='noofitems<?php echo $i?>' type='text' class='prices' name='noofitems[]'  value='<?php echo $row['count'];?>' style='text-align:center; border-radius:0; margin:0' /></td>
        
       <td align='center'><input id='action1<?php echo $i?>' type='checkbox' class='prices' name='action2[]'  style='width:20px; border-radius:0; margin:0' /></td>
        
        </tr>
        
        <?php
        
        $i++;
        
        }

Table: Dynamic table - from DB

What I want: A pure PHP code that will pick REFENCE NUMBERS of the exact corresponding checked rows. I need these reference numbers to build another DB query to create a second table on another page using PHP sessions.

I have tried calling the following to store the ref numbers. Unfortunately, it only picks the first consecutive reference numbers. I need to pick only those whose rows are checked.

<?php

session_start();

$rowCount = count($_POST['action2']);

for($i=0; $i<$rowCount; $i++){

   if(isset($_POST['action2'][$i])){
        $_ref='ref'.$i;
        
        $_SESSION["$_ref"]=$_POST['ref'][$i];

    }
    
   
}

$_SESSION['rowCount']=$rowCount;

Or even this:

<?php

session_start();


 if(isset($_POST['action2'])){
     
   $rowCount=count($_POST['action2']);
   
  
     $i=0;
     
     foreach($_POST['action2'] as $i){
         
         
         $ref='ref'+$i;
         
         $_SESSION["$ref"]=$_POST['ref'][$i];
         
         $i++;
         
        
     }
 }

Answer

Solution:

You have generated checkboxes that look like this in HTML

<input id="action14" type="checkbox" class="prices" name="action2[]" style="width:20px; border-radius:0; margin:0">

How can you tell which ID this checkbox refers to? You need to assign a value to each checkbox so that when it's sent to PHP you can tell which row was marked.

Use value='<?=$row['SomeID']?>' to populate the value attribute that will be sent to PHP. Then you can do foreach ($_POST['action2'] as $ID)

Source