Reputation: 135
I want to access the $name
variable, which is defined in a while loop, in a function named sendMail
. Would I have to somehow incorporate the function within the loop?
<?php
while ($row = mysql_fetch_assoc($result))
{
print_r($row); echo "<br><br>";
$name = $row['Name'];
$date = $row['sDate'];
$time = $row['sTime'];
$phone = $row['Phone'];
$email = $row['Email'];
sendMail($row['Email']);
$company = $row['Company'];
$course = $row['Course'];
$ref = $row['Reference'];
$optout = $row['optout'];
echo "<tr bgcolor=#ABB5F6>
<td>$name</td>
<td>$date</td>
<td>$time</td>
<td>$phone</td>
<td>$email</td>
<td>$company</td>
<td>$course</td>
<td>$ref</td>
<td>$optout</td>
</tr>";
}
// Mail to $to and $emailarray recipients
function sendMail($to)
{
$subject = 'Test mail';
$message = 'Hello'.$name; // I want $name from the while loop
$headers = array();
$headers[] = "From:" . "[email protected]";
$headerz = implode("\r\n", $headers);
mail($to, $subject, $message, $headerz);
}
?>
Upvotes: 0
Views: 476
Reputation: 1
I've made the changes required in order to have your code working.
<?php
while ($row = mysql_fetch_assoc($result))
{
print_r($row); echo "<br><br>";
$name = $row['Name'];
$date = $row['sDate'];
$time = $row['sTime'];
$phone = $row['Phone'];
$email = $row['Email'];
// i added name as a parameter
sendMail($row['Email'],$name);
$company = $row['Company'];
$course = $row['Course'];
$ref = $row['Reference'];
$optout = $row['optout'];
echo "<tr bgcolor=#ABB5F6>
<td>$name</td>
<td>$date</td>
<td>$time</td>
<td>$phone</td>
<td>$email</td>
<td>$company</td>
<td>$course</td>
<td>$ref</td>
<td>$optout</td>
</tr>";
}
// Mail to $to and $emailarray recipients
// i added name as a parameter
function sendMail($to,$name)
{
$subject = 'Test mail';
$message = 'Hello'.$name; // I want $name from the while loop
$headers = array();
$headers[] = "From:" . "[email protected]";
$headerz = implode("\r\n", $headers);
mail($to, $subject, $message, $headerz);
}
?>
Upvotes: 0
Reputation: 2278
why not just pass it ?
function sendMail($to, $name);
and call
sendMail($row['Email'], $row['name']);
Upvotes: 5
Reputation: 12244
Why not just pass the $name to the function sendMail:
// Mail to $to and $emailarray recipients
function sendMail($to, $name)
{
$subject = 'Test mail';
$message = 'Hello'.$name; // I want $name from the while loop
$headers = array();
$headers[] = "From:" . "[email protected]";
$headerz = implode("\r\n", $headers);
mail($to, $subject, $message, $headerz);
}
And then call the sendMail function with the name variable?
Upvotes: 5
Reputation: 21969
Either make sendMail()
accept an array (ie. $row), or add another parameter to
sendMail()which is called
$name` and pass it in.
ie.
function sendMail($to, $name)
called like:
sendMail($row['Email'], $row['Name']);
The parameter is probably easiest, don't go down the route of globals. I would suggest not using the array either, as the format is undefined and could change if your table structure does. If you were to use mysql_fetch_object
with a strongly defined class, then this would be the most acceptable solution (well, using PDO/MySQLi also, of course)... Especially if you're planning on extending to use more data off $row
in the future.
Upvotes: 5