I have an order line INSERT that I want to iterate through as many as 15 separate "order line items", but I'm not sure how to build my code to iterate cleanly through all the possible lines. The requirements:
1) I will check for at least one order line (from any camper) in the validation of the previous page's form. Don't need to worry about that here.
2) Every camper need not to have an order line. In the page's initial $_POST array below, camper[1] does not have any order lines.
3) I check for an isset() before processing an order line.
4) I have to assign two variables from the session ID because I use two instances in the processing loop.
Now, my code manages 6 loops. Not enough. And very clumsy. I can't do this 15 times! Please help,
Karl
$_POST Array( [Camper_0_PK] => 490 [Camper_0_Session_1_List] => 3 [Camper_0_Session_2_List] => 3 [Camper_0_Session_3_List] => [Camper_1_PK] => 491 [Camper_1_Session_1_List] => [Camper_1_Session_2_List] => [Camper_1_Session_3_List] => [Marketing_FreeText] => [Marketing_CouponCode] => [SessionRegSubmit] => Submit)Current order line processing code:// process order line items insert // TODO: figure out how to make this into an iterating loop if (isset($_POST['Camper_0_Session_1_List'])){ // must retrieve the program FK for the selected session $SessionPK = $_POST['Camper_0_Session_1_List']; $OrderLISessionFK = $_POST['Camper_0_Session_1_List']; $OrderLICamperFK = $_POST['Camper_0_PK']; // run through line item insert require ('panels/panel.order_line_item_insert.php'); } if (isset($_POST['Camper_0_Session_2_List'])){ // must retrieve the program FK for the selected session $SessionPK = $_POST['Camper_0_Session_2_List']; $OrderLISessionFK = $_POST['Camper_0_Session_2_List']; $OrderLICamperFK = $_POST['Camper_0_PK']; // run through line item insert require ('panels/panel.order_line_item_insert.php'); } if (isset($_POST['Camper_0_Session_3_List'])){ // must retrieve the program FK for the selected session $SessionPK = $_POST['Camper_0_Session_3_List']; $OrderLISessionFK = $_POST['Camper_0_Session_3_List']; $OrderLICamperFK = $_POST['Camper_0_PK']; // run through line item insert require ('panels/panel.order_line_item_insert.php'); } // process order line items insert if (isset($_POST['Camper_1_Session_1_List'])){ // must retrieve the program FK for the selected session $SessionPK = $_POST['Camper_1_Session_1_List']; $OrderLISessionFK = $_POST['Camper_1_Session_1_List']; $OrderLICamperFK = $_POST['Camper_1_PK']; // run through line item insert require ('panels/panel.order_line_item_insert.php'); }...and so on...
Just because the index is typically a constant string, that's not required. You can build it. Coming from C, I tend to use common functions to both, such as sprintf().
We can have variables for the camper # and the session # which can be controlled by while loops or other means.
Yes, quite simple. Just make the index as a string, then process against it. I'll give it a try. Anyone else with suggestions for processing this?
0
Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.
Okay, I've rewritten the code and it works clean with two FOR loops:
// process order line items insert; up to 5 campers and 3 line items per order for ($i = 0; $i < 4; $i++) { $camperIndex = "Camper_" .$i ."_PK"; for ($j = 1; $j < 4; $j++) { $sessionIndex = "Camper_" .$i ."_Session_" .$j ."_List"; // test if session is selected if (!empty($_POST[$sessionIndex])){ // retrieve the program FK for the selected session // two separate sessionIndex variables will be used in the insert loop $SessionPK = $_POST[$sessionIndex]; $OrderLISessionFK = $_POST[$sessionIndex]; $OrderLICamperFK = $_POST[$camperIndex]; // run through order line item insert require ('panels/panel.order_line_item_insert.php'); } } // end session list iteration } // end camper iteration
Thanks for the points. We can certainly help you with how to use any of the keyword operations if you help. Loops, if/then, etc., are "bread and butter" to a lot of programmers and I expect hundreds if not thousands of experts on EE can help you with those concepts.
If you still need help with for loops, just ask. If you need help with any other keyword concepts, just ask.
0
Question has a verified solution.
Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.
Open in new window
This is most likely a better practice than my sprintf() approach. Old habits are hard to break.