logo


פרק 3: שמירת מצב

בניית פיצריה: חישוב המחיר

sub calcTotal()
 #calculate pizza cost based on current parameters
 { %sizelabels=('small'=>'small (8",$5)',
                'medium'=>'medium (12",$8)',
                'large'=>'large (16",$10)',
                'xlarge'=>'x-large (18",$12)');
   %sizeprices=('small'=>5,
                'medium'=>8,
                'large'=>10,
                'xlarge'=>12);
   %toppingsprices=('small'=>.50,
                    'medium'=>.75,
                    'large'=>1.00,
                    'xlarge'=>1.25);             
                
   $baseCost=$sizeprices{$size};
   @allToppings=$cgiobject->param("order_toppings");
   $toppingsCost=($#allToppings+1)*($toppingsprices{$size});
   return $baseCost+$toppingsCost;
 }   

השגרה calcTotal בודקת את הערכים הנשלחים מהשדות הרלוונטים, ומחשבת את המחיר הסופי. בהתחלה מגדירים שלושה האשים. ההאש הראשון, sizetables%, ישמש בשגרת ה output_form ליצירת תגיות ל"כפתורי הבחירה" שישמשו לבחירת גודל הפיצה. השתמשנו כאן בהאש, מכיוון שנוח לשמור את מידע המחירים במקום אחד, כך שאם הם יתעדכנו יהיה כל יותר לבצע את העדכון בפועל.

שני ההאשים האחרים, sizeprices% ו toppingsprices% מייחסים גדלים של פיצות לערכי הדולר ($), כך שפיצה קטנה, מקבלת ערך 5 ב sizeprices% וערך 0.5 ב toppingsprices%. אלו הם מחירי הבסיס לגדלים ולתוספות בהתאמה.

השלב הבא הוא חישוב מחיר הפיצה בהינתן הגודל, השמור במשתנה size$. לאחר מכן מחשבים את מספר התוספות, ע"י יצירת המערך allToppings@, אשר לוקח רשימה של כל התוספות שנשלחו בעזרת הפרמטר order_topping. המבנה allToppings#$ מייצג את האינדקס הגבוה ביותר במערך, כך שאם ערכו הוא אפס משמעותו – תוספת אחת ברשימה. כך שאנו מוסיפים אחד לערך הזה ומכפילים במחיר התוספת לפיצה בגודל הנ"ל.

לבסוף, אנו יכולים להוסיף את baseCost$ ואת toppingCost$ ולהחזיר את התוצאה כמחיר הכולל של הפיצה.

בניית פיצריה: לקיחת הזמנה
תוכן עניינים
בניית פיצריה: השלמת הזמנה

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
שמירת מצבים  
עוגיות; חברותנו המושמצות  
דוגמאות לעוגיות חלק ראשון: אחזור עוגיה  
דוגמאות לעוגיות חלק שני: יצירת העוגיה  
מחשבה אחרונה על עוגיות  
שמירת מצב חד פעמית או תסריט "בניית הפיצריה"  
בניית פיצריה: לקיחת ההזמנה  
בניית פיצריה: חישוב המחיר  
בניית פיצריה: השלמת ההזמנה  
בניית פיצריה: עדכון הזמנה  
הרהור אחרון  
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl