I have a foreach loop (see below):
<form action="code/update-to-dispatched.php" method="post" name="markAsDispatched">
<?php
foreach ($orders as $row) {
$_POST['Username'] = $row['Username'];
echo "<tr class='even'>";
echo "<td>";
echo "<strong>Order Date:</strong> ". $row['OrderDate'] ." <br />";
echo "</td>";
echo "<td>";
echo "<strong>Order ID:</strong> ". $row['OrderID'] ."";
echo "</td>";
echo "<td>";
echo "<strong>Username:</strong> <input type='text' name='username' value=". $row['Username'] ." readonly style='border: 0; background: none;'>";
echo "</td>";
echo "<td>";
echo '<input type="checkbox" name="chkBox[]" id="chkBox" value="'. $row['OrderID'] .'">';
echo "</td>";
echo "</tr>";
}
?>
<span class="tag"><a href="javascript:checkall('markAsDispatched','chkBox',true)">CHECK ALL</a></span>
<span class="tag"><a href="javascript:checkall('markAsDispatched','chkBox',false)">UNCHECK ALL</a></span>
<input type="submit" name="markAsDispatched" value="MARK AS DISPATCHED" />
</form>
I currently have 3 orders in my Database so the code above shows 3 orders. I am trying to pass all of the email addresses from the field via the $_POST['Username']. Why does the post variable only equal to the last email rather than a comma separated list such "email1@email.com, email2@email.com, email3@email.com"?
If you want a comma-delimited list, try this:
$usernames = array();
foreach ($orders as $row) {
//$_POST['Username'] = $row['Username'];
$usernames[] = $row['Username'];
echo "<tr class='even'>";
echo "<td>";
echo "<strong>Order Date:</strong> ". $row['OrderDate'] ." <br />";
echo "</td>";
echo "<td>";
echo "<strong>Order ID:</strong> ". $row['OrderID'] ."";
echo "</td>";
echo "<td>";
echo "<strong>Username:</strong> <input type='text' name='username' value=". $row['Username'] ." readonly style='border: 0; background: none;'>";
echo "</td>";
echo "<td>";
echo '<input type="checkbox" name="chkBox[]" id="chkBox" value="'. $row['OrderID'] .'">';
echo "</td>";
echo "</tr>";
}
echo implode(',', $usernames);
You should never override the $_POST parameters by the way, it's very bad practise.