assgar Posted April 21, 2007 Share Posted April 21, 2007 Hello I have changed the process code abit so it receives the data from the form and ensures the data in array format. This has eliminated my previous error. The problem I am experiencing is the looping is not displaying the all contents of the arrays. Do you have any idea what the problem is and how to fix the problem? <html> <head></head> <body> <!-----------------------form processor----------------------------> <form action="../common_list_process.php" method="post"> <table> <tr> <td> <input type="submit" name="fee_button" value="Submit" style="color: #ff6600;font-weight:bold; margin-right: 5;"/> </td> </tr> </table> <?php display();//display form selection and input boxes ?> </form> </body> </html> <?php /***------------display function------------**/ //display form selection and input boxes function display() { $op = array();//create empty array /****This form consist of multiple rows like this****/ echo "<table>\n"; echo "<tr height=\"10\">\n"; echo "<td width=\"9%\" bgcolor=\"#fff8dc\" align=\"\"><span class=\"style15\"> <input type=\"checkbox\" name=\"choice[]\" value=\"A1\"> <span class=\"style1\" >A1</span></span></td> <td width=\"2%\" bgcolor=\"#fff8dc\" height=\"10\"> <input type=\"text\" name=\"unit[]\" size=\"1\" maxlength=\"2\" value =\"$a_unit\"/></td> <td width=\"32%\" bgcolor=\"#ebeae0\" class=\"style11\">General</td> <td width=\"2%\" bgcolor=\"#fff8dc\" height=\"10\"> <input type=\"text\" name=\"money[]\" size=\"1\" maxlength=\"2\" value =\"$money\"/></td>\n"; echo "<td width=\"9%\" bgcolor=\"#fff8dc\" align=\"\"><span class=\"style15\"> <input type=\"checkbox\" name=\"op[choice][]\" value=\"A7\"> <span class=\"style1\" >A7</span></span></td> <td width=\"2%\" bgcolor=\"#ebeae0\" height=\"10\"> <input type=\"text\" name=\"op[unit][]\" size=\"1\" maxlength=\"2\" value =\"$a_unit\"/></td> <td width=\"32%\" bgcolor=\"#ebeae0\" class=\"style11\">Intermediate</td>\n"; <td width=\"2%\" bgcolor=\"#fff8dc\" height=\"10\"> <input type=\"text\" name=\"money[]\" size=\"1\" maxlength=\"2\" value =\"$money\"/></td>\n"; echo "</tr>\n"; echo "</table>\n"; $all[] = choice; $all[] = unit; $all[] = money; return $all; } list($choice, $unit, $money) = display(); //unpack array ?> /***********common_list_process.php*************/ $fee1_choice = $_POST['choice']; if(is_array($fee1_choice )) { $fee1_choice = array_filter($fee1_choice ); } else { $fee1_choice = array("$fee1_choice "); $fee1_choice = array_filter($fee1_choice); } $fee1_unit = $_POST['unit']; if(is_array($fee1_unit)) { $fee1_unit = array_filter($fee1_unit); } else { $fee1_unit = array("$fee1_unit"); $fee1_unit = array_filter($fee1_unit); } $fee1_money = $_POST['fee_money']; if(is_array($fee1_money)) { $fee1_money = array_filter($fee1_money); } else { $fee1_money = array("$fee1_money"); $fee1_money = array_filter($fee1_money); } /*****This loops the arrays to display the array contents***/ $indices2 = array_keys($fee1_choice); foreach($indices2 as $index2) { //individual value validation from 3 arrays echo "|". $fee1_choice[$index2]; echo "|". $fee1_unit[$index2]; echo "|". $fee1_money[$index2] .'<br />'; } /*****---result of array contents--*****/ echo '<pre>',print_r ($_POST, TRUE), '</pre>';//check array values This display the selected data in the arrays [choice] => Array ( [0] => A001 [1] => A004 [2] => A008 ) [unit] => Array ( [0] => 1 [1] => [2] => 2 [3] => [4] => 3 [5] => [6] => [146] => ) [fee_money] => Array ( [0] => 17.75 [1] => [2] => 30.70 [3] => [4] => 10.25 [5] => [6] => /*****----result of loop-------*****/ |A001|1|17.75 |A004|| |A008|2|30.70 Link to comment https://forums.phpfreaks.com/topic/47976-solved-looping-through-arrays/ Share on other sites More sharing options...
chrisv Posted April 21, 2007 Share Posted April 21, 2007 Hey assgar, To be honest, I started to zone out a little while reading your code. :-) My apologies. However, you may want to look at using something like the Smarty template engine (http://smarty.php.net) to accomplish this instead. It makes things a little easier to work with. Example PHP code: <?php require('Smarty.class.php'); $smarty = new Smarty(); $smarty->template_dir = dirname(__FILE__); $smarty->compile_dir = dirname(__FILE__); $smarty->config_dir = dirname(__FILE__); $smarty->cache_dir = dirname(__FILE__); $myArray = array( 'option1' => true, 'option2' => false, 'option3' => true, ); $smarty->assign('myArray', $myArray); $smarty->display('template_file.tpl'); ?> Example Smarty template (template_file.tpl): <html> <head> <title>My first Smarty template</title> </head> <body> {foreach from=$myArray key=optionName item=isChecked} <p> <input type="checkbox" name="option[{$optionName}]" value="1" {if $isChecked}checked="checked" {/if}/> {$optionName} </p> {/foreach} </body> </html> This should yield a page with three checkboxes, two of which are checked. The groking becomes a little simpler when you're doing debugging. But of course, feel free to do it all in a single PHP script too. :-) I'm just burnt out after a long Friday to read all of it. Best of luck! Chris Link to comment https://forums.phpfreaks.com/topic/47976-solved-looping-through-arrays/#findComment-234427 Share on other sites More sharing options...
assgar Posted April 22, 2007 Author Share Posted April 22, 2007 Thanks for the suggeston. Problem Solved. Using a for loop to incement the array index syncronizes the array indexes. I think using a two-dimentional array would be better but I don't how to do that yet. This is the code that resolved the problem. <html> <head></head> <body> <!-----------------------form processor----------------------------> <form action="../common_list_process.php" method="post"> <table> <tr> <td> <input type="submit" name="fee_button" value="Submit" style="color: #ff6600;font-weight:bold; margin-right: 5;"/> </td> </tr> </table> <?php display();//display form selection and input boxes ?> </form> </body> </html> <?php /***------------display function------------**/ //display form selection and input boxes function display() { $op = array();//create empty array /****This form consist of multiple rows like this****/ echo "<table>\n"; for($i=0; $i < 4; $i++) { echo "<tr height=\"10\">\n"; echo "<td width=\"9%\" bgcolor=\"#fff8dc\" align=\"\"><span class=\"style15\"> <input type=\"checkbox\" name=\"choice[$i]\" value=\"A1\"> <span class=\"style1\" >A1</span></span></td> <td width=\"2%\" bgcolor=\"#fff8dc\" height=\"10\"> <input type=\"text\" name=\"unit[$i]\" size=\"1\" maxlength=\"2\" value =\"$a_unit\"/></td> <td width=\"32%\" bgcolor=\"#ebeae0\" class=\"style11\">General</td> <td width=\"2%\" bgcolor=\"#fff8dc\" height=\"10\"> <input type=\"text\" name=\"money[$i]\" size=\"1\" maxlength=\"2\" value =\"$money\"/></td>\n"; echo "<td width=\"9%\" bgcolor=\"#fff8dc\" align=\"\"><span class=\"style15\"> <input type=\"checkbox\" name=\"choice[$i]\" value=\"A7\"> <span class=\"style1\" >A7</span></span></td> <td width=\"2%\" bgcolor=\"#ebeae0\" height=\"10\"> <input type=\"text\" name=\"unit[$i]\" size=\"1\" maxlength=\"2\" value =\"$a_unit\"/></td> <td width=\"32%\" bgcolor=\"#ebeae0\" class=\"style11\">Intermediate</td>\n"; <td width=\"2%\" bgcolor=\"#fff8dc\" height=\"10\"> <input type=\"text\" name=\"money[$i]\" size=\"1\" maxlength=\"2\" value =\"$money\"/></td>\n"; echo "</tr>\n"; } echo "</table>\n"; $all = array(); $all[] = 'choice'; $all[] = 'unit'; $all[] = 'money'; return $all; } list($choice, $unit, $money) = display(); //unpack array ?> /***********common_list_process.php*************/ $fee1_choice = $_POST['choice']; if(is_array($fee1_choice )) { $fee1_choice = array_filter($fee1_choice ); } else { $fee1_choice = array("$fee1_choice "); $fee1_choice = array_filter($fee1_choice); } $fee1_unit = $_POST['unit']; if(is_array($fee1_unit)) { $fee1_unit = array_filter($fee1_unit); } else { $fee1_unit = array("$fee1_unit"); $fee1_unit = array_filter($fee1_unit); } $fee1_money = $_POST['fee_money']; if(is_array($fee1_money)) { $fee1_money = array_filter($fee1_money); } else { $fee1_money = array("$fee1_money"); $fee1_money = array_filter($fee1_money); } /*****This loops the arrays to display the array contents***/ $indices2 = array_keys($fee1_choice); foreach($indices2 as $index2) { //individual value validation from 3 arrays echo "|". $fee1_choice[$index2]; echo "|". $fee1_unit[$index2]; echo "|". $fee1_money[$index2] .'<br />'; } Link to comment https://forums.phpfreaks.com/topic/47976-solved-looping-through-arrays/#findComment-235414 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.