2010-02-19 15 views
5

निम्नलिखित डेटा संरचना पर विचार करें:वेब UI: गतिशील वेब फॉर्म्स

subject (stdClass) 
    topic (stdClass) 
     units (int) 
     title (varchar 50) 
     description (varchar 255) 
     start_time (time) 
     end_time (time) 
    teacher (stdClass) 
     first_name (varchar 50) 
     last_name (varchar 50) 
    students (stdClass[]) 
     1 (stdClass) 
      first_name (varchar 50) 
      last_name (varchar 50) 
     2 (stdClass) 
      first_name (varchar 50) 
      last_name (varchar 50) 
     3 (stdClass) 
      first_name (varchar 50) 
      last_name (varchar 50) 
    proctor (stdClass) 
     first_name (varchar 50) 
     last_name (varchar 50) 

मैं कैसे गतिशील वेब प्रपत्रों में उपर्युक्त डेटा संरचना को लागू करने पर समस्या आ रही है। मुझे यकीन नहीं है कि किस प्रकार का कार्यान्वयन मैं अंत उपयोगकर्ता को भरने के लिए आसान बनाने के लिए उपयोग करूंगा। साथ ही डेटा अखंडता को संरक्षित करना।

परिदृश्य:

  • एक उपयोगकर्ता डेटा "विषय" एक के रूप में वस्तु को पॉप्युलेट करने के लिए आवश्यक प्रदान करने के लिए सक्षम होना चाहिए। इसका मतलब है कि वह को अन्य पृष्ठों (एक जादूगर की तरह) पर रीडायरेक्ट नहीं किया जाएगा, प्रति छात्र उप-रूप जावास्क्रिप्ट जेनरेट किए गए हैं।
  • उपयोगकर्ता को पर डेटा पर "विषय" ऑब्जेक्ट में डेटा बदलने में सक्षम होना चाहिए।
  • कई छात्र या कोई भी नहीं हो सकता है।
  • प्रति उप-ऑब्जेक्ट प्रमाणीकरण आवश्यक है।

तो मुझे वेब फॉर्मों का उपयोग करके इसे कैसे प्रस्तुत करना चाहिए?

+0

यह प्रश्न शायद बहुत व्यापक है। यह वास्तव में मेरे लिए दिलचस्प है, लेकिन यह एक ऐसा उत्तर देना असंभव होगा जिसमें आप जो कुछ पूछ रहे हैं उसे कवर किया जाए। –

+0

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

+0

+1 एक दिलचस्प प्रश्न के लिए – lock

उत्तर

2

मुझे अपनी परियोजनाओं में से एक के साथ भी एक ही समस्या का सामना करना पड़ रहा है, एक गैर-घुसपैठ तरीके से बड़ी मात्रा में जानकारी कैसे भरें, संपादन पर राज्य को संरक्षित करें।

तकनीकें काफी अच्छी तरह से यह करने के लिए पहले से मौजूद हैं, अर्थात् अजैक्स और जेसन। मेरा प्रोजेक्ट PHP के साथ बनाया गया है, इसलिए मेरा विचार एक ऐसा दृश्य बनाना है जो सभी डेटा एंट्री फॉर्म प्रदर्शित करता है लेकिन यह पूरे फ़ील्ड को AJAX के साथ एक PHP स्क्रिप्ट में भेजकर डेटा को क्रमशः सहेजता है, जो ऑब्जेक्ट को सहेजता/अपडेट करता है।

सैद्धांतिक रूप से कुछ जावास्क्रिप्ट सुंदरता के साथ यह एक बहुत ही कुशल इंटरफेस बनाने के लिए संभव हो जाना चाहिए (लगता है पूरा वर्गों एक को बचाने के बटन और स्लाइड बंद है, तो आगे संपादन के लिए खोला जा सकता है)

इसके संभव है कि यह एक बनाने के लिए बहुत मॉड्यूलर डिज़ाइन, उदाहरण के लिए कार्यान्वित करना फ़ील्ड को एक बार लिखना, एक बार सहेजे जाने के बाद संपादित नहीं किया जा सकता है।

यह वास्तव में एक बहुत ही रोचक विषय है कि कई साइटों के साथ संघर्ष करना प्रतीत होता है। कृपया मुझे बताएं कि क्या मैंने यहां छड़ी के गलत छोर को पकड़ लिया है और एक उत्तर पोस्ट किया है जो प्रासंगिक/उपयोगी नहीं है

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

दृश्य अनिवार्य रूप से एक मॉड्यूलर AJAX स्क्रिप्ट होगा, इसमें इनपुट के लिए इनपुट और मॉनीटर होता है, जैसे ही पर्याप्त परिवर्तन किए जाते हैं (आंशिक बचत वारंट करने के लिए) AJAX नियंत्रक को डेटा भेजता है और प्रासंगिक अनुभाग को ध्वस्त करता है यह दिखाने के लिए कि यह पूरा हो गया है। इसी प्रकार यदि आप पृष्ठ पर फिर से जाते हैं और नियंत्रक देखता है कि मॉडल के लिए मॉडल में कुछ डेटा है तो यह इसे AJAX व्यू पर भेजता है, जो तब भरता है और prefilled अनुभागों को ध्वस्त करता है =) मुझे लगता है कि काफी साफ है।

संपादित करें: फिक्सिंग लिखने की त्रुटियों, जोड़ा MVC टिप्पणी

+0

बिल्कुल! कई कार्यान्वयन हैं, लेकिन कौन सा सबसे अच्छा है? –

+0

यूनिक्स, AJAX और php से युक्त मेरे कौशल सेट के साथ ईमानदार होने के लिए, यह मेरे लिए छोड़ दिया गया एकमात्र विकल्प है। वेब विकास, एएसपी और आईआईएस के अंधेरे पक्ष के साथ ऐसा करने का कोई तरीका हो सकता है, लेकिन अनुभव से मैं अनुशंसा नहीं करता। यदि आप कुछ विशिष्ट कार्यान्वयन और/या उदाहरण चाहते हैं तो मैं अपना उत्तर विस्तारित कर सकता हूं। –

+0

सबसे पहले, मैं डुप्लिकेट कोड को खत्म करना चाहता हूं। ऐसा करने के लिए, मैं केवल 1 एचटीएमएल फ़ाइल कोड कर सकता हूं जिसमें फॉर्म और पास वैरिएबल शामिल हैं ताकि फॉर्म स्वचालित रूप से GET var के माध्यम से पॉप्युलेट हो जाए। इस तरह हम AJAX "GET" कॉल कर सकते हैं उसी समय मूल्यों को पास कर सकते हैं। यदि कोई मूल्य पारित नहीं किया जाता है तो एक नया रूप कहा जाता है अन्यथा "संपादन मोड" चालू है। ऐसा कुछ। –

1

प्रयोज्य दिशानिर्देशों के आधार पर, खेतों उनके विषय/उदा के आधार पर fieldset तत्व में वर्गीकृत किया जाना चाहिए पहले/अंतिम नाम आदि।

बड़ी मात्रा में डेटा के कारण, कुछ जावास्क्रिप्ट इंटरफ़ेस का उपयोग चरणों में पृष्ठ दिखाने के लिए किया जाना चाहिए (फ़ॉर्म को एक पृष्ठ पर लोड किया जा सकता है, लेकिन जेएस संबंधित अनुभाग/फ़ील्ड को प्रदर्शित और छिपाने के लिए काम करेगा)। सबमिट करने के बाद सभी डेटा एक बार या वैकल्पिक रूप से AJAX पर मुकदमा चलाया जा सकता है ...

फ़ील्ड के बारे में सबसे अच्छी चीजें उन्हें समूहबद्ध भी किया जा सकता है और एक दूसरे में शामिल किया जा सकता है।

+0

जावास्क्रिप्ट फॉर्म को छिपाने और मांग पर दिखाने के लिए इस समय मेरी सबसे अच्छी शर्त है। पेज पर फॉर्म को प्री-लोड करने या फॉर्म के रूप में फॉर्म लोड करने के 2 दृष्टिकोण हैं ... मुझे यकीन है कि AJAX एक बेहतर विकल्प है क्योंकि यह पहली बार पेज लोड को धीमा नहीं करता है। फिर फिर हम डेटा को AJAX फॉर्म में कैसे पास करते हैं यदि हम उप-रिकॉर्ड संपादित कर रहे हैं? AJAX के माध्यम से –

+0

फिर से - मांग पर MySQL से उन्हें खींचें और आवश्यक रूपों को पॉप्युलेट करें। – dusoft

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