• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

طراحي يه فرم ( به داد برسيد! )

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
سلام به همه. من ميخوام يه فرم بسازم كه مشخصات كاملش توي اين عكس اومده. لطفا كمك كنين. اگه حالش رو دارين چند خط واسم بنويسين تا راه بيافتم. ممنون.

1q06qp
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
1-به تمام textbox ها name يكسان بده و اونها رو disable كن (شخصا از disabled خوشم نمياد چون كنترل رنگ فيلد رو غيرممكن ميكنه - بجاش كليدها رو غيرفعال ميكنم)
2- به تمام checkboxها name يكسان بده و تابع onclick يكسان براي همشون تعريف كن
3- تو اين تابع كه صحبتش شد با document.getelementsbyname دو تا array يكي براي checkboxها و يكي هم textboxها درست كن و توي يك حلقه به تعداد عناصر اين arrayها بررسي كن كه اگر checkbox شماره i تيك خورده اونوقت مقادير total و selected رو بر حسب value عنصر iام از textboxها بسازه.

اينجوري كد نوشتن خاصيتش به اينه كه با كم و زياد شدن تعداد فيلدها مجبور نيستي كد رو اصلاح كني.

اگر نتونستي بنويسي اينجا http://m.1asphost.com/mazoolagh/pt14626.htm رو نگاه كن!
 

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
ممنون از ايكه هم به من منطق كار رو ياد دادين و هم نتيجه كار رو نشون دادين.
اين نهايت لطف شما بود. اين كار شما رو فراموش نميكنم. :rolleyes: :blush:
 

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
يه سوال برام پيش اومده كه با استفاده از چه روشي اطلاعات به صورت خودكار و بدون هيچ دكمه اي محاسبه ميشن. من ميخوام اطلاعات همين باكس آخري كه يه عدد هست با توجه به ضريبي كه در داخل يك drop down menu مشخص ميشه به صورت خودكار در يه باكس محاسبه بشه.
اگه ممكنه مثل دفعه قبل روش محاسبه خودكار اطلاعات رو هم بنويسين. ممنون. :rolleyes:
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
اينجا رو ببين : http://m.1asphost.com/mazoolagh/pt14626_2.htm

روش كار مثل قبل هست - فقط جلوي هر فيلد يك select اضافه شده كه مقاديرش بجاي دستي وارد كردن موقع load شدن صفحه با كد ايجاد ميشه.
در مورد محاسبه خودكار هم اينجوريه كه يك روتين محاسبه كلي داريم (كه اينجا اسمش calc هست) هر موقع اجراش كني فيلدهاي مورد نظر شما رو محاسبه ميكنه. حالا اين صدا زدن ميشه با فشردن يك كليد باشه يا تغيير وضعيت يك checkbox يا انتخاب از يك listbox
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
اميدوارم مشكلت حل بشه :D
فقط خاطرت باشه اين روش getelementsbyname رو با دقت استفاده كني - IE با شناسايي عناصري كه توسط كد ساخته ميشن مشكل داره - در اين مورد خاص ميشه كد جاواي زيبايي نوشت كه تمام عناصر رو با كد بسازه ولي فقط با netscape-opera-firefox-mozilla كار ميكنه
 

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
به نقل از mazoolagh :
اميدوارم مشكلت حل بشه :D
فقط خاطرت باشه اين روش getelementsbyname رو با دقت استفاده كني - IE با شناسايي عناصري كه توسط كد ساخته ميشن مشكل داره - در اين مورد خاص ميشه كد جاواي زيبايي نوشت كه تمام عناصر رو با كد بسازه ولي فقط با netscape-opera-firefox-mozilla كار ميكنه
ممنون از تذكرت.
من فقط قصدم انتخاب 3 گزينه از يك منوي پايين افتادني بود كه هر كدام يه ضريب داشتن. نتيجه يه باكس قبلي در عدد منو ضرب ميشد و توي يه باكس ديگه نوشته بشه. خوشبختانه اونقدر شما جواب رو كامل و جامع ميدين كه از كنارش 10 تا چيز ديگه هم ياد گرفتم. :)
ايشالله وقتي صفحه مربوط به اين فرم رو ساختم نشونتون ميدم تا دست پخت شاگردتون رو ببينين. :blush: :cool:
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
به نقل از daftarekhaterat :
من فقط قصدم انتخاب 3 گزينه از يك منوي پايين افتادني بود كه هر كدام يه ضريب داشتن. نتيجه يه باكس قبلي در عدد منو ضرب ميشد و توي يه باكس ديگه نوشته بشه.

دفترخاطرات جان! ممنون از از اظهار لطفت - كاملترش رو هم نوشتم ولي فعلا هاستم جواب نميده - وقتي گذاشتمش خبرش رو اينجا ميذارم
 

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
ببخشيد يه سوال داشتم.
يه فرم بايد بسازم كه يه جدول هست كه 30 تا ستون و 20 تا رديف داره و توي هر خونه 3 تا چك باكس داره! حالا حساب كنين چند تا چك باكس ميشه!! :blink:
خب مشكل اينه كه من ميخوام اسم همه اين چك باكس ها يكي باشه اما به محض اينكه يه خونه رو كپي ميكنم براي هر باكس يه شماره اختصاص ميده. يعني كلا از صفر تا 1800 شماره گذاري ميكنه! :(
راه حل چيه؟! چه كنم كه فرونت پيچ اينقدر باهوش عمل نكنه!
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
به نقل از daftarekhaterat :
ببخشيد يه سوال داشتم.
يه فرم بايد بسازم كه يه جدول هست كه 30 تا ستون و 20 تا رديف داره و توي هر خونه 3 تا چك باكس داره! حالا حساب كنين چند تا چك باكس ميشه!! :blink:
خب مشكل اينه كه من ميخوام اسم همه اين چك باكس ها يكي باشه اما به محض اينكه يه خونه رو كپي ميكنم براي هر باكس يه شماره اختصاص ميده. يعني كلا از صفر تا 1800 شماره گذاري ميكنه! :(
راه حل چيه؟! چه كنم كه فرونت پيچ اينقدر باهوش عمل نكنه!

در محيط code كار كن نه design!
 

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
به نقل از mazoolagh :
در محيط code كار كن نه design!
شما حسابش رو بكنين ساختن 600 تا خونه توي محيط كد يعني 600 بار انتخاب و 600 بار paste كردن! :(
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
به نقل از daftarekhaterat :
شما حسابش رو بكنين ساختن 600 تا خونه توي محيط كد يعني 600 بار انتخاب و 600 بار paste كردن! :(

نه!
يكبار ميسازي يكبار كپي ميكني ميشه 2 تا!
2 تا رو كپي ميكني ميشه 4 تا!
...
16 تا ميشه 32!
32 تا رو 19 بار كپي ميكني ميشه 608 تا!
8 تاي آخري رو پاك ميكني!

ولي من ساختن عناصر با كد و بعد ذخيره كردن اون رو ترجيح ميدم!
 

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
دوست و معلم خوبم.
من يه صفحه فرم ديگه دارم ميسازم كه آدرسش رو اين زير ميذارم:
http://www.khatereh.persiangig.com/document/mehraban.htm
حجمش يه كم بالا رفته... شرمنده :(
از همون متد قبلي يعني نام گذاري همه چك باكس ها با يك نام و سپس شمارش آنها استفاده كردم. فقط 3 رديف A , B , C كار ميكنه. بقيه اش رو هنوز تصحيح نكردم. همونطور كه ميبينين براي چك خوردن يه باكس از زمان كليك تا زمان چك خوردن يه مقدار طول ميكشه و اين يه مقدار اعصاب خورد كن ميشه. شما راه حلي ندارين؟! روش سريع تر ديگه اي نيست؟!
البته بگم كه فعلا قسمتي رو كه به صورت رديفي جمع ميزنه رو نوشتم و بايد براي 31 ستون هم همين قصه رو پياده كنم.... واويـــــــــــــلا ! :( :eek:
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,289
لایک‌ها
34
محل سکونت
mt.cgi
3تا از اين چك باكسهارو تيك زدم به چارمي كه رسيد داشت دود ميكرد سيستمم ! :blink: :blink:
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
البته صفحه نبايد به اين تعداد عنصر داشته باشه ولي در اينكه كدت اشتباه هست شكي نيست (پيدا كردن اشتباهاتت رو بعنوان تمرين ميذارم براي خودت!)
من يك كد asp نوشتم كه هم صفحه و هم كدهاي جاوا رو ميسازه (كمتر از 100 خط كه 10 خطش رو من نوشتم مابقيش همون كدهاي html و java خودته كه كپي كردم توش!)
برو ببينش و view source كن! http://m.1asphost.com/mazoolagh/pt14626/pt14626_4.asp
البته اين كد رو ميشد ساده تر هم نوشت - ولي چون يك كمي بايد توضيح ميدادم فعلا همين رو كه به كد خودت شبيه تر هست ميذارم.

ضمنا آدرس نمونه هاي قبلي رو هم عوض كردم - اگر كسي خواست روند رو تعقيب كنه:
http://m.1asphost.com/mazoolagh/pt14626/pt14626.htm
http://m.1asphost.com/mazoolagh/pt14626/pt14626_2.htm
http://m.1asphost.com/mazoolagh/pt14626/pt14626_3.htm
 

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
آقا معلم من هنوز كلاس asp نرفتم. :( :(
در ضمن اون يكي رو هم فقط براي 3 تا رديف اول تكميل كرده بودم چطور شما به اين سرعت واسه همش ساختين؟! :blink: :eek:
ببيينم اگه بخوام براي هر 31 ستون اين كاري رو كه براي 21 رديف انجام شده يعني فقط مجموع D,E,N رو براي هر 31 ستون داشته باشم با اين برنامه نويسي ميشه؟! :eek:
در مورد حجم عناصر صفحه هم بايد بگم به عقل من همين راه فقط ميرسيد. 21 رديف هست و 31 ستون كه كاريش نميشه كرد. هر خونه هم بايد 3 تا گزينه داشته باشه كه امكان داره هر خونه 2 تا يا يكي از گزينه هاش انتخاب بشن.
-------------------------------------------------------
البته الان كه دارم ميخونم ميتونم تا حدي منطق كار رو درك كنم. گمونم سريعتر كار كردنش هم به خاطر قرار گرفتن قسمت bload() در تگ body باشه. درسته؟!
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
به نقل از daftarekhaterat :
آقا معلم من هنوز كلاس asp نرفتم. :( :(
در ضمن اون يكي رو هم فقط براي 3 تا رديف اول تكميل كرده بودم چطور شما به اين سرعت واسه همش ساختين؟! :blink: :eek:
ببيينم اگه بخوام براي هر 31 ستون اين كاري رو كه براي 21 رديف انجام شده يعني فقط مجموع D,E,N رو براي هر 31 ستون داشته باشم با اين برنامه نويسي ميشه؟! :eek:
در مورد حجم عناصر صفحه هم بايد بگم به عقل من همين راه فقط ميرسيد. 21 رديف هست و 31 ستون كه كاريش نميشه كرد. هر خونه هم بايد 3 تا گزينه داشته باشه كه امكان داره هر خونه 2 تا يا يكي از گزينه هاش انتخاب بشن.
-------------------------------------------------------
البته الان كه دارم ميخونم ميتونم تا حدي منطق كار رو درك كنم. گمونم سريعتر كار كردنش هم به خاطر قرار گرفتن قسمت bload() در تگ body باشه. درسته؟!

1- اتفاقا اصلا به bload ربطي نداره - ميخواستم رخداد رو اونطوري تعريف كنم كه منصرف شدم ولي يادم رفت برش دارم. دوباره نگاه كن ميبيني كه برداشتمش!

2- اشكال كدت در اين بود كه عمليات زايد داشت - ببين وقتي فرضا يك چك باكس در رديف مثلا H تيك ميخوره آيا واقعا لازمه كه همه رديف ها رو چك كني (مسلما نه) - تازه همين كد هم اشكال داره (ممكنه از نظر شما خيلي هم خوب بدون عيب باشه!) ولي اول بايد آمادگي پيدا كني يعني اول متوجه اشكالات كد فعلي بشي بعد بتدريج بهينه اش كني!

3- جمع ستوني هم ميشه زد!

4- من از asp واسه ساختن صفحه و كدهاي جاوا استفاده كردم - لازم نيست بلد باشي - همون صفحه رو view source كن و بصورت htm ذخيره كن
 

daftarekhaterat

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
2 جولای 2003
نوشته‌ها
4,989
لایک‌ها
58
سن
42
محل سکونت
در قلب پاك او
آقا معلم اجازه! در مورد نحوه كاركرد صفحه اي كه ساختين:
هر رديف با يه حرف انگليسي مشخص شده كه موقع چك خوردن هر خانه، نام اون به عنوان ورودي براي تابع calc ارسال ميشه. اول متغييرهاي لازم براي محاسبه مجموع به طور ويژه براي اون رديف تعريف ميشن. بعد هم براي هر رديف، چك خورده شدن هر كدام از 3 حالت، براي 31 مرتبه كنترل ميشه. يعني با هر چك زدن، فقط 93 بار كنترل صورت ميگيره در صورتي كه در روش من ... روم نميشه بگم.
بعد هم متغيير هاي حساب شده در محل هاي مورد نظر مقدار دهي ميشن.
حالا براي اينكه مجموع هر ستون رو هم داشته باشم به نظرم ميرسه بايد يه آرايه بسازم و حروف انگليسي رو توش مرتب كنم تا 21 بار و هر بار يه حرف انگليسي رو به عنوان متغير براي چك خورده بودن كنترل كنم. يه جورايي شبيه همين حالت فعلي هست ولي چون بر اساس اعداد مرتب نشده بايد از ارايه استفاده كنم. ميشه بگين درست گفتم يا نه؟! بهترين راه همينه؟!
 
بالا