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)