By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,963 Members | 1,778 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,963 IT Pros & Developers. It's quick & easy.

Looping through arrays

P: 41
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]
<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>

[/html]

[php]

<?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

?>

[/php]



[php]

/***********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 />';
}
[/php]


/*****---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
Apr 21 '07 #1
Share this Question
Share on Google+
1 Reply


P: 41
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]
<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>

[/html]

[php]

<?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

?>

[/php]



[php]

/***********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 />';
}
[/php]
Apr 22 '07 #2

Post your reply

Sign in to post your reply or Sign up for a free account.