2011-01-17 2 views
8

मैं सरणी स्वरूपित HTML इनपुट नामों का उपयोग करने की मूल बातें समझता हूं। अगर मैं 'आइटम' आदानों की एक चर संख्या के साथ एक रूप था मैं उनमें से प्रत्येक के लिए कुछ इस तरह कर सकते हैं:मैं अपने एचटीएमएल फॉर्म में सरणी प्रारूप इनपुट फ़ील्ड नामों का उपयोग कैसे कर सकता हूं जो PHP पर पोस्ट करते हैं?

<input name='item[]' type='text' /> 

और जब मैं $ _POST सरणी से आइटम पुनर्प्राप्त मैं बहुत की तरह उन पर पुनरावृति सकता है :

$items = $_POST['item']; 
foreach($items as $item) { 
} 

लेकिन मेरा प्रश्न थोड़ा और जटिल है। मेरे पास एक ऐसा फॉर्म है जहां उपयोगकर्ता "एक जोड़ें" बटन पर क्लिक कर सकते हैं और फ़ॉर्म की निचली संख्या में एक नई पंक्ति दिखाई देगी। प्रत्येक नई पंक्ति में 'नाम' और 'विवरण' इनपुट होता है।

तो शुरू में मैंने सोचा कि मैं इस करना होगा:

<input name='item[name][]' type='text' /> 
<input name='item[description][]' type='text' /> 

और फिर तो जैसे उन पर पुनरावृति:

$items = $_POST['item']; 
foreach($items as $item) { 
    print $item['name'] . ' ' . $item['description']; 
} 

लेकिन बजाय के रूप में मैं आशा व्यक्त की काम कर रहा है, यह बजाय 'आइटम' संरचनाओं की सरणी जैसे कि मैं $item[0]['name'] के बजाय पहले आइटम नाम को $item['name'][0] के रूप में एक्सेस करूंगा।

तो फिर मैं इसे फ़्लिप ताकि मेरे आदानों जैसे नाम थे:

<input name='item[][name]' type='text' /> 
<input name='item[][description]' type='text' /> 

लेकिन यह प्रत्येक 'नाम' के लिए एक अलग 'आइटम' में और प्रत्येक 'विवरण' के बजाय प्रत्येक जोड़ी के समूहीकरण के लिए हुई एक 'आइटम' में।

मैं वास्तव में 'नाम' के सरणी और 'विवरण' की अलग सरणी को नापसंद करता हूं। मैं प्रत्येक आइटम के साथ 'आइटम' और 'विवरण' फ़ील्ड वाले 'आइटम' के सरणी पसंद करूंगा। क्या मेरे जावास्क्रिप्ट में एक इंडेक्स उत्पन्न किए बिना इसे पूरा करने का कोई तरीका है? चूंकि लोग इन गतिशील रूप से जोड़ और निकाल सकते हैं क्योंकि मेरे जावास्क्रिप्ट के लिए अगले आइटम के लिए उपयुक्त इंडेक्स की गणना करना बहुत मुश्किल है। क्या यह सामान्य रूप से करने का कोई तरीका नहीं है?

+0

क्या एक होने के बारे में इतना बुरा है 'name' की सरणी और 'विवरण' की सरणी? - आप बाद में उन्हें एक साथ वापस टुकड़ा कर सकते हैं। –

+2

@ मार्क ई: मेरे पास जुनूनी बाध्यकारी विकार है और यह वास्तव में, वास्तव में मुझे उस बिंदु पर बग करता है जहां मैं बस इसके चारों ओर अपना रास्ता हैक करने में असमर्थ हूं और आगे बढ़ता हूं। मेरे सभी अन्य सरणी (उदाहरण के लिए डेटाबेस से) पंक्ति सूचकांक पहले आयाम और संपत्ति के नाम के रूप में दूसरे हैं। – fumplr

+2

अच्छी तरह से आपकी नामकरण समस्या को दूर करने का एकमात्र तरीका खाली ब्रैकेट में संख्याएं रखना है, जो उपलब्ध विकल्पों में से सबसे खराब लगता है, आपको नहीं लगता? –

उत्तर

8

यह तुम क्या चाहते करने के लिए संभव नहीं है, लेकिन अगर यह मदद करता है, यहाँ यह टुकड़ा करने के लिए कुछ कोड वापस एक साथ मुझे लगता है कि (item_name[] और item_description[] के साथ) काम करता रहेगा:

$items_desc = $_POST["item_description"]; 
$items_name = $_POST["item_name"]; 
$items = array(); 
for ($i = 0; $i < count($items_name); $i++) 
{ 
    $items[] = array("name" => $items_name[$i], "description" => $items_desc[$i]); 
} 
+1

ने आपके कोड ब्लॉक पर प्रारूप बटन का उपयोग किया क्योंकि यह आपके 'pre' टैग के साथ ठीक से नहीं आ रहा था। आशा है कि आप दिमाग में नहीं हैं। – prodigitalson

+0

धन्यवाद! मुझे वास्तव में कोड को ठीक तरह से पोस्ट करने के तरीके पर पढ़ना चाहिए ... –

+0

@prodigitalson इस प्रकार मॉडरेटर को कार्य करना चाहिए/व्यवहार करना चाहिए! मैं दूसरों को पहचानने के लिए इसे इंगित करता हूं! – whispers

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

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