Looping through $_POST variables

mysql, php

Solution

here what I'd do:

for the actual form, I'd use array keys to communicate action and relevant id info.

$cat_id =  $obj_categories_admin->categories[$i]['category_id'];

echo "<input type='submit' value = 'Edit' name='submit[edit_category][" . $cat_id . "]'/>";

then when posted, I can do:

<?php

list($action, $action_params) = each($_POST['submit']);
list($cat_id, $button_label) = each($action_params);

print_r($_POST['submit']); // prints array('edit_category' => array('1' => 'Edit'))
echo($action); //prints "edit_category"
print_r($action_params); //prints array('1' => 'Edit')
echo($cat_id); //prints "1"
echo($button_label); //prints "Edit"

edit: for more info on each(), go here: https://www.php.net/each . I've personally always felt that 's lack of differentation between the button label and the it's value to be frustrating. Using an array key to stuff info into the button has always been my favorite hack.

Problem

Sorry i could not find a proper title to this question. I have generated the following using a for loop and I have concatenated the names of the submits buttons using the pattern below: submit_edit_category_1 submit_edit_category_2 submit_edit_category_3 ``` echo "<input type='submit' value = 'Edit' name='submit_edit_category_" . $obj_categories_admin->categories[$i]['category_id'] . "'/>"; ``` I want to loop through these values so that I can the button action whichis edit_category and the category id which is 1,2 or 3. I want to so something like: ``` if(isset($_POST) == 'edit_category')) { //code here } ``` Someone suggested me to do it this way: ``` name="submit[which_action][which_category]" a1 = $_POST['submit']; $which_action = reset(array_keys($a1)); $which_category = reset(array_keys($a1[$which_action])); ``` This does not seem to work..Can anyone give me a different way to do it? Thanks!

Original source