2010-12-09 6 views
18

मेरे पास एक ऐसा फॉर्म है जहां उपयोगकर्ता डेटा की पंक्तियों की असंबद्ध संख्या दर्ज करते हैं। वे स्क्रीन पर जो भी पंक्तियां चाहते हैं, उन्हें दर्ज करके फ़ॉर्म पर पहुंचते हैं।PHP में सरणी इनपुट के लिए गारंटी की गई पोस्ट में INPUTS का ऑर्डर है?

<?php 
$numRows = $_GET['NUM_ROWS_REQUESTED']; 

?> 
<form method="post"> 
<?php 
for($i = 0; $i < $numRows ;$i++) { 
    $uuid = uniqid(); 
?> 

    <input type="text" name="MYDATA[<?php print $uuid; ?>][FIRST_NAME]" /> 
    <input type="text" name="MYDATA[<?php print $uuid; ?>][LAST_NAME]" /> 
<?php 
} 
?> 
</form> 

मैं सोच रहा हूँ अगर, जब प्रपत्र पोस्ट किया जाता है और मैं $_POST['MYDATA'] सरणी में इन रिकॉर्ड प्राप्त मैं गारंटी दी जा सकती है, तो यह है कि वे उसी क्रम में आदेश दिया जा होगा के रूप में वे स्क्रीन पर नियुक्त किया गया। या उन्हें uniqid() द्वारा क्रमशः जेनरेट किया जाएगा?

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

+0

यदि आप सुनिश्चित नहीं हैं। हल करे। – DampeS8N

+0

@ DampeS8N मुझे वास्तव में सॉर्ट करने के लिए कुछ भी नहीं है। जब वे प्रवेश करते हैं तो स्क्रीन पर इनपुट का क्रम वांछित क्रम होता है। सिस्टम तिथि को पुनर्प्राप्त करने के लिए AJAX किए बिना, यह विश्वसनीय नहीं होगा क्योंकि जावास्क्रिप्ट अपने पीसी की तारीख का उपयोग करता है। मैं उम्मीद कर रहा था कि नई पंक्तियां बनाते समय मैं जावास्क्रिप्ट में मौजूदा पंक्तियों का विश्लेषण करने से बच सकता हूं। –

+1

आप 'MYDATA [] [SORT_ORDER] 'नाम के रूप में और काउंटर के रूप में काउंटर। आप $ uuid के रूप में काउंटर का उपयोग भी कर सकते हैं। यदि आपको अभी भी यूयूआईडी की आवश्यकता है तो आप सर्वर को उत्पन्न कर सकते हैं या मेरे पहले उदाहरण के विपरीत उपयोग कर सकते हैं: 'MYDATA [] [यूयूआईडी] 'नाम के रूप में और मूल्य के रूप में $ uuid। – ontrack

उत्तर

9

W3 spec में डेटा सेट में किसी फ़ॉर्म के मानों को किस क्रम में इकट्ठा किया जाना चाहिए, इस पर नियम शामिल नहीं हैं, इसलिए तकनीकी रूप से आप सुनिश्चित नहीं हो सकते हैं। दूसरी तरफ, मैंने एक मामला नहीं देखा है (कई वर्षों में कई ओएस पर कई ब्राउज़रों से) जहां स्रोत-लिस्टिंग-ऑर्डर में डेटा प्रदान नहीं किया गया है। डिफ़ॉल्ट रूप से बदलते समय मैंने वास्तव में परीक्षण नहीं किया है (UI उत्पन्न) tabindex मान।

आप यह सुनिश्चित करने के बाद सरणी (asort) को हमेशा सॉर्ट कर सकते हैं कि आप किस क्रम को मूल्य पढ़ रहे हैं।

6

यह HTML4.01 (-उर्नलकोडेड के लिए, लेकिन यह/फॉर्म-डेटा के लिए समान माना जाता है) द्वारा गारंटीकृत है, और सभी मौजूदा ब्राउज़र दस्तावेज़ फ़ील्ड में सूचीबद्ध क्रम में फॉर्म फ़ील्ड जमा करते हैं।

तो हाँ, उन्हें यादृच्छिक uuid द्वारा नहीं, उनकी उपस्थिति द्वारा आदेश दिया जाता है।

+3

एचटीएमएल 5 में यह स्पष्ट नहीं है, लेकिन वे अक्सर " पेड़ ऑर्डर "(डीओएम संरचना) फॉर्म तत्वों के लिए: http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#multipart-form-data – mario