QuickForm and multi-dimensional array names

From: Date: Wed, 07 Apr 2004 16:59:24 +0000
Subject: QuickForm and multi-dimensional array names
Groups: php.pear.general 
Request: Send a blank email to pear-general+get-11717@lists.php.net to get a copy of this message
Hello, I've got a quickform setup as a table. I wanted to setup the quickform elements to have names that are multi-dimensional arrays. I used a loop to generate all the elements: for ($row = 0; $row <= PhysInspct; $row++)
      {
         $this->addElement('text', 'wf_exp_data[' . $row . '][yrsExp]');
         for($col = 0; $col <= NONE; $col++)
         {
            $this->addElement('text', 'wf_exp_data[' . $row .']['
                . $col . ']');
         }
      }
This produces HTML that looks like: <tr> <td class='col1'>Welding Managememt</td><td><input name="wf_exp_data[0][yrsExp]" type="text" value="" /></td> <td> <input name="wf_exp_data[0][0]" type="text" /></td> <td><input name="wf_exp_data[0][1]" type="text" /></td> <td><input name="wf_exp_data[0][2]" type="text" /></td> <td><input name="wf_exp_data[0][3]" type="text" /></td> <td><input name="wf_exp_data[0][4]" type="text" /></td> <td><input name="wf_exp_data[0][5]" type="text" /></td> <td><input name="wf_exp_data[0][6]" type="text" /></td> <td><input name="wf_exp_data[0][7]" type="text" /></td> </tr> <tr> <td class='col1'>Supervisor</td><td><input name="wf_exp_data[1][yrsExp]" type="text" /></td> <td><input name="wf_exp_data[1][0]" type="text" value="" /></td> <td><input name="wf_exp_data[1][1]" type="text" /></td> <td><input name="wf_exp_data[1][2]" type="text" /></td> <td><input name="wf_exp_data[1][3]" type="text" /></td> <td><input name="wf_exp_data[1][4]" type="text" /></td> <td><input name="wf_exp_data[1][5]" type="text" /></td> <td><input name="wf_exp_data[1][6]" type="text" /></td> <td><input name="wf_exp_data[1][7]" type="text" /></td> </tr> I wanted to end up, after form submission with something that looked like: ["wf_exp_data"] => Array(12) {
    [0]=>
    array(9) {
      ["yrsExp"]=>
      string(0) ""
      [0]=>
      string(0) ""
      [1]=>
      string(0) ""
      [2]=>
      string(0) ""
      [3]=>
      string(0) ""
      [4]=>
      string(0) ""
      [5]=>
      string(0) ""
      [6]=>
      string(0) ""
    }
    [1]=>
    array(9) {
      ["yrsExp"]=>
      string(0) ""
      [0]=>
      string(0) ""
      [1]=>
      string(0) ""
      [2]=>
      string(0) ""
      [3]=>
      string(0) ""
      [4]=>
      string(0) ""
      [5]=>
      string(0) ""
      [6]=>
      string(0) ""
    }
/* etc */ } What I actually ended up with is something that looks like: ["wf_exp_data"]=> array(108) {
    [0]=>
    array(1) {
      ["yrsExp"]=>
      string(0) ""
    }
    [1]=>
    array(1) {
      [0]=>
      string(0) ""
    }
    [2]=>
    array(1) {
      [1]=>
      string(0) ""
    }
    [3]=>
    array(1) {
      [2]=>
      string(0) ""
    }
    [4]=>
    array(1) {
      [3]=>
      string(0) ""
    }
    [5]=>
    array(1) {
      [4]=>
      string(0) ""
    }
    [6]=>
    array(1) {
      [5]=>
      string(0) ""
    }
    [7]=>
    array(1) {
      [6]=>
      string(0) ""
    }
    [8]=>
    array(1) {
      [7]=>
      string(0) ""
    }
    [9]=>
    array(1) {
      ["yrsExp"]=>
      string(0) ""
    }
    [10]=>
    array(1) {
      [0]=>
      string(0) ""
    }
    [11]=>
    array(1) {
      [1]=>
      string(0) ""
    }
    [12]=>
    array(1) {
      [2]=>
      string(0) ""
    }
    [13]=>
    array(1) {
      [3]=>
      string(0) ""
    }
    [14]=>
    array(1) {
      [4]=>
      string(0) ""
    }
    [15]=>
    array(1) {
      [5]=>
      string(0) ""
    }
    [16]=>
    array(1) {
      [6]=>
      string(0) ""
    }
    [17]=>
    array(1) {
      [7]=>
      string(0) ""
    }
    [18]=>
    array(1) {
      ["yrsExp"]=>
      string(0) ""
    }
    [19]=>
    array(1) {
      [0]=>
      string(0) ""
    }
    [20]=>
    array(1) {
      [1]=>
      string(0) ""
    }
    [21]=>
    array(1) {
      [2]=>
      string(0) ""
    }
    [22]=>
    array(1) {
      [3]=>
      string(0) ""
    }
    [23]=>
    array(1) {
      [4]=>
      string(0) ""
    }
    [24]=>
    array(1) {
      [5]=>
      string(0) ""
    }
    [25]=>
    array(1) {
      [6]=>
      string(0) ""
    }
    [26]=>
    array(1) {
      [7]=>
      string(0) ""
    }
    /* etc */
} Any suggestions on how to get what I actually want?

Attachment: [application/pgp-signature] OpenPGP digital signature signature.asc
« previous php.pear.general (#11717) next »