Reputation: 13
I am working on a PHP form that allows a user to add rows to a table and then submit the information using the form through email. I need to pass the variables into the email. I have tried using this:
$n = count($type);
$i = 0;
for ($i = 0; $i < $n; $i++){
$e_classes = "______________________________________________ \r\n\n";
$e_classes .= "Class Type: {$type[$i]} \r\n";
$e_classes .= "Number of Classes: {$nc[$i]} \r\n";
$e_classes .= "Number of Students: {$sc[$i]} \r\n";
$e_classes .= "______________________________________________ \r\n\n";
}
But when I get the email only the last one in the table is displaying. How would I get all of the added table rows to display? I can make everything work if I use 'echo', but I need to pass everything into a variable that I can use for an email.
Upvotes: 1
Views: 118
Reputation: 7438
Like this :
$e_classes = '';
$n = count($type);
$i = 0;
for ($i = 0; $i < $n; $i++){
$e_classes .= "______________________________________________ \r\n\n";
$e_classes .= "Class Type: {$type[$i]} \r\n";
$e_classes .= "Number of Classes: {$nc[$i]} \r\n";
$e_classes .= "Number of Students: {$sc[$i]} \r\n";
$e_classes .= "______________________________________________ \r\n\n";
}
Your first entry in your loop for the variable $e_classes
was erasing what she had before because you used $e_classes =
instead of $e_classes .=
.
This mean before each loop, your variable was reset with the value of your first row.
You were doing this :
$Var = '';
for($i = 0, $i < n; $i++){
$Var = 'a';
}
// Loop 1
$Var = 'a';
// Loop 2
$Var = 'a';
// Loop 3
$Var = 'a';
You wanted this :
$Var = '';
for($i = 0, $i < n; $i++){
$Var .= 'a';
}
// Loop 1
$Var = 'a';
// Loop 2
$Var = 'aa';
// Loop 3
$Var = 'aaa';
The symbol =
will overwrite the variable's value with the new one.
The symbol .=
will append the value at the end of the variable.
Upvotes: 6