פרק 3: שמירת מצבשמירת מצב חד פעמית או תסריט "בניית הפיצריה"יזם הפיצה המצוי יודע שפיצות רבות מוזמנות ע"י משתמשי המחשב, ושהם מעדיפים לעשות כל דבר דרך המקלדת. ולכן בניית שירות פיצות דרך הרשת אינו רעיון גרוע כמו שזה נשמע. עד לנקודה זו נזדקק לסקריפט המכיל קטע CGI אחד, שבעזרתו נלמד גם שמירת מצבים, בעוד הגולש הרעב בוחר לו את הפיצה המועדפת עליו. נתחיל בהצגה ויזואלית – המבנה הכללי שלנו נראה כך: פעולת המסעדה שלנו ישירה: הלקוח ממלא את שדות הטקסט, בוחר במשלוח או באכילה במקום, בוחר את התוספות ואת הגודל הפיצה. לאחר שהוא לוחץ על "Calculate" הוא מקבל את האופציה הנבחרת, ואת המחיר. ניתן לשנות כל אופציה ולאחר מכן להקיש שוב על "Calculate" ולקבל את התוצאה המעודכנת. תסריט יכול להמשך לנצח עד אשר המשתמש יקיש על "Finish Order", שלאחריו ייאסף המידע הסופי, וההזמנה תצא למטבח. כאשר אנו מתבוננים בקוד של biuldapizza.cgi שנראה ארוך יותר מהקוד שאנו רגילים אליו, יתכן ותרצו להיעזר בחלון או בהדפסה הכוללת את כל הסקריפט. כמו כן אתם יכולים לראות דוגמא חיה של "בניית פיצריייה" (לשם ההנאה בלבד, לא תקבלו פיצות כתוצאה מההרצה). #build-a-pizza order form #!/usr/local/bin/perl use CGI; $cgiobject=new CGI; $cgiobject->use_named_parameters; ההתחלה נראית מוכרת – סביבת ה CGI מופעלת עבור כל מהלך תוכנית ה Perl שלנו. @allparams=$cgiobject->param(); if ($#allparams>-1) {&get_state_variables} else {&init} הסקריפט צריך לזהות האם מדובר בהזמנה חדשה (לא נשלחו שדות) או בשינוי הזמנה קיימת. בקטע הנ"ל אנו מושכים את כל הנתונים שנשלחו לתוך מערך, ובודקים האם בכלל נשלחו כאלו (רשימה באורך 1 אומרת שאין פרמטרים). אם נשלחו פרמטרים מסוימים, אנו עוברים לשגרה get_states_variables אשר תקרא את הערכים שנשלחו, ותשים אותם לתוך השדות המתאימים. עבור הזמנה חדשה, אנו עוברים ל init אשר מגדירה את הערכים התחילתיים למשתני "בניית הפיצה". if ($orderComplete) { &complete_order } else { &build_order } מאוחר יותר נראה שהמשתנה orderComplete$ אומר האם כפתור ה "Finish Order" נלחץ. אם כן, נרצה לגשת לשגרת ה complete_order, אחרת הכפתור שנלחץ היה "Calculate" ונרצה לעדכן את העמוד דרך build_order. מחשבה
אחרונה על עוגיות
|