2009-08-23 12 views
5

मैं मज़े के लिए कुछ HTML/CSS करता हूं लेकिन मैं कुछ प्रोग्रामिंग कौशल चुनने पर विचार कर रहा हूं।प्रोग्रामिंग शुरुआती- वेब ऐप डिज़ाइन करने के साथ सलाह

मैं PHP और MySQL पर पढ़ रहा हूं। अब तक मुझे लूप, कंडीशन स्टेटमेंट इत्यादि जैसी अवधारणाओं को समझना बहुत मुश्किल नहीं मिला है, लेकिन मैं बहुत ऊब जाने और पूरी तरह से हारने से पहले एक एप विकसित करना शुरू करना चाहता हूं।

मेरा विचार ...

मैं पल में एक परीक्षा के लिए अध्ययन कर जा करने के लिए होती हैं और कागज पर इन अभ्यास परीक्षा नहीं है। मैंने सोचा कि इसे ऐप में क्यों न डालें, इसलिए मैं कंप्यूटर पर परीक्षा ले सकता हूं।

विशेषताएं:

  • एप्लिकेशन धारण कर सकते हैं कई परीक्षाएं दी
  • यह आदेश
  • में सवाल randomise या उन्हें प्रदर्शित कर सकते हैं प्रत्येक प्रश्न
  • समय अवधि पूरा करने के लिए इस सवाल का जवाब प्रदर्शित करने का विकल्प है परीक्षा
  • नई परीक्षाएं और प्रश्न/उत्तर जोड़ने के लिए व्यवस्थापक पृष्ठ

ठीक है, आप लोग अब हँसना बंद कर सकते हैं, मुझे पता है कि यह हैलो वर्ल्ड से एक कदम है लेकिन सोचा कि मैं कहीं शुरू कर दूंगा!

यदि आप शुरुआती लोगों के लिए बेहतर सोचते हैं तो मैं इसे PHP/MYSQL या शायद RoR में विकसित करूंगा। मुझे लगता है कि मैं डीबी को पढ़ना/लिखना ठीक करूँगा लेकिन मुझे साइट संरचना, डीबी डिज़ाइन और आमतौर पर ऐसा करने के लिए सबसे अच्छा तरीका नहीं है।

यदि मेरे पास 50 प्रश्नों की परीक्षा है, तो प्रत्येक को एक आईडी दी गई है। यदि मैं एक प्रश्न हटा देता हूं तो मैं बाकी को नए आईडी के साथ कैसे अपडेट करूं? अर्थात। अगर मैं सवाल 3 हटाते हैं, तो निम्न सवालों उनके आईडी के आधार पर 1.

संपादित वापस शिफ्ट करने के लिए की जरूरत है:

मैं अपने डेटाबेस स्कीमा में एक परीक्षा का एक उदाहरण का प्रतिनिधित्व करते हैं? परीक्षा और प्रश्न संबंध कई लोगों के लिए एक होगा, क्योंकि प्रश्न एक परीक्षा के लिए अद्वितीय होंगे। लेकिन चूंकि मैं कई परीक्षाएं रखने का लक्ष्य रख रहा हूं, मैं इसका प्रतिनिधित्व कैसे करूं?


मैं अपने डेटाबेस स्कीमा में एक परीक्षा के उदाहरण का प्रतिनिधित्व कैसे करूं? परीक्षा और प्रश्न संबंध कई लोगों के लिए एक होगा, क्योंकि प्रश्न एक परीक्षा के लिए अद्वितीय होंगे। लेकिन चूंकि मैं कई परीक्षाएं रखने का लक्ष्य रख रहा हूं, मैं इसका प्रतिनिधित्व कैसे करूं?

+2

क्या आप सुनिश्चित हैं कि यह संशोधन करने से बचने का एक तरीका नहीं है;) – APC

+0

बस्टेड! संशोधन इतना कठिन है ना? : डी – Fred

+0

ईमानदार होने के लिए मुझे लगता है कि जब तक आपने अपने डेटाबेस में सभी प्रश्नों को सम्मिलित किया है, तब तक ऐप को फिर से डिज़ाइन किया गया है, टेबल हटा दिया गया है, डेटाबेस को दोबारा डिजाइन किया गया है (और कम से कम चार बार दोहराएं) आपके पास होगा शायद किसी और के रूप में संशोधित =) –

उत्तर

2

मेरी राय में, आपकी सबसे बड़ी बात, आपके डेटाबेस की संरचना होगी। आप डीबी डिजाइन, और सामान्यीकरण के बारे में थोड़ा सा पढ़ना चाहते हैं।

  1. परीक्षा
  2. परीक्षा देने वालों
  3. प्रश्न
  4. जवाब

और इनमें से कुछ हो जाएगा: मूल रूप से आप तार्किक रूप से विभिन्न संस्थाओं है कि आपके आवेदन में मौजूद की योजना करना चाहते हैं एक दूसरे से बंधे:

  1. प्रश्न -> परीक्षा
  2. खरीदार -> परीक्षा
  3. उत्तर -> प्रश्न

जब भी आप इस तरह की स्थितियों है, तो आप, यह निर्धारित करने के संबंध एक-से-एक है की जरूरत है एक-से-कई, या many- बहुतों को। प्रश्न एक परीक्षा, या कई से संबंधित हो सकता है। यह तय करने के लिए आप पर निर्भर है। यदि कोई प्रश्न केवल एक ही परीक्षा से संबंधित है, तो आप परीक्षा आयोजित करने के लिए अपनी प्रश्न तालिका में एक फ़ील्ड बना सकते हैं। यदि कोई प्रश्न कई परीक्षाओं से संबंधित हो सकता है, तो आप दो फ़ील्ड के साथ एक नई तालिका तैयार करेंगे: प्रश्न आईडी, परीक्षा। यह आपके कई से अधिक रिश्ते बनाता है।

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

भले ही आप किस एप्लिकेशन को बनाने का निर्णय लेते हैं, तो आपके लिए यहां सब कुछ है।

8

ठीक है, सबसे पहले, स्वागत है :) सबसे दूसरा: आपका बिल्कुल बेवकूफ विचार नहीं है, वास्तव में, आपने प्रोग्राम को सीखने का तरीका जानने का सबसे अच्छा तरीका चुना है: कुछ उपयोगी और मजेदार करें।

अपने प्रश्न के लिए: आपको प्रश्नों के लिए लगातार आईडी क्यों चाहिए? डाटाबेस के अनुसार, आपको प्रति पंक्ति अलग-अलग आईडी की आवश्यकता है।

यदि यह एक प्रदर्शन आवश्यकता है, तो आप प्रदर्शन के दौरान एक लूप पर एक संख्या क्यों निर्दिष्ट नहीं करते? इसलिए, उदाहरण के लिए जब आप foreach प्रश्नों को प्रदर्शित करने के लिए करते हैं तो आप एक इंडेक्स वेरिएबल रख सकते हैं जो आप प्रत्येक पाश पर बढ़ते हैं, और ऑर्डिनल प्रदर्शित करने के लिए इसका उपयोग करते हैं।

आशा है कि आप जो खोज रहे हैं, शुभकामनाएँ!

+0

ओह हाँ! यह समझ आता है। मैं सिर्फ आईडी उत्पन्न करूंगा क्योंकि मैं उनके माध्यम से लूप करता हूं। मुझे लगता है कि प्रोग्राम करने से पहले मुझे एक मस्तिष्क प्राप्त करने की ज़रूरत है: पी मुझे लगता है कि यह प्राथमिक आईडी को कभी भी हटाने के बारे में नीचे बताता है कि रिच कहता है। – Fred

+0

@ जोन, नहीं * बिल्कुल *, आपको प्रश्न संख्याएं उत्पन्न करनी चाहिए क्योंकि आप उनके माध्यम से लूप करते हैं, लेकिन डीबी में गधे लगाए जाने के बाद आईडी को अकेला छोड़ दिया जाना चाहिए, क्योंकि रिच अपोडाका उनके जवाब में बताते हैं। –

+3

मुझे लगता है कि भ्रम का हिस्सा "आईडी" का अर्थ हो सकता है: (i) डेटाबेस में, प्रत्येक प्रश्न के लिए प्राथमिक कुंजी को _ver_ परिवर्तन करना चाहिए; (ii) उपयोगकर्ता इंटरफ़ेस में, उपयोगकर्ता को प्रदर्शित प्रश्न संख्या गतिशील रूप से जेनरेट की जानी चाहिए, जैसा कि मैंने अपने उत्तर में सुझाव दिया था। – Argalatyr

1

एक विशिष्ट अनुप्रयोग प्रोग्रामिंग सीखने का एक शानदार तरीका है, भले ही ऐसे अनुप्रयोग पहले से मौजूद हों (और वे करते हैं - लेकिन मैं उनको देखने से बचूंगा, बस बनाएं और सीखें!)।

आपके विनिर्देशों में से एक यह है कि प्रश्न किसी भी क्रम में प्रदर्शित किए जा सकते हैं। दूसरा यह है कि उन्हें हटाया जा सकता है। इसलिए, यह स्पष्ट है कि संख्या सीधे प्रश्न से संबंधित नहीं है - इसे प्रश्नों के सेट के बाद गतिशील रूप से उत्पन्न किया जाना चाहिए, और परीक्षण में उनका आदेश स्थापित किया गया है। आपको इन आवश्यकताओं के माध्यम से सोचने की जरूरत है, जो घटकों के डिजाइन के लिए आधार प्रदान करते हैं। उपयोगकर्ता इंटरफ़ेस प्रोग्राम तर्क से इन्सुलेट किया जाना चाहिए, जिसे प्रश्नों के डेटाबेस से इन्सुलेट किया जाना चाहिए। संभवतः सबसे प्राचीन रूप में इन भागों के बीच जानकारी पास करने का प्रयास करें। इस तरह, जब आप परतों में से एक को फिर से डिजाइन करना चाहते हैं, तो आपको पूरी चीज़ को बदलना नहीं होगा।

+0

BTW, तुम इतनी है कि आप पाठ स्वरूपित कर सकते हैं अपने सवाल और जवाब में HTML की तरह एक मार्कअप भाषा के भंडारण और प्रदर्शन की अनुमति, और सीएसएस या इसी तरह का उपयोग करने के लिए कर सकते हैं! – Argalatyr

2

यदि मेरे पास 50 प्रश्नों की परीक्षा है, तो प्रत्येक को एक आईडी दी गई है। यदि मैं एक प्रश्न हटा देता हूं तो मैं बाकी को नए आईडी के साथ कैसे अपडेट करूं? अर्थात।अगर मैं प्रश्न 3 हटा देता हूं, तो निम्नलिखित सभी प्रश्नों को अपनी आईडी को वापस 1 से स्थानांतरित करने की आवश्यकता है।

प्राथमिक आईडी कभी भी नहीं बदलनी चाहिए। जब आप अपनी तालिका में एक पंक्ति हटाते हैं, तो संबंधित प्राथमिक आईडी गायब हो जाती है, लेकिन दूसरी पंक्ति प्राथमिक कुंजी की कोई मरम्मत नहीं होनी चाहिए।

यदि आप रेल के साथ जाने का फैसला करते हैं, तो रयान बेट्स की उत्कृष्ट स्क्रीनकास्ट साइट Railscasts देखें।

1

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

रूबी पर रूबी रूबी के लिए एक ढांचा है। यह MySQL का भी उपयोग कर सकता है। PHP एक प्रोग्रामिंग भाषा है (रूबी आरओआर के लिए है), और कोई ढांचा प्रदान नहीं करता है। हालांकि PHP के लिए बहुत कुछ हैं, CodeIgniter, Zend Framework, Symfony या CakePHP कुछ नाम हैं। फ्रेमवर्क एक लचीली तरीके से किसी एप्लिकेशन के अक्सर उपयोग किए जाने वाले पहलुओं को लागू करते हैं, इसलिए इन्हें विभिन्न अनुप्रयोगों के लिए उपयोग किया जा सकता है। इनमें से कुछ पहलू प्रमाणीकरण, डेटाबेस पहुंच, कैशिंग, टेम्पलेट प्रतिपादन और बहुत कुछ हो सकते हैं।

फ्रेमवर्क आमतौर पर एप्लिकेशन विकास को गति देने के लिए लिखे जाते हैं, यदि आप PHP चुनते हैं, तो हो सकता है कि आप अपना खुद का ढांचा लिखने का प्रयास करें, यदि आपका प्राथमिक लक्ष्य सीख रहा है। आपको अभी भी अन्य ढांचे पर एक नज़र रखना चाहिए और यह देखने के लिए उन्हें देखें कि वे क्या हैं और वे कैसे काम करते हैं।

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

आपके आवेदन का दूसरा भाग डेटाबेस होगा। कुछ ढांचे कुछ प्रकार के ORM प्रदान करते हैं, जो आपके स्कीमा को सेट करने के बाद, आपके द्वारा डेटाबेस पहुंच को "ढाल" देगा। मैं अभी भी एक डेटाबेस को क्वेरी करने के तरीके पर एक नज़र डालने की सलाह दूंगा, क्योंकि तब आप जानते हैं कि डेटाबेस से डेटा पुनर्प्राप्त करते समय ढांचा क्या करता है।

This mysql-server के लिए एक परिचय के लिए एक अच्छा संसाधन प्रतीत होता है, और इसमें एसक्यूएल-ट्यूटोरियल के कुछ लिंक शामिल हैं (डीबी-सर्वर से पूछताछ के लिए)। और मैं आपकी डेटाबेस स्कीमा बनाने के तरीके पर this tutorial की अनुशंसा करता हूं।

मुझे आशा है कि इनमें से कुछ संसाधन आपके लिए उपयोगी हैं और आपको शुभकामनाएं देते हैं।

+0

जानकारी के लिए धन्यवाद। मुझे लगता है कि मैं इस परियोजना के साथ चिपके रहते हैं और डीबी स्कीमा के साथ एक शुरुआत करने के लिए जा रहा हूँ। यही कारण है कि ट्यूटोरियल आप सामान्य पर लिंक बहुत उपयोगी लग रहा है। – Fred

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