homepage Welcome to WebmasterWorld Guest from 54.234.141.47
register, free tools, login, search, pro membership, help, library, announcements, recent posts, open posts,
Become a Pro Member

Home / Forums Index / Code, Content, and Presentation / Databases
Forum Library, Charter, Moderator: open

Databases Forum

    
Looping problem with form to email
loop form email
zorro



 
Msg#: 4204029 posted 1:18 am on Sep 20, 2010 (gmt 0)

I have a form on a page which is accessed when a user logs into their account.
The form dynamically pulls bits of the users info from 2 tables in a mysql database, Tables (ITEMS) and Table (USERS).
Table (USERS) holds the users info (NAME, EMAIL ETC) while Table (ITEMS) hold information about the users items for which they may have several of.
When the form page is accessed all the users items from Table (ITEMS) are dynamically shown on the form with several radio buttons at the side of each item.
The user can tick certain radio buttonss at the side of each item and click the send button.

TRYING TO ACHIEVE...
After the form is sent a thank you message is returned on the same page with details of the items and what radios were ticked.
An Email of the same is sent to user with info of the items and what radios were ticked.
An Email is also sent to me with same info of the items and what radios were ticked.

WHAT I AM ACHIEVING SO FAR WITH CODE BELOW:

The form page is ok showing all users items, radios, send button etc.
The returned thank you page is fine showing items, what radios were checked etc.
Even the email part is working sending an email to the user and myself.

THE PROBLEM IS THAT A SEPERATE EMAIL IS SENT TO BOTH OF US FOR EACH ITEM THE USER HAS IN THE DATABASE.
I JUST WANT ONE EMAIL SENDING TO BOTH OF US DETAILING ALL ITEMS.

I realise this is because of the while statement in the call to the database which is looping the below code for each item thus sending an email for each item.

What I can not suss out is how to send just the one email with all items on.
Tried moving the closing loop bracket all over the place and parts of the code but to not avail.

THE CODE: (some unecessary code removed from echo/thank you to simplify)
<table width="100%">
<tr>
<td class="bodytext"><strong>Name</strong></td>
<td class="bodytext"><strong>Ref</strong></td>
<td><strong>Status</strong></td>
<td><strong>Type</strong></td>
<td><strong>Date</strong></td>
<td><strong>Extend</strong></td>
<td><strong>Feature</strong></td>
<td><strong>Offer</strong></td>
</tr>

<form action="example-this-page" method="post">
<input type="hidden" name="action" value="0">
<input type="hidden" name="id" value="<?php echo $_REQUEST["id"]; ?>">

<?php
$sql = "SELECT * FROM ".$TABLES["items"]." WHERE user_id='".$_SESSION["UserAccount"]."'";
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);

while ($ITEMS = mysql_fetch_assoc($sql_result)) {

$sql = "SELECT * FROM ".$TABLES["users"]." WHERE id='".$ITEMS["user_id"]."'";
$sql_resultT = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);

$USER=mysql_fetch_assoc($sql_resultT);

?>

<? if (isset($action)) {

$to = $USER["email"];
$mailheader = "From: $email\r\n";
$mailheader .= "Reply-To: $email\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$msg =

"Dear ".stripslashes($USER["name"])."<br><br>
<table><tr>
<td><strong>Name</strong></td>
<td><strong>Ref No</strong></td>
<td><strong>Status</strong></td>
<td><strong>Type</strong></td>
<td><strong>Date</strong></td>
<td><strong>Extend</strong></td>
<td><strong>Feature</strong></td>
<td><strong>Offer</strong></td>
</tr>
<tr>
<td>".stripslashes($ITEMS["name"])."</td>
<td>".stripslashes($ITEMS["ref"])."</td>
<td>".stripslashes($ITEMS["status"])."</td>
<td>".stripslashes($ITEMS["type"])."</td>
<td>".stripslashes($ITEMS["date"])."</td>
<td>".$_POST['extend']."</td>
<td>".$_POST['feature']."</td>
<td>".$_POST['offer']."</td>
</tr>
</table>
";

mail($to, "subject", $msg, $mailheader) or die ("Failure");
mail("me@me.co.uk", "subject", $msg, $mailheader) or die ("Failure");

echo
"<br /><br /><font size=2>
<strong><center>Thank you!</center><br />
Your details of your request has been sent:</center><br />
";

};

?>

<tr>
<td><?php echo stripslashes($ITEMS["name"]); ?></td>
<td><?php echo stripslashes($ITEMS["ref"]); ?></td>
<td><?php echo stripslashes($ITEMS["status"]); ?></td>
<td><?php echo stripslashes($ITEMS["type"]); ?></td>
<td><?php echo stripslashes($ITEMS["date"]); ?></td>

<td><input type="radio" name="extend<?php echo stripslashes($ITEMS["id"]); ?>" value="No"> No
<input type="radio" name="extend<?php echo stripslashes($ITEMS["id"]); ?>" value="Yes" /> Yes</td>
<td><input type="radio" name="featured<?php echo stripslashes($ITEMS["id"]); ?>" value="No"> No
<input type="radio" name="featured<?php echo stripslashes($ITEMS["id"]); ?>" value="Yes" /> Yes</td>
<td><input type="radio" name="latedeal<?php echo stripslashes($ITEMS["id"]); ?>" value="No"> No
<input type="radio" name="latedeal<?php echo stripslashes($ITEMS["id"]); ?>" value="Yes" /> Yes</td>
</tr>

<?php } ?>

<tr>
<td>&nbsp;<input type="submit" name="Submit" value="Send"></td>
</tr></table>


</form>

</table>

 

rocknbil

WebmasterWorld Senior Member rocknbil us a WebmasterWorld Top Contributor of All Time 10+ Year Member



 
Msg#: 4204029 posted 5:12 am on Sep 20, 2010 (gmt 0)

Broken down, this is your problem.

while ($ITEMS = mysql_fetch_assoc($sql_result)) {

// Send email

}

What you need to do is collect all the items in a variable and email once at the end.

$myitems=null;
while ($ITEMS = mysql_fetch_assoc($sql_result)) {

$myitems .= "<tr><td>DATA HERE</td></td></tr>";

}

Now, IF there are items, add the header and output. I know this seems like overhead, but it's not, it's good error checking. :-)

if ($myitems) {
$myitems = "TABLE AND HEADERS $myitems";
// Now you have a chunk for output AND email
// output email
// output response.
exit;
}
else { echo "Oops that didn't quite work out, no items . . . "; }

Global Options:
 top home search open messages active posts  
 

Home / Forums Index / Code, Content, and Presentation / Databases
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved