2010-02-14 14 views
6

क्षमा करें मुझे इस प्रश्न का उचित शीर्षक नहीं मिला। पाश के लिए एक और मैं नीचे पद्धति का उपयोग कर प्रविष्टियों पर बटन के नाम concatenated है मैं जेनरेट किया है का उपयोग करते हुए निम्नलिखित: 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'] . "'/>"; 

मैं इन मूल्यों के माध्यम से लूप करना चाहते हैं ताकि मैं बटन कार्रवाई whichis edit_category और श्रेणी आईडी है जो 1,2 या 3. मैं चाहता हूँ के लिए इतना कुछ की तरह:

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

मुझे किसी ने सुझाव दिया कि यह इस तरह करना है:

+०१२३५१६४१०६
name="submit[which_action][which_category]" 
a1 = $_POST['submit']; 
$which_action = reset(array_keys($a1)); 
$which_category = reset(array_keys($a1[$which_action])); 

यह काम नहीं लग रहा है..क्या कोई मुझे ऐसा करने का एक अलग तरीका दे सकता है? धन्यवाद!

उत्तर

17
यहाँ

मुझे क्या करना चाहते हैं।

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

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

फिर जब पोस्ट, मैं कर सकते हैं:

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

संपादित करें: प्रत्येक बारे में अधिक जानकारी() के लिए, यहां जाएं: http://us2.php.net/each। मैंने व्यक्तिगत रूप से हमेशा महसूस किया है कि बटन लेबल और उसके मूल्य के बीच भिन्नता की कमी निराशाजनक है। बटन में जानकारी रखने के लिए एक सरणी कुंजी का उपयोग करना हमेशा मेरा पसंदीदा हैक रहा है।

24

यूपीडी: कृपया, माइक की सलाह का उपयोग करें। पोस्ट में अधिक संरचित डेटा रखना बेहतर है। वास्तविक रूप के लिए

, मैं कार्रवाई और प्रासंगिक आईडी की जानकारी संवाद करने के लिए सरणी कुंजी का उपयोग करेंगे:

foreach($_POST as $key => $val) { 
    if(strpos($key, 'submit_edit_category_') === 0) { 
    print $key.' => '.$val.'\r\n'; 
    print substr($key, 21 /* or 22... or 23... try yourself */); 
    } 
} 
+2

+1, मुझे एहसास हुआ कि $ _POST वास्तव में एक सरणी है! – Aris

+5

जैसा कि मैंने यहां देखा है, मेरे जवाब में माइक की तुलना में बेहतर रेटिंग है। लेकिन यह उचित नहीं है :) माइक इसे करने का सही तरीका दिखाता है। आपका पोस्ट डेटा अधिक संरचित होना चाहिए और यदि आपका डेटा सरणी है, तो यह पोस्ट में भी एक सरणी होनी चाहिए। – Adelf

+0

@Adelf अपनी पोस्ट – Artiom

2

आप इस कोशिश कर सकते हैं:

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

मैं यह करने के लिए जिस तरह से आप नाम का निर्माण बदल देंगे: फिर

submit__edit_category__1

, इस प्रयास करें:


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 स्ट्रिंग "submit" का आयोजन करेगा। $action"edit_category" और $id दबाएगा दबाए गए बटन की आईडी रखेगा। दबाए गए बटन को उसके मान को टैग के मान से मेल करके निर्धारित किया जाता है (यानी, submit__edit_category__1 दबाया जाता है, मान "Edit" पोस्ट किया जाता है)।

+0

की शुरुआत में इसे जोड़ना बेहतर होगा यदि मेरे पास अन्य विवरण जैसे संपादन विवरण और संपादन से अलग हटाएं तो क्या होगा? – chupinette

+0

आप कार्रवाई और मान से मेल खाने के बजाय स्विच {...} का उपयोग कर सकते हैं। –

संबंधित मुद्दे