Jump to content

[SOLVED] Looping through arrays


assgar

Recommended Posts

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

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

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 />';
      }

 

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.