2009-11-12 17 views
11

से बहु-आयामी सरणी पोस्ट मैं जानना चाहता हूं कि मैं बहु-आयामी सरणी कैसे पोस्ट कर सकता हूं?फॉर्म

मूल रूप से मैं एक उपयोगकर्ता और चयनित उपयोगकर्ता का चयन करने के पोस्ट करने के लिए भेजा करने के लिए ईमेल और नाम होगा चाहते हैं।

तो 100 उपयोगकर्ताओं का चयन करने के लिए, ईमेल और नाम होगा। मैं

$_POST['users'] = array(
    array(name, email), 
    array(name2, email2), 
    array(name3, email3) 
); 

कोई भी विचार जैसे PHP में प्राप्त करना चाहता हूं?

+0

संबंधित: http://stackoverflow.com/questions/1548159/php-how-to-send-an-array-to-another-page/1548193#1548193 – cregox

उत्तर

30

आप इस तरह अपने प्रपत्र तत्वों नाम कर सकते हैं:

<input name="users[1][name]" /> 
<input name="users[1][email]" /> 
<input name="users[2][name]" /> 
<input name="users[2][email]" /> 
... 

आप अंदाजा हो ...

+2

उपयोगकर्ताओं के बारे में [] [name], क्या मैं आईडी (1, 2 ..) सेट करना है? – Basit

+3

नहीं। आप 'उपयोगकर्ताओं []' के साथ भी जा सकते हैं। – Franz

+0

ऐसी स्थिति के बारे में जहां उपयोगकर्ताओं की संख्या पूर्वनिर्धारित नहीं है, कहें कि उपयोगकर्ता एक + बटन क्लिक करता है और फ़ील्ड का एक नया सेट खुलता है और वे वास्तव में किसी भी उपयोगकर्ता को जोड़ने का विकल्प चुन सकते हैं – Pila

2

ठीक है, आप कुछ कहीं पाशन क्या करना है जा रहे हैं। यदि आप प्रत्येक फॉर्म तत्व को इंडेक्स के साथ नाम देते हैं (जैसे फ्रांज सुझाव देता है), तो आप PHP पक्ष पर लूपिंग करते हैं।

आप पाशन करने के लिए जावास्क्रिप्ट का उपयोग करना चाहते हैं, तो आपके प्रपत्र ऑनसबमिट() पीएचपी को पारित करने के लिए JSON स्ट्रिंग बनाने की है। फिर PHP को इसे पुनर्प्राप्त करें:

json_decode($_POST['users'], true); 

दूसरा तर्क अज्ञात वस्तुओं के बजाय सरणी बनाने के लिए कहता है।

+0

यह आसान तरीका है, धन्यवाद! – lovespring

7

Here का दूसरा तरीका: serialize सरणी, पोस्ट और unserialize (वैकल्पिक एन्क्रिप्ट करना)।

"send.php":

<input type="hidden" name="var_array" value="<?php echo base64_encode(serialize($var_array)); ?>"> 

"receive.php":

और यहाँ एक उदाहरण है कि मेरे लिए काम किया है

if (isset($_POST['var_array'])) $var_array = unserialize(base64_decode($_POST['var_array'])); 

कि के साथ आप बस $var_array का उपयोग कर सकते हैं जैसे कि यह दो फाइलों/सत्रों के बीच साझा किया गया था। बेशक इस send.php में एक <form> होने की जरूरत है, लेकिन आप भी एक क्वेरी स्ट्रिंग के रूप में एक <a> पर भेज सकते हैं।

बहु-आयामी सरणी के साथ काम करते समय इस विधि का एक बड़ा फायदा होता है।

+0

बहुत बढ़िया समाधान। एक जादू की तरह काम करता है। धन्यवाद। – denislexic

+0

@denislexic मैं वास्तव में खुश हूं कि किसी ने इसका आनंद लिया! :) – cregox

+0

और बस सबसे अच्छा समाधान। धन्यवाद :) – Zl3n