$ _POST Değişkenler döngü

3 Cevap php

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'] . "'/>";

. Ben çok şey gibi düğmesi aksiyon istiyor olabilir whichis edit_category ve 1,2 veya 3 kategori id ki ben bu değerlere döngü istiyorum:

if(isset($_POST) == 'edit_category'))
{
    //code here
}

Birisi bu şekilde yapmamı önerdi:

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!

3 Cevap

Burada ne yapardım:

Gerçek formu için, ben eylem ve ilgili id ​​bilgi iletişim kurmak için dizi tuşlarını kullanmak istiyorum.

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

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

yayınlanmıştır sonra, ben yapabilirim:

<?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: her () hakkında daha fazla bilgi için, buraya gidin: http://us2.php.net/each. Şahsen her zaman düğme etiketi ve 's değeri arasındaki farklılaşmaya' nin eksikliği sinir bozucu olduğunu hissettim. Düğmesi içine bilgi şeyler için bir dizi anahtarı kullanarak her zaman benim en sevdiğim hack olmuştur.

Bu deneyebilirsiniz:

foreach ($_POST AS $key=>$value) {
    if (strpos($key, 'submit_edit_category_') !== false) {
        $catID = (int)str_replace('submit_edit_category_', '', $key);
        echo 'Category ID: ' . $catID . '<br />';
    }
}

Bunu için bir isim inşa biçimini değiştirmek istiyorum:

submit__edit_category__1

Daha sonra, bu deneyin:


function filter_by_submit($var)
{
    return stripos($var, "submit") !== false ? true : false;
}

$submits = array_filter(array_keys($_POST), "filter_by_submit");
foreach ($submits as $sub)
{
    if ($_POST[$sub] == "Edit")
    {
        list($submit, $action, $id) = explode("__", $sub);  
        break;
    }
}

$submit dizesini yapacak "submit". $action "edit_category" yapacak ve $id basılı düğmeye id yapacak. Basılan buton etiketinin değerine değerini eşleştirerek belirlenir (submit__edit_category__1 basıldığında, yani, değer "Edit" POSTed edilir).