fill combos

melika

Member
dear friends,
i have 4 ComboBox in my page that graze from database.
each Combo depend on next Combo ,it means that if you select one option from first Combo ,second combo will be refresh and will be fill with new data.
and the third depend on second ,the forth depend on fifth.
now i write codes with PHP that after you select each Combo ,page refresh again and fill next combo .
but problem is :
page refreshing is so slow and user must wait long times for selecting all Combos and this four refresh make him so angry.
you can see it at our website: http://www.payamsoftco.com/sch_home.php

note that our database is Access and i can't change it to MYSQL becouse of some limits.
please if you can, help me to change my codes so that solve this problem .
i am waie,
thank before.
 

melika

Member
سلام

دوست عزيز اگر من به زبان فارسي ننوشتم علتش آزار ديدگان محترم نبود .
من اين متن راو در فايل متني نوشته بودم و در خيلي از سايتها(ايراني يا غير ايراني) كپي كردم و فرستادم.
در ضمن با اين كار مطمپن بودم كه اگر كسي در اينجا عضو هست كه فارسي نمي دونه مي تونه جواب من رو بده.
و در آخر چون معادل اصطلاحات برنامه نويسي رو به فارسي نمي دونم اينطور نوشتن براي خودم خيلي راحتتر بود.
 

hsharghi

New Member
مطلب كلي كه من ميتونم به شما بگم اين است كه شما بايد تمامي داده هاي خود را از ديتابيس در هنگام اود شدن صفحه استخراج كنيد. (تمام داده ها در تمام حالات) و براي نشان دادن هر دسته از داده ها در هر حالت خاص از javascript استفاده كنيد. براي بهتر متوجه شده اين مطلب (استفاده از javascript) به اين لينك سري بزنيد.
DynamicOptionList

زنده باد javascript و java و sun :mrgreen:
 

mazoolagh

Active Member
اين تاپيك رو اول تو انجمن client side ديدم و همونجا جواب دادم كه اينجا هم تكرار ميكنم - البته نه براي سوال كننده بلكه براي كساني كه ممكن است به اينجا سر بزنند و مشكل مشابهي داشته باشند!

سلام
خدا رو شكر كه فارسي شد! اولا درسته كه استفاده از access بعنوان back-end سيستم هاي با تعداد كاربر همزمان زياد اشتباه محض هست ولي اين نمونه كه من ديدم فاجعه است!!

اگر منظور شما از پر كردن كمبو ها با java اين است كه ابتدا تمامي اطلاعات رو يكجا سمت client بفرستي و با كد نويسي clientside اينكار رو انجام بدي جواب شما مثبت هست يعني صددرصد شدنيه فقط دو نكته رو در نظر بگير:
اول حجم اطلاعاتي كه بايد ارسال بشه. اگر خيلي زياد باشه همون load اوليه اش هم خيلي طولاني هست
دوم اينكه اگر ديتابيس شما پول بالاش رفته باشه و حداقل براي خوتون مهم باشه خودتون دستي لوش دادين!
در هر صورت اگر دو مورد بالا از نظر شما اشكالي نداره بازهم راههاي مختلفي براي اجراش هست كه يكي از اونها استفاده از جداول مخفي است.

ساختار ديتابيس (خود اطلاعات رو منظورم نيست) خيلي مهم است. نوع فيلدها و روش ايندكسينگ و نحوه تعريف روابط تاثير بسزايي در performance داره. اگر تعداد كل ركوردهاي شما زير 40-50 هزار ركورد هست و بازديدككنده همزمان هم زير 10 صددرصد مشكل اساسي در اين قسمت هست.

اگر هم به طراحي ديتابيس و صفحاتتون اطمينان كامل داريد بهترين كار عوض كردن هاستتون هست. چون هر كاري كه انجام بدين مثل اينه كه يك كت بگيرين كه به دكمه تون بخوره!!!

شرقي جان! اين مليكا حتي حاضر نيست ساختار ديتابيسش رو كه بقول خودش هم خيلي ساده هست مطرح كنه كه مبادا كسي ازش كش بره (همين تاپيك رو تو اون يكي انجمن بخون متوجه ميشي چي ميگم) بعد شما بهش ميگي كه همه ديتابيس رو بفرست طرف كاربر!
 

hsharghi

New Member
حالا كه اينطور شد!

والا آقا مزولق (ببخشيد من نميدونم اسم شما چطوري نوشته ميشه يا معنيش چيه) راست ميگي اين رسمش نيست كه آدم به اونايي كه اومدن تو انجمن كه به همديگه كمك كنن اينطوري نگاه كنه. ما اگه ميخواستيم كد يا اطلاعات مليكا يا هركي ديگه رو بلند كنيم كه نميومديم اينجا وقتمونو تلف كنيم. به هر حال چون من هميشه هر مشكلي داشتم در انجمن هاي مختلف مشكلاتم حل شده، پس بازم جوابش رو ميدم ، هر كي هر طور ميخواد فكر كنه!
سريع ترين راه براي عوض كردن آيتم هاي combobox ها استفاده از javascript هست والسلام!! ولي اگه راه هاي كمي كند تر ولي با امنيت بالا تر ميخواي من استفاده از XMLHttpRequest و كمي Php را توصيه ميكنم. اين تقريبا سريع ترين راه ممكن است. براي اامتحان كردن اين موضوع به اين سايت ها سري بزن و توي editbox هاي جستجو تايپ كن (كمي آرام!) و نتايج بدست آمده از db را ببين!
maniacalrage.net
www.creatimation.net
GoogleSuggest
و اينم يه نمونه comboboxي از اين تكنولوژي: DynCombo
دوباره تكرار ميكنم اين روش كمي كند است، پس بعد از هر حركت كمي صبر كنيد! ولي از reload كردن صفحه خيلي خيلي خيلي سريع تر است.
و مطلب خيلي ميزوني در اين مورد را در سايت wikki بخون و برو سراغش!
اين تكنولوژي فعلا توسط IE, Mozilla/FireFox و Safari ساپورت ميشه. ولي Opera ساپورتش نميكنه
موفق باشي
 

mazoolagh

Active Member
شرقي خان!
اين روشي كه شما معرفي كردي فوق العاده زيبا بود و براي بار اول بود كه ميديدم (مشابه اين كمبو ها را قبلا فقط در محيط access ديده بودم ولي شبيه سازي خوبي از اون براي صفحات وب رو كه با ديتابيس tight connection داشته باشه نه!).

از نظر نحوه پاسخگويي به سوالات نظر من تا حدي شبيه نظر شماست به اينصورت كه پاسخ هر سوال صرفا براي همان سوال كننده نيست بلكه براي هر كسي است كه در آينده ممكن است با آن برخورد كند و اگر غير از اين بود ديگر نيازي به ارشيو كردن مباحث نيز نبود. بنابراين صرفنظر از مسايل جنبي بايد در حد امكان براي هر سوال پاسخ مناسبي ارايه شود.
افرادي كه به انجمن ها مراجعه ميكنند- بدون توجه به سطح اطلاعات و تجربه - چند دسته اند:
1- اشخاصي كه در مورد يك موضوع راهنمايي ميخواهند تا بتوانند از تجربيات ديگران براي تصميم گيري درست استفاده و در وقت و هزينه صرفه جويي كنند.
2- اشخاصي كه در حين انجام كار با مشكلي برخورد ميكنند و تقاضاي كمك در حل مشكل دارند.
3- افرادي كه بدون زحمت ميخواهند با استفاده از ديگران به نتيجه برسند!
4- افرادي كه دنبال كسب نام و شهرت يا ارضاي حس برتري نسبت به ديگران هستند. معمولا با سواد و با تجربه اند - يا حداقل خود اينگونه فكر ميكنند.
5- اشخاصي كه دنبال كاسبي هستند.
6- اشخاصي كه از كمك كردن به بقيه لذت ميبرند.
7- اشخاصي كه فكر ميكنند بالا بردن سطح دانش ديگران و حل مشكلات آنان علاوه بر خدمت به جامعه علمي كه به آن تعلق دارند هم به معلومات خودشان ميفزايد و هم ممكن است در دراز مدت براي آنان منافع معنوي و مادي هم داشته باشد.

به هر حال پاسخ دهنده ها از هر دسته كه باشند نميتوانند نسبت به چيزي متوقع يا طلبكار باشند (چون در هر صورت نيازي از آنان مرتفع ميشود!) و نهايت اينكه اگر از لحن كلام يا نحوه برخورد كسي خوششان نيامد ميتوانند پاسخ ندهند. در مقابل سوال كنندگان هم بايد توجه داشته باشند كه سوال ناقص و نامفهوم نميتواند جواب كامل و دقيق داشته باشد.

باز هم از شرقي عزيز كه با راهنمايي عالي خود باعث شد اين مبحث بي نتيجه و عقيم نماند متشكرم.
مازولاق
 

melika

Member
بابا عجب دعوايي شده اينجا!!!
بچه ها ببخشيد .كوتاهي از من بوده !حالا يا سوالم ناقص بوده يا خسي بودم و ساختار كارم رو قايم كردم...
از شوخي كه بگذريم از همتون ممنونم.
بخصوص شما شرقي جان كه با اين همه لطفت شرمندم كردي.
مشكل خدارو شكر با همين پيشنهاد شما حل شد.
اميدوارم هميشه موفق باشيد
 

جدیدترین ارسال ها

بالا