Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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.

share|improve this question
1  
Change the first instance of $e_classes = " to $e_classes .= " –  Josh Jun 27 '12 at 16:14
1  
Every time you enter that for loop you override your $e_classes variable –  Alvaro Arregui Jun 27 '12 at 16:15

1 Answer 1

up vote 6 down vote accepted

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.

share|improve this answer
    
FREAKIN BRILLIANT! Thanks so much for the help, worked perfectly!! –  blutick Jun 27 '12 at 16:22
    
@blutick Your welcome. Just mark as answered the question please. Thanks. –  David Bélanger Jun 27 '12 at 16:25

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.