tpclarke2 Posted July 20, 2007 Share Posted July 20, 2007 Here's the situation: User goes to page which is a form that asks for some basic info regarding returning products for credit/exchange, and also asks for how many products are going to be returned. Upon submitting, a return authorization form is presented to them with the specified number of product fields. I now want to take the input from this form and email it to myself, as well as, display a confirmation page to the user. The problem I have is a can't say, for instance, echo "$field_name"; because field_name will get created dynamically after the user specifies how many products to return. For example, say the user says 5 products, this will generate a form with field names like: return_code0 inv_num0 qty0 product0 cre_exch0 stockout0 return_code1 inv_num1 qty1 product1 cre_exch1 stockout1 return_code2 inv_num2 qty2 product2 cre_exch2 stockout2 and so on.... These get created with a for() loop. Once this form is submitted, how can I address the field names? Here's my code so far, any help would be greatly appreciated! if (!$num_prods){ <form action='$PHP_SELF' method='POST'> <table border='1' cellspacing='0' cellpadding='2'> <tr><td align='right' nowrap>Your Name: </td> <td><input type='text' name='rep' size='30' maxlength='30'></td> <td align='right' nowrap>Salon Name: </td> <td><input type='text' name='sname' size='30' maxlength='30'></td></tr> <tr><td align='right' nowrap>Contact: </td> <td><input type='text' name='contact' size='30' maxlength='30'></td> <td align='right' nowrap>Order Date (mm-dd-yy): </td> <td><input type='text' name='date' size='10' maxlength='8'></td></tr> <tr><td align='right' nowrap>Order #: </td> <td><input type='text' name='ord_num' size='10' maxlength='10'></td> <td align='right' nowrap>Account #: </td> <td><input type='text' name='acct_num' size='10' maxlength='6'></td></tr> <tr><td align='right' nowrap>Number of Products: </td> <td><input type='text' name='num_prods' size='3' maxlength='2'></td> <td colspan='2'><input type='submit' name='submit' value='submit'></td></tr> </table></div>"; exit; } if ($num_prods >= '1' && !$complete){ <form action='$PHP_SELF' method='POST'> <input type='hidden' name='complete' value='true'> <input type='hidden' name='num_prods' value='$num_prods'> <input type='hidden' name='rep' value='$rep'> <input type='hidden' name='sname' value='$sname'> <input type='hidden' name='contact' value='$contact'> <input type='hidden' name='date' value='$date'> <input type='hidden' name='ord_num' value='$ord_num'> <input type='hidden' name='acct_num' value='$acct_num'> <table border='1' cellspacing='0' cellpadding='2' width='100%'> <tr> <td nowrap align='center'>Return Code</td><td nowrap align='center'>Invoice #</td> <td nowrap align='center'>Qty</td><td nowrap align='center'>Product Description (include size)</td> <td nowrap align='center'>Credit/Exchange</td><td nowrap align='center'>Stockout?</td></tr>"; for ($i = 0; $i < $num_prods; $i++){ echo "<tr> <td align='center'><select name='return_code$i'> <option value=''>Select...</option> <option value='1'>Shipping Error</option> <option value='2'>DSC Error</option> <option value='3'>CSR Error</option> <option value='4'>Customer Return</option> <option value='5'>Overstock</option> <option value='6'>Damaged</option></select></td> <td align='center'><input type='text' name='inv_num$i' size='10' maxlength='10'></td> <td align='center'><input type='text' name='qty$i' size='3' maxlength='3'></td> <td align='center'><input type='text' name='product$i' size='50' maxlength='30'></td> <td align='center'><select name='cred_exch$i'> <option value=''>Select...</option> <option value='C'>Credit</option> <option value='E'>Exchange</option></select></td> <td align='center'><select name='stockout$i'> <option value=''>Select...</option> <option value='Y'>Yes</option> <option value='N'>No</option></select></td></tr>"; } echo "</table><br/><input type='submit' name='submit' value='submit'></form>"; do_html_footer(); exit; } if ($num_prods && $complete){ $recipient = "[email protected]"; $subject = "RA Form for order add-on"; $mailheaders = "From: $rep\n"; $msg = "--------------------------------------------------------------------\n"; $msg .= "$rep needs to add credits/exchanges to an existing order. Here's the info:\n"; $msg .= "-------------------------------------------------------------------\n"; $msg .= "Order #: $ord_num\n"; $msg .= "Account: $acct_num\n"; $msg .= "Salon: $sname\n"; $msg .= "Contact: $contact\n"; $msg .= "Date: $date\n"; $msg .= "-------------------------------------------------------------------\n"; for ($i = 0; $i < $num_prods; $i++){ HERE'S WHERE THE CODE WOULD GO THAT LOOPS THROUGH THE SUBMITTED FORM AND EMAILS ME THE VALUES } $mailheaders .= "Reply-To: [email protected]\n\n"; mail($recipient, $subject, $msg, $mailheaders); echo "<div align = 'center'>Your RA Form has been submitted. Here's your copy:<p> <table border='1' cellspacing='0' cellpadding='2'> <tr><td align='center' nowrap>Reason</td> <td align='center' nowrap>Invoice #</td> <td align='center' nowrap>Qty</td> <td align='center' nowrap>Product</td> <td align='center' nowrap>Cred/Exch</td> <td align='center' nowrap>Stockout?</td></tr>"; for ($i = 0; $i < $num_prods; $i++){ HERE IS WHERE THE CODE WOULD GO TO LOOP THE SUBMITTED FORM AND DISPLAY A CONF PAGE FOR THE USER } echo "</table></p></div>"; do_html_footer(); exit; } ?> Link to comment https://forums.phpfreaks.com/topic/61039-identifying-dynamic-form-fields/ Share on other sites More sharing options...
ss32 Posted July 21, 2007 Share Posted July 21, 2007 make a hidden field that tells you how many fields that there were, and then loop through them using the $_POST['return_code' + $i] sort of thing. its not that hard, if i understand your code directly. <?php for ($i = 0; $i <= $_POST['num_of_fields']; $i++) { msg .= "return code: " . $_POST['return_code' . $i] . "\r\n"; //and the rest... } ?> Link to comment https://forums.phpfreaks.com/topic/61039-identifying-dynamic-form-fields/#findComment-303817 Share on other sites More sharing options...
tpclarke2 Posted July 22, 2007 Author Share Posted July 22, 2007 Thank you very much! That worked perfectly. I knew I needed to concatenate a hard coded field name with the variable $i somewhere, just couldn't figure out how to do it. Thanks again. Link to comment https://forums.phpfreaks.com/topic/61039-identifying-dynamic-form-fields/#findComment-304453 Share on other sites More sharing options...
Barand Posted July 22, 2007 Share Posted July 22, 2007 Pass the fields as arrays by appending [] to the field names <?php /** * PROCESS THE FORM DATA */ if (isset($_POST['sub'])) { foreach ($_POST['return_code'] as $k=>$return_code) { $inv_num = $_POST['inv_num'][$k]; // get other fields for same input set $qty = $_POST['qty'][$k]; $product = $_POST['product'][$k]; $cre_exch = $_POST['cre_exch'][$k]; $stockout = $_POST['stockout'][$k]; // process this input record echo "$return_code, $inv_num, $qty, $product, $cre_exch, $stockout <br />"; } } /** * THE FORM */ $howMany = 5; // requested by user echo '<form method="post">'; echo '<table>'; echo '<tr> <th>Return code</th> <th>Inv num</th> <th>Qty</th> <th>Product</th> <th>CRE exch</th> <th>Stockout</th> </tr>'; for ($i=0; $i<$howMany; $i++) { echo '<tr> <th><input type="text" name="return_code[]" size="5"></th> <th><input type="text" name="inv_num[]" size="5"></th> <th><input type="text" name="qty[]" size="5"></th> <th><input type="text" name="product[]" size="5"></th> <th><input type="text" name="cre_exch[]" size="5"></th> <th><input type="text" name="stockout[]" size="5"></th> </tr>'; } echo '</table>'; echo '<input type="submit" name="sub" value="Submit">'; echo '</form>' ?> Link to comment https://forums.phpfreaks.com/topic/61039-identifying-dynamic-form-fields/#findComment-304527 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.