2010-10-21 13 views
6

मैं जो बात कर रहा हूं उसका एक उदाहरण Google कैलेंडर के समान है। जब एक नया आवर्ती कार्य बनाया जाता है।पुनरावर्ती कार्यों/कैलेंडर को विकसित/प्रबंधित/डिजाइन करने का सर्वोत्तम तरीका

पुनरावर्ती कार्य "टेम्पलेट" बनाने के बाद - जो सभी व्यक्तिगत कार्य इस पर आधारित होते हैं, क्या आप सभी व्यक्तिगत कार्यों को बनाते हैं और उन्हें डेटाबेस में संग्रहीत करते हैं? या आप बस "टेम्पलेट" पुनरावर्ती घटनाओं और उनके अपवादों को स्टोर करते हैं?

यदि उपयोगकर्ता "महीने" दृश्य का अनुरोध करता है, और आप सभी घटनाओं/कार्यों को प्रदर्शित करना चाहते हैं, तो यह टेम्पलेट से वास्तविक समय में आउटपुट बनाने जैसा लगता है, और सभी अपवादों सहित भी बहुत कुछ होगा संसाधन गहन तब होता है यदि प्रत्येक आवर्ती कार्य टेम्पलेट से बनाया गया था और डेटाबेस में डाला गया था।

इससे खोज/सॉर्टिंग आदि बहुत आसान हो जाएंगे।

कोई भी इससे पहले कुछ बना सकता है? विचार?

उत्तर

4

इसे सभी डेटाबेस में संग्रहीत करें।

आप एक "कार्य टेम्पलेट" तालिका और एक "कार्य" तालिका चाहते हैं जहां एक-> कई रिश्ते हैं।

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

कुछ अन्य युक्तियों मैं तुम्हें देना होगा है: अपने "टास्क खाका" रिकॉर्ड में जानकारी का एक बहुत कुछ पाने के लिए

  • प्रयास करें। टेम्पलेट कवर के कार्यों की संख्या रखें, आखिरी कार्य समाप्त होने की तिथि, पहले कार्य और अंतिम, आदि के बीच का समय बीत गया .. यह "मेटा डेटा" आपको सॉर्ट करने और फ़िल्टर करने के दौरान क्वेरी समय बचाने में मदद कर सकता है कार्य।
  • दिनांक और एफके फ़ील्ड पर एक इंडेक्स रखें, इससे क्वेरी समय भी मदद मिलेगी।
  • मैंने अभी काम पर दो कैलेंडर ऐप्स बनाए हैं जो मालिकों द्वारा बहुत अच्छी तरह से प्राप्त किए गए थे। मैंने "फुल कैलेंडर" JQuery प्लगइन (http://arshaw.com/fullcalendar/) का उपयोग किया। मैंने अपने अधिकांश कार्यक्रमों को संभालने के लिए JQuery AJAX का उपयोग किया, और यह महीना, दिन और सप्ताह दृश्य के लिए समर्थन में बनाया गया था।
+0

अच्छे अंक। और jQuery प्लगइन विचार के लिए धन्यवाद, मैं इसका उपयोग करने जा रहा हूँ। – Andre

0

यदि उपयोगकर्ता "महीने" दृश्य का अनुरोध करता है, और आप सभी घटनाओं/कार्यों को प्रदर्शित करना चाहते हैं, तो यह टेम्पलेट से वास्तविक समय में आउटपुट बनाने जैसा लगता है, और सभी अपवाद भी शामिल होंगे बहुत अधिक संसाधन गहन तब होता है जब प्रत्येक व्यक्तिगत पुनरावर्ती कार्य टेम्पलेट से बनाया गया था और डेटाबेस में डाला गया था।

मैं उस पर असहमत हूं। क्या होगा यदि कोई कार्य अगले 7 वर्षों के लिए हर शनिवार को दोहराता है ... और क्या होगा यदि इन दोहराव वाले कार्यों में से बहुत सारे थे? इससे आपको बहुत सारी बर्बादी होगी। इसके लिए, मुझे लगता है कि आवर्ती कार्य को प्रत्येक रिकॉर्ड के लिए केवल एक रिकॉर्ड + एक रिकॉर्ड के रूप में सहेजना बेहतर है (क्योंकि पुनरावर्तन से कम अपवाद हैं)।

ठीक है, समस्या सिर्फ छोड़ दिया कैसे

1

मैं एक ही समस्या के माध्यम से एक समय पहले और के बजाय चला गया पहिया पुनर्रचना प्रत्येक कार्य (अभी भी उस abou सोच) का चयन करने के लिए एक क्वेरी स्थापित करने के लिए है, मैं गूगल का इस्तेमाल किया कैलेंडर एपीआई (http://code.google.com/apis/calendar/data/2.0/developers_guide.html)

आप Google खाता बनाते हैं और कैलेंडर जानकारी तक पहुंचते हैं। पुनरावर्ती प्रविष्टि बनाने/संपादित/हटाने के लिए एपीआई हैं। साथ ही, आप मिलान करने वाली घटनाओं के लिए दिनांक/समय की जानकारी और क्वेरी निर्दिष्ट कर सकते हैं।

जब आप Google कैलेंडर पर कोई ईवेंट बनाते हैं, तो आपको एक टोकन/आईडी प्राप्त होगी जिसे आप अपने डेटाबेस में स्टोर कर सकते हैं और इसे एप्लिकेशन के संदर्भ में संदर्भित कर सकते हैं।

2

पुनरावर्ती ईवेंट के लिए मैं कुछ समय निम्नलिखित किया:

  1. एक उपयोगकर्ता एक घटना मैं ईवेंट का दिनांक पैटर्न जीएनयू तारीख शैली संग्रहीत प्रवेश किया - PHP के लिए कीवर्ड relative date formats है।

  2. फिर मैंने उदाहरणों के लिए ईवेंट बनाकर शुरू किया अगले साल। और वास्तविक रिकॉर्ड बनाए जहां मैंने सापेक्ष दिनांक को वास्तविक में परिवर्तित किया - उदा। "हर पहली सोमवार" को "एमएम-डीडी-वाईवाईवाई" में। इससे मुझे उन्हें प्रदर्शित करने की अनुमति मिली और उपयोगकर्ता को उदा। एक घटना को स्थानांतरित करें या एक रद्द करें, आदि ..

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

  4. जब उपयोगकर्ता सापेक्ष पैटर्न बदलता है, तो सभी निम्न घटनाओं को अपडेट करने की पेशकश करें - जब तक कि उनके पास पहले से ही एक कस्टम पैटर्न नहीं है। सापेक्ष पैटर्न यह सब गणना करने के लिए सुपर आसान बनाते हैं।

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