[השמעת מוסיקה] ROB אודן: היי. אני רוב, ואני מקווה שאתה מוכן לשים את המניה בפתרון זה. ראשית, בואו נסתכל על קופה. אז לזכור כי כאן אנחנו בודקים כדי לראות אם טופס היה פורסם בדף זה. דבר אז קודם כל אנחנו הולכים לעשות זה ללכת לאחר. ואנחנו הולכים כדי להבהיר את טופס ההרשמה. אז טופס ההרשמה הולך כדי לפרסם register.PHP. ומה זה הולך לשלוח? זה הולך לשלוח את שם המשתמש ש משתמש הוא הולך למלא, סיסמא, ואישור - הקלדת הסיסמה שוב. אז עכשיו כאשר צורה שהיא פורסמה ל register.PHP אנחנו יבצעו את זה אם. מסתכלים על זה אם, אנחנו הראשונים הולך לאמת את הקלט. אנחנו רוצים לוודא שהשם המשתמש והסיסמה לא היו ריקה וכי האישור למעשה תואם את הסיסמה. לאחר שנאמנו שאנחנו יכולים למעשה לרשום את המשתמש. מה זה אומר? ובכן, אנחנו רוצים להכניס את משתמש לתוך מסד הנתונים שלנו. וככה אנחנו נעשה את זה. אז אנחנו הולכים להכניס למשתמשים שולחן שם משתמש שדות, חשיש, וכסף מזומן. ערך ברירת המחדל של מזומנים הולך להיות 10,000. ואנחנו הולכים לעבור כמו שם משתמש, שם משתמש, דרך סופר POST גלובלי שהוגש מהטופס. ואנחנו הולכים כדי להצפין הסיסמה. אז אם זה הצליח, אז תוצאות יהיה שאינו מזויף. אם זה נכשל, אז אנחנו רוצה להתנצל. משהו השתבש. ומה יכול היה להשתבש? ובכן, שם צריך להיות שם משתמש ייחודי. וכך השאילתה יכולה היתה שלא אם שם המשתמש כבר קיים בטבלה. אז בהנחה שזה היה שם משתמש ייחודי, אז אנחנו הולכים לשאילתא כדי לתפוס את זיהוי של משתמש זה. זכור כי הזהות היא אוטומטי להגדיל כל. ואז אם זה קורה לכישלון עבור חלק סיבה, אז אנחנו רוצים להתנצל שאנחנו לא יכולים לתפוס את הזהות. אבל בהנחה שזה לא נכשל, ולאחר מכן אנו תופסים את הזהות ממה השאילתה אתה מחזיר, לאחסן שבפגישה שלנו - ולכן אנחנו רוצים להיכנס למשתמש זה על ידי אחסון מזהה בפגישה סופר גלובלי, ולבסוף להפנות לפורטפוליו שלנו. וזה אותו לקופה. עכשיו אנחנו הולכים לעבור לציטוט. אז הציטוט הוא הולך להיות להגדיר באמת דומה. אנו רואים כאן שזה הקוד ש אנחנו הולכים להפעלה כאשר טופס הוא פורסם בדף זה. אבל קודם שאנחנו באמת צריכים כדי להבהיר טופס זה. אז לקחת מבט טופס הצעת מחיר, מה שדות יש? אנו רואים כי כל הציטוט שהוא אחת תיבת טקסט עם שם הסמל. וכך, כאשר טופס הצעת מחיר הוא פורסם לquote.PHP אנחנו הולכים עכשיו לבצע קוד זה. ומשתנה רק בסופר POST הגלובלי הולך להיות סמל. אנו מאשרים כי על מנת לוודא כי הם בעצם פרסמו את הסמל. ואם הם לא עשו זאת, אנו אומרים לך חייב לספק לסמל. בהנחה שהם עשו לספק לסמל, אנחנו מסתכלים על סמל זה. עכשיו זוכר את המבט הזה עד שאולי יש לי נכשל שכן, טוב, אולי זה לא היה סמל תקף מלכתחילה. אז אם זה נראה עד חזרת שווא, אנחנו רוצים להתנצל כי סמל לא נמצא. ברגע שמצאנו את הסמל, עכשיו אנחנו יכול להפוך את תבנית quote.PHP. מה זה נראה? זה רק הולך להדפיס כי נתח מכל מה ששם היה המניות שווה כל מחיר המניה הוא. עכשיו למה אנחנו משתמשים בזה htmlspecialchars לתפקד? זה בגלל שם המניה ואת הסמל באמת עשוי להכיל מיוחד תווים שלא צריך להתפרש כ-HTML. בסדר, אז זהו זה לציטוט. עכשיו אנחנו רוצים להסתכל על index.php ותיקים. אבל קודם שאנחנו באמת צריכים לבנות שולחן התיקים. הנה איך אנחנו הולכים לעשות את זה. אז בואו נסתכל על המבנה. ואנו רואים כי התיקים שולחן הולך להיות מזוהית. אז זה הולך להיות למשתמש של מזהה שהכנסה מהמניות. יש לנו סמל, שהוא הולך להיות הסמל של החברה שאנחנו החדרת המניות. ולאחר מכן מניות היא מספר מניות כי הוא מוכנס. אז לזכור כי למפרט pset, אנו מציינים כי זהות וסמל - אנחנו בודקים את אינדקסים, זיהוי ו סמל הוא המפתח הראשי. אז זיהוי משתמש והתאמת סמל אמור להופיע רק אחת זמן בטבלה זו. עכשיו בואו נסתכל על הקוד. אז עכשיו index.php הוא הולך לתפוס את כל מידע התיק ושלנו להציג אותו למשתמש. אז קודם כל, אנחנו הולכים לתפוס את המזומנים שהמשתמש כרגע יש מן שולחן במזומן. זכור, השאילתה שתמיד הולכת להחזיר מערך של מערכים. אז למרות שאנחנו רק נבחרו במזומן משורה אחת, אנחנו עדיין צריכים לתפוס מזומנים שעל ידי יצירת אינדקס ל מדד אפס של שורות ותופסים מדד במזומן. אז עכשיו אנחנו רוצים לבחור את כל מידע משולחן התיקים זה רלוונטי לכרגע משתמש מחובר. אנחנו כמובן צריכים לאמת כי כי בעצם הצליח, שבו אנו תמיד צריך לעשות כל פעם שאנו שאילתה. ברגע שיש לנו את כל המידע הזה, מפרט pset מודיע לנו שאנו כי צריך לעשות את זה על מנת לאחסן בצורה יפה כל המידע בזה מערך עמדות. אז אנחנו לולאה על כל מידע לגבי תיק, מסתכל למעלה מניות הקשורות לכל שורה ב מידע לגבי תיק, ולאחר מכן אחסון במערך העמדה שם, מחיר, מניות וסמל כל הקשורים למניות. ולבסוף, אנחנו הולכים כדי להבהיר portfolio.PHP, עובר בסך מזומנים שיש לנו כרגע, מערך עמדות שאנחנו פשוט נבנה, ואת התואר הזה דף שבו יהיה תיק. בואו נסתכל על portfolio.PHP. ואנחנו רואים שמעניינים הגדולים חלק הוא לולאה זו. אז אנחנו מלפפים על העמדות מערך, יצירת שולחן, שבו טבלה ה-- אנחנו אכלוס כל שורה עם מידע שאנחנו מכניסים בתוך מערך עמדות. שוב, אנחנו צריכים להשתמש htmlspecialchars במקרה הסמל הזה או את השם מכיל תווי HTML. וכאן אנחנו הכפלת המחיר ו את כמות המניות שיש לנו על מנת לקבל כמה שזה כרגע כדאי למשתמש. וזה אותו לתיק. עכשיו אנחנו נסתכל על למכור. אז אמכור הוא הולך לחזור ל פורמט שהיו לנו בregister.PHP. אנו רואים שטופס הולך ליפורסם בדף זה. אבל קודם, כאשר אנו לטעון את הדף, אנחנו הולכים לעשות את זה. אז מה הוא עושה את זה? ובכן, יכול פשוט יש לנו את דף מכירה יש תיבת טקסט אחת שהמשתמש נכנס סמל זה כי אנחנו רוצים למכור. אבל אנחנו הולכים להיות קצת יותר חכמים ואנחנו הולכים יש ירידה למטה, המאפשר למשתמש לבחור סימנים ממשיים שכבר יש להם. אז אנחנו מקבלים את התיק של המשתמש. אנחנו הולכים לבחור מתוך תיקים כל הסמלים שהמשתמש כרגע יש לו, כרגע משתמש מחובר. ודא כי שהצליח. ועכשיו אנחנו הולכים ללולאה מעל חזר מידע, רק תופס כל סמל, ולאחסן אותו במערך סמלים זה. ועכשיו אנחנו הולכים מציג את הטופס למכור. אז הטופס למכור הולך רק להיות תפריט הנפתח, בחר. וכל אופציה בצורה למכור היא הולך רק כדי להדפיס את הסמל שתפסנו מ שולחן תיקים. אז הטופס למכור הולך להגיש בחזרה לsell.PHP. כאשר מסתכל על sell.PHP, זה הקוד זה הולך לבצע כאשר אנו להגיש לדף זה. אנחנו רוצים לאמת שהמשתמש למעשה נכנס לסמל. עכשיו בהנחה שהם עשו - אז עכשיו אנחנו רוצים לקבוע כמה מניותיו המשתמש הוא בעצם מכירה וכמה מזומן צריך המשתמש מקבל למכירה שהרבה מניות. אז אנחנו תופסים את מספר המניות ש למשתמש יש את הסמל הזה. אנחנו מחפשים בתיקים עבור ניתנו משתמש והסמל נתון. עכשיו לוודא שזה באמת חזר רציפות. כי אם זה לא, המשתמש לא למעשה יש סמל שכדי למכור. בהנחה שיש לי סמל שהם, אנחנו רוצים לתפוס את מספר מניות שיש להם. ועכשיו אנחנו רוצים להסתכל למעלה איך הרבה כל מניה שווה. אז השתמשנו בפונקציה להסתכל למעלה. אנחנו מחפשים את הערך של הסמל. בהנחה שמראה זה הצליח עד עכשיו אנחנו הולכים לעדכן למעשה כל המידע. אז אנחנו רוצים למחוק מתיקים המניות שאנחנו מוכרים. אנחנו רוצים לעדכן את המשתמש של כמות המזומנים. ואנחנו מעדכנים אותו על ידי מניות פעמים מחיר המניה - אז זה כמה כסף המשתמש פשוט עשה. ועכשיו אנחנו רוצים לעדכן את ההיסטוריה שלנו. אז אנחנו לא לקחנו מראה ליד שולחן ההיסטוריה עדיין. אז אנחנו נחזור לזה. עכשיו סוף סוף אנחנו הולכים להפנות לגבות בתיק. עכשיו בואו נסתכל על לקנות. אז, לקנות צריך להיות די דומה למכור. אנחנו רואים שאנחנו הולכים שוב כדי לבדוק אם אנחנו הגשה לדף זה. בהנחה שאנחנו לא, אנחנו הולך לטעון את הטופס לקנות. אז מה עושה את הטופס לקנות נראה? אנו רואים כאן זה פשוט רגיל טופס זה הולך להגיש בחזרה לbuy.PHP. וזה הולך להיות סמל המשתמש שנכנס, מספר מניות שהמשתמש רוצה לקנות סמל זה, וזהו זה. לכן, כאשר אנו להגיש בחזרה לbuy.PHP, אנחנו עכשיו הולך לבצע קוד זה. אנחנו שוב רוצים לאמת כי משתמש נכנס משהו בתוקף. אז הנה אנחנו עושים אותם בטוחים למעשה נכנס לסמל. כאן אנו מוודאים שהם מניות נכנסו בפועל. וכאן אנחנו מוודאים שהם נכנס שלם למניות, ולכן הם לא מנסים לקנות מניות ABC. עכשיו אנחנו רוצים להסתכל למעלה במחיר של סמל כך שאנחנו יודעים כמה אנחנו מזומן צריך להחסיר מהמשתמש. עכשיו אצטרך לבחור כמה מזומנים למשתמש בעצם יש ולוודא כי שהצליח. כאן אנו אוחזים במזומן. והנה, אנחנו מוודאים כי למשתמש יש מספיק מזומנים. אז אם מספר המניות את המשתמש רוצה לקנות פעמים את המחיר של כל אחד של מניות אלה הוא גדול יותר מאשר כמות המזומנים שיש לנו, ולאחר מכן משתמש לא יכול להרשות לעצמם את זה. בהנחה שיש למשתמש מספיק מזומנים, עכשיו אנחנו רוצים להכניס לתוך התיק של המשתמש. ובכן, אנחנו נכניס למשתמש של תיק אם זה קורה להיות פעם ראשונה שהמשתמש הוא קונה סמל מסוים. אבל מה אם הם כבר יקרו יש לי כמה מניות של אפל? ובכן, עכשיו אנחנו עושים שימוש ב לשכפל הצהרת עדכון מפתח. אז זו הסיבה שקודם לכן צוינו כי זהות וסמל צריכה להיות משותפת מפתח ראשי, כך שאם אנו מנסים הכנס זיהוי וסמל שהם כבר שם, אנחנו פשוט לעדכן את מניות שתכלול את המניות חדשות ש המשתמש הוא קונה. עכשיו אנחנו רוצים לעדכן את הסכום מזומנים שיש למשתמש, שכן הם רק בילה קצת כסף על מניות אלו. ולבסוף, אנו נעדכן שולחן ההיסטוריה שוב. אשר, שוב, נבדוק בשני. וסוף סוף אנחנו להפנות לגבות לportfolio.PHP. אז בואו נסתכל שולחן ההיסטוריה. עכשיו לזכור כי השולחן הוא ההיסטוריה אמור לעקוב אחר כל קונה ו מוכר שכל המשתמשים לעשות, לא רק מספר הנוכחי של מניות ש למשתמשים יש, וזה מה תיק הוא ל. אז אנחנו עוקבים אחרי המשתמש, כי הוא קונה או מוכר, בין אם עסקה מסוימת זו הייתה לקנות או למכור, הסמל זה להיות , מניות מספר קנו או מכר שאנחנו קונים או מוכרים, מחירה של מניה בודדת זה להיות קנה או מכר, ולבסוף, בפעם שקנייה או מכירה זו הוא מתרחש. וזה כל ההיסטוריה מידע שאנחנו צריכים כדי לעקוב אחר. אז כשהסתכלנו למכור, ראינו כי היינו החדרה לתוך למכור היסטוריה, כאם אנחנו קונים או מוכרים, את חותמת הזמן הנוכחית, ו משתמש הנוכחי, הסמל זה להיות נמכר, במספר המניות שהם נמכר, ומחירו של המניה בשלב זה. כמו כן, בקנייה, זה יהיה נראה כמעט אותו הדבר. ההבדל היחיד הוא במקום מכירה, שאנחנו קונים. אז בלמכור ולקנות, אנחנו החדרה לתוך שולחן ההיסטוריות כל קונה ומוכר שקורים. אז כל history.PHP צריך לעשות הוא לתפוס המידע מההיסטוריה שולחן, לוודא שהוא הצליח, ולעבד את המידע הזה. אז מסתכל על תבנית history.PHP, המידע המעניין הוא כאן. אנחנו לולאה על כל עסקות, הדפסה אם זה היה זמן שמועד לקנות או למכור, עיצוב שעשינו עסקה זו. זכור שאנחנו צריכים להשתמש בhtmlspecialchars על סמל, רק במקרה. ולבסוף, עיצוב מספר מניות שנרכשו ואת המחיר של מניה אחת באותו זמן. וזה מציג את כל ההיסטוריה מידע שאנחנו צריכים. וזהו זה לpset זה. השם שלי הוא רוב, וזה היה CS50 האוצר.