SAM LEVATICH: ברוכים הבאים ל סעיף לשבוע. אני לא אנדי. אנדי נפל חולה היום הזה, ואני כבר בשם סוג של ברגע האחרון להשתלט על. זה עונת שפעת, כדי לוודא שאתה נשארים נקי, לשטוף את הידיים, ואכילה בריאה, כך ש גם לך, אינם מרותקים למיטה. אבל בלי נוסף ADO, בואו נתחיל. היום, אנחנו הולכים לדבר על PHP קצת bit-- איך PHP מתייחס ל- HTML, איך זה מתייחס ל- CSS, וכמה מהאינטרנט דברים שעשית במשימה האחרונה. אנחנו הולכים לדבר קצת על SQL ואיך אתה יכול לעבוד עם מסדי נתונים, שהוא מרכיב די מרכזי של P להגדיר 8-- P להגדיר 7. P להגדיר 7. ואז אנחנו הולכים לדבר קצת קצת על איך בקרי תצוגה לעבוד ומדוע זה פילוסופיה מאחורי כמה דפי האינטרנט מודרניים ועיצוב שונה. די הרבה הרבה סוגים של אפליקציות ויישומים ייתכן שספינה משתמשים במודל זה, מסגרת בקר נוף, שתהיו באמצעות בP להגדיר 7, אז אני לדבר קצת מדוע שהפך הפופולרי, למה זה חשוב ונחמד. ואז אני סוף סוף לעבור ל כמה טיפים על התמודדות עם P להגדיר 7. ואם יש לנו זמן נשאר בסוף, אנחנו באמת יכולים לעשות קצת לעבוד על זה יחד. אז, PHP. למעשה, אתה אולי שמת לב זה-- אתה לא באמת צריך לצלול לתוך it-- אבל P להגדיר 6 היה כמה PHP קוד שקורה. וכי PHP הוא C כמו- שפה, PHP, שלא כמו HTML ו- CSS, היא שפת תכנות, בעוד HTML ו- CSS הם סטטי. הם שפות סימון התמודדות עם סגנון ופריסה חזותית. PHP היא הדבר האמיתי. PHP יש לולאות, יש לו conditions-- כל הדברים האלה זה כיף על ג יש לו כמה דברים שהם קצת קצת יותר טוב מאשר C, שבו אנו תראו, אבל אני חושב שהדרך הקלה ביותר לדבר על PHP הוא רק כדי לצלול ב. אז אני הולך ללכת ימינה לIDE בשלב זה. הדבר הראשון שאנחנו הולכים לעשות הוא באמת נראה קצת בחלק מ קוד PHP שהיה בP להגדיר 6. לכן הדרך שאנחנו עושים לראות-- לפני, הדרך שאנחנו פועלים השרת למכשיר היה שהיינו צריך type-- גם להשתמש היישום שלך או היישום של צוות של server.c על ידי הולך לספרייה ופועל server.c עם או לא arguments-- כל כך פשוט קורא לזה ב מארח מקומי, וזה מה שאתה כנראה עשיתי את רוב time-- ואז מאכיל אותו directory-- עם אשר לשימוש כשורש שלה איפה היית באתר להיות לרוץ, בעצם. שבוע לP זה נקבע 7, כ גדול כמו הקוד שלנו לserver.c הוא, שיש אנשים שיש להם כבר נכתב על הדברים היפים האלה בCS50 שיש לי קצת יותר פונקציונלי, תכנית שרת שמסוגלת התמודדות עם קצת יותר של המורכבויות שנוסיף ל לראות בשני P להגדיר 7 וP להגדיר 8. ואופן שבו אתה מתחיל את שרת הוא רק על ידי הקלדה, "apache50." ולפני שאתה עושה משהו, אתה רוצה לוודא שאפצ'י 50 הוא לא כבר פועל כפי שהוא במכונה שלי, זה מה שעשיתי כדי לבדוק את זה. ואתה עושה את זה על ידי קורא apache50. לעצור, ואתה תראה שזה עוצר שרת האינטרנט, אם אתה יכול להסתכל שם בחלק התחתון של חלון המסוף. ואז פשוט להתחיל, אנחנו הולך להתקשר, "apache50 להתחיל." ואז אנחנו הולכים להאכיל אותו בספרייה. עכשיו, בגלל שאנחנו רוצים להיראות בחלק מP להגדיר 6 קוד שיישמנו, אני באמת העתיק קצת P להגדיר 6 קוד לתיקייה שלי, שבו אתה יכול לראות בצד השמאל יש. זה נקרא "SECTION8" בכל האותיות הגדולות כי אני פשוט כל כך מתרגש להיות חי-זרם היום. אז אם אנחנו רצים זה, שהוא צריך כל עובדים די ביעילות. זה אומר, בסדר, באתר שלנו הוא עכשיו זמין בכתובת של IDE, בעצם, זה מה שאתה משתמש בדיוק כפי שהיה בP להגדיר 7-- P להגדיר 6. כל המדדים שלי נמצאים היום מדד אחד. אז אנחנו יכולים ללכת של כתובת, אם אתה זוכר, רק על ידי לחיצה קטנה הזה כפתור בפינה הימנית העליונה. ואתה זוכר את קוד, זה ש קרה כאשר אתה נכנס לhello.php. ומה הקוד נועד ל לעשות הוא כאשר הקלדת בשם כאן-- אם אתה אומר סם כי זה name-- ואני לוחץ להגיד שלום, כאשר הלכנו לדף הבא, שם שהיה אמור להיות מוצג. זה הייתי אומר, "שלום, סם" או "שלום," כל מה שאתה שם מכניס אותו למרות שאנחנו הלכנו לדף אינטרנט חדש לגמרי. וזה מסוג הדברים ש שPHP יכול לעשות בשבילך. PHP היא מסוגלת להעביר נתונים בין שני דפי אינטרנט. זהו דף אחר לגמרי. תראה את הכותרת היא "שלום" כאן. למעשה, יש להם באותו השם, אבל אני הם מבטיחים אינטרנט שונה דפים אם אנחנו מסתכל על המקור. ואתה יכול להעביר נתונים זה נכנס בשדה טקסט זה, אתה שולח אותו לבא דף, שנקרא, ולאחר מכן הנתונים כי הוא מסוגל להיות שם בצורתו הנוכחית. עכשיו יש לנו עדיין לא מיושמים זה את עצמנו, ש זה מה שאנחנו הולכים לעשות עכשיו כדי סוג לקבל טעם לאיך PHP עובד, אבל הרעיון המרכזי הוא שאתה יכול PHP-- סוג של חושב על זה כמו פונקציה. משהו שPHP יכול לתת לך אין זה יכול לקחת פרמטרים שקלטך לתוך דף HTML באמצעות PHP וצורות, וזה יכול לעבור אותם כפרמטרים לדף הבא שהוא טוען עד. במקרה זה, אנחנו טוענים את זה דף עם הכפתור "תגיד שלום". אבל לעת עתה, אני ממש נמחק חלק מהקוד ש בhello.php שמתנהל שלמעשה בו מוצגות "שלום, או עולם "או" שלום, סם " "שלום," כל מה שהיה רק ​​קלט. אז לעכשיו, אנחנו הולך לעשות את זה, בעצם. אנחנו הולכים לשחזר את זה ו גם להוסיף קצת פונקציונלי יותר, לעשות קצת יותר עם זה, לראות מה PHP הוא באמת מסוגל. אז קודם כל, בואו נדבר על קובץ זה, hello.php. אז אם אנחנו להגדיל קצת bit-- ועכשיו אני סוג של מנסה לגלול את כל הדרך around-- שם אנחנו הולכים. אתה תראה שזה נקרא hello.php, אבל התחביר שלו נראה כמו קובץ HTML. סיבה לכך הוא PHP בפועל בקובץ זה הוא כל תקוע בין אלה בלוקים סימן-שאלת תו. הכל כאן נחשב קוד PHP. ותשים לב ש כשעשיתי את ההערה, תראה מוכר שני לוכסנים. ואם אתה זוכר, ב HTML, אם אני מקליד תגובה, זה נראה משהו קרוב יותר ל זה, שהוא תגובה ב- HTML. אז באמת כל מה שבין שני סוגריים זווית אלה עכשיו קוד PHP, ש באו לידי ביטוי בעובדה שסמל תגובה הקטן הזה הוא הפך לתגובה. אז בכל פעם שאתה כותב קוד PHP, אפילו אם אין קוד HTML מחוצה לה, זה תמיד הולך להיות בסוגר זווית אלה עם סימני שאלה. אתה סוג של יכול לחשוב על איך כל it-- של הקוד שרץ בתוכניות שלך C היה מוקף בעיקרי, חלל int, סד מתולתל, הצהרת סד מתולתלת הסוף. ותראה סוגריים מסולסלים ב PHP, מדי, אבל זה סוג של כמו השיטה העיקרית של PHP. אז עכשיו, איך אנחנו עושים כל דבר ב- PHP? עכשיו, PHP היא תכנות שפה שמאוד כמו C-, אבל זה פועל באינטרנט. אז דבר אחד ש אתה immediately-- אחד הדברים הראשונים שאתה באמת עשית עם C היה לך מודפס דברים החוצה, נכון? אז ב- C שעשינו את זה עם פונקצית printf. אנחנו נתנו לו מחרוזת, כנראה עם קו חדש, ואז אנחנו הופסקו זה עם נקודה-פסיק. לכן הדרך שאנחנו הולכים לעשות את זה בPHP-- כי זה לא ממש printf. זה קצת תחביר שונה. הדרך שאנחנו להדפיס את הדברים ב- PHP הוא שאנחנו אומרים, "הד שלום" או "הד" כל מילה. וכי יש לו את ההשפעה של עשייה printf עם מחרוזת, "שלום". והוא מוסיף קו החדש אליו. אז בואו עכשיו לעשות sure-- אני התרחקתי שוב קצת bit-- בואו נוודא ש קוד שהוא עובד כי מאוד יש אולי גם להיות באג בקוד זה שיהיה לנו להתמודד. אז השרת כבר פועל. אז אם אנחנו לגלול למטה לתחתית, יאפ, השרת עדיין פועל. אז אם אנחנו פשוט הקישו על זה קצת ימינה כאן-- , ברוך הבא אנחנו צריכים get-- גדולים. אנחנו עדיין נתקלתי ב דיאלוג מוכר "תגיד שלום", אבל כשאני מקליד ב" היי, "אנו רואים שהטקסט "שלום" היה אכן הדפיס, וזה בדיוק כמו שציפינו כי ההד ב- PHP הוא בדיוק כמו הצהרת printf. אז בחזרה לקוד, איך בP להגדיר 6 עשו קוד ההפצה אתה מסופק לעשות את זה כך שPHP היית תפוקת הדבר ש הקליד במסך הקודם? ולבחון סוג של למה זה קורה, אנחנו הולך להיכנס index.html, ש הוא הקובץ המקורי, הקובץ ש מופיע במסך זה עם הכפתור "תגיד שלום". אתה שם לב שיש כל הדברים הקלאסיים אנחנו כבר הגענו כדי לצפות HTML כגון כדברים האלה, אלה תגים סגורים בסוגריים זווית, כמו PHP אבל בלי סימני השאלה, המצביע על דבר מיוחד ל- HTML. יש לנו כותרת, אשר היא "שלום". ותשימו לב שכפי שראינו, הכותרת היא "שלום" בשני המקרים. בואו לשנות את זה ל" אומר "רק כדי ש ניתן להבחין בעצמנו איפה אנחנו נמצאים. אבל יש לנו גוף. ואז קצת המעניין, קצת שמופיע ב- HTML, הוא אלמנט טופס זה. וכך יש לנו טופס. וזה המפתח. כך אנחנו עובדים עם PHP. פרמטר הפעולה של טופס אומר שhello.php זה מה שאנחנו הולכים לשלוח הערכים בטופס זה כדי. זה המקום שבו אנחנו עוברים הפרמטרים, כביכול. תוכל להבחין דבר אחר כאן הוא שהשיטה היא "מקבלת". ישנן שני עיקרי שיטות שבי תהיה להיות באמצעות PHP להעביר נתונים בין דפי האינטרנט websites--, rather-- במשימה זו. ושיטות אלה הן "מקבל" ו- "הודעה". יש כמה עדין הבדלים בין גט ופוסט שנקבל into-- יהיה "לקבל" ל, אם תרצה. אבל לכל דבר ו מטרות, לקבל ולפרסם שניהם רק הדרכים ש אתה עובר פרמטרים עם הוצאות להורג מעט שונים. לעת עתה, אנחנו הולכים להשתמש בנקבל כי לקבל את מה שהיה שימש במקור בקובץ PHP של P להגדיר 6. ובעצם, אם אנחנו הולכים ובלחפש לפני שערכנו כל דבר אחר, אני הולך להגיד שלום צריכה-- מה שמך? קהל: אליוט. SAM LEVATICH: הו, אלוהים. אני לא יודע איך לאיית את זה. האם אתה יכול לאיית את זה בשבילי? קהל: E-L-L-אני-O-T. SAM LEVATICH: אני O-T? קהל: כן. SAM LEVATICH: מושלם. אוקיי. אני מניח שעשיתי יודע איך לאיית את זה. מצטער על זה. אבל אם אנחנו אומרים "תגידו שלום," זה לא זה לא הולך להופיע על המסך עדיין, כי אנחנו שונה הקוד קצת. אבל אם אנחנו "תגידו שלום" - אוקיי, אז "שלום" הוא כאן. אבל אם אנחנו לוקחים קרובים מסתכל על כתובת האתר עצמו, אנחנו תראו שזה נגמר עם hello.php? name = אליוט. אז, זו דרך של תקשורת לדף האינטרנט הבא הפרמטרים שאנחנו כבר עברנו. אנחנו אמרתי את השם = אליוט. וזה סופו של דבר איך P להגדיר 6 גישה משתנה שעברנו ב באמצעות הטופס. וזה משהו ש הוא מוזר לבקשת גט. בקשת גט הופכת את הפרמטרים ידוע בכתובת של האתר. ואתה זוכר, גם, בP להגדיר 6 ש הייתי צריך לכתוב פונקציה שעסק בעובדה כי מחרוזת שאילתא זו יכול להתקיים לאחר קובץ. יכול להיות שיש סימן שאלה ואחרי על ידי בעצם כל מספר התווים. וזה בדיוק מה שקורה כאן. והסיבה הייתה לך לנתח ש ביישום שלך של server.c בP להגדיר 6 הוא, כך שאתה יכול לספר לי קוד PHP שname = אליוט. אתה צריך להיות מסוגל לנתח כי מתוך את כתובת האתר כך שקובץ PHP בשאלה ידע מה זה היה התמודדות עם. אז אני מקווה שזה נותן לי המוטיבציה לserver.c עכשיו שאנחנו עוברים על מחוץ לC ל- PHP. אז בואו באמת להתמקד בגישה דברים עברו בבקשת גט עכשיו בנקודה זו. אני הולך להציל את זה. אנחנו לא שינינו דבר. זה נראה כאילו יש לנו שדה קלט. אנחנו קביעת כמה מאפיינים, כפי שאנו יכולים לעשות HTML. אלה הם דברים פשוטים. אנחנו לא צריכים אלה. אבל יש לנו השלמה אוטומטית את, אשר בעצם says-- אתה יודע, כאשר אתה מקליד דברים לאינטרנט, לפעמים הוא מנסה למלא שבבשבילך. אז זה דבר נחמד. אנחנו רוצים לכבות אותו למטרה זו. זו הייתה החלטת CS50. אז אנחנו יכולים למחוק כי אם אנחנו רוצים. פוקוס אוטומטי רק מקלות הסמן בימין הטופס בתחילת. שוב, לא יותר מדי חשוב. אבל name = "שם" - זה קצת מסובך, כי זה שם ושם זה. אבל אנחנו יכולים כבר השתנו זה למשהו אחר. ולמעשה, זה מה שנעשינו עכשיו. אנחנו נגיד "אדם", ש הוא כמו סוג של שם אם אדם מוגדר בשמם. אז בואו נסגור את זה, לפתוח מחדש את האתר שלנו מאז השרת שלנו עדיין פועל 50 אפאצ'י, ואנו אומרים, שלום, הנה אליוט שוב. למה לא? שלום. ואם תלכו עד כאן, אנחנו תראו אז במקום name = אליוט, זה אומר אדם = אליוט. וזה תוצאה ישירה של העובדה שאנחנו פשוט שיניתי את השם = "אדם". אז באלמנט קלט של טופס HTML, שם השדה הוא מזהה ל פרמטר זה מועבר. זה כמו שאם אתה יוצר פונקציה "להוסיף" שלקח בשני מספרים שלמים ואתה אמר int וint ב. זה יהיה שם, ואם אתה רוצה צורה אחרת, ש אנחנו יכולים לעשות רק על ידי העתקה ו ההדבקה, אז תהיה לנו שם ב. אז עכשיו תהיה לנו שני פרמטרים כי הם עברו ב להגיע לwebsite-- הבא דף האינטרנט הבא, hello.php. ואנחנו באמת יכולים לראות כי שוב, אם אנחנו רוצים. זוהי הדרך הקלה ביותר להתמודד עם קוד האינטרנט בIDE, בעצם. אתה מתחיל את השרת, לקבל את זה פועל, ולאחר מכן בכל פעם ש לעשות כמה שינויים, רק קרוב קובץ שרק כדי להיות בטוח. לחיצה על לחצן חזרה הוא קצת מסובך כי זה עלול לטעון קודם לכן גרסה, לא המעודכן ביותר. ואז אתה פשוט לחץ כפתור שוב, פופ תקין up-- הו, ועכשיו יש שתי צורות. ולכן אם אנחנו מקלידים דבר אחד לכל אחד one-- "הירשהורן ג'ייסון," לinstance-- אנחנו אומרים שלום. אנחנו מסתכלים למעלה בפרמטרים שלנו. זה נראה כאילו יש לנו, כ צפוי, = ג'ייסון ו- B = הירשהורן, המייצג את שני הפרמטרים שעברנו לתפקיד זה. אז עכשיו בואו בעצם להגיע ל יישום פונקציונלי ש היה בP להגדיר 6. אז עכשיו אנחנו רק מהדהדים שלום. וזה לא מאוד שימושי. אנו מבקשים להדהד כמה משתנים שעבר אלינו. ואנחנו יודעים את שמו של משתנה זה. יש לנו ויש לנו b. כדי שנוכל לבחור להד גם אחד. אבל איך אנחנו לגשת אליו? ובכן, יש מסוימים משתנים גלובליים ב- PHP. ואני הולך לכתוב שלהם בתגובות כאן. שני החשוב ביותר הם גט ולפרסם למטרות שלנו עכשיו. אלו הם המערכים או, מבחינה טכנית, המילונים שבו המשתנים שלנו שאנחנו עובר לשידור החי בדף האינטרנט הבא. ואנחנו בקרוב לראות כיצד להשתמש בם. עוד הערה קצרה על קוד PHP וכמה פרטים של it-- ב- C, להכריז משתנה או להשתמש במשתנים, אתה היה ראשון להכריז עליהם. ומה היה לך לעשות כאשר אתה הכריז עליהם היה אומרים int או char ב. היית צריך להכריז על סוגים אלה משתנים לפני שיצרו אותם. PHP-- אתה לא צריך לעשות את כל זה. PHP לא שואל ל הסוג של משתנה. והאופן שבו אתה ליצור variable-- לא מ אומר int, char, string-- וזה באמת char *, כפי שאנו יודע-- ולא עושה את כל כי, משום שכל מה ש הוא מאותו הסוג, typeless, אנחנו רק יכולים להשתמש תו אחד, ש הוא סימן הדולר. ואתה תראה את זה כבר צץ עד, דברים קטנים השלמה אוטומטית. וזה אומר ש_GET ו_POST שתי אפשרויות שיש לי זמין לי. חלק מדברים האחרים אלה הם משתנים גלובליים אחרים בPHP כי אתה תהיה באמצעות למעלה במהלך P להגדיר 7. לעת עתה אנחנו הולכים להתמקד בגט ופוסט. אבל זה מועיל דבר שעושה IDE שבו ברגע שהקלדת שבסימן הדולר, זה יתחיל במילוי משתנה הגלובלי או משתנה כבר מוגדר. אז אם אתה רוצה להגדיר משתנה בשם "מחרוזת" רק אתה יכול להגדיר את זה שווה ל" היי. " וזה בעצם פשוט כמו ש. ואז אנחנו יכולים לעשות משהו כמו "$ string הד." IDE יש לזרוק כמה שגיאות אם אני עושה משהו לא בסדר, כך אני מקווה שאני עושה הכל נכון. אבל באגים תמיד מתעוררים. עוד דבר מסובך על PHP היא שזה לא הידור. אז עם תוכניות C, היית עושה השגרה היומית ל-- בעצם, היית לבצע עריכות ל הקוד שלך, היית לשמור אותו, ואז היית לעשות את זה, שבו האיפור היה הצעד שנקרא מהדר, , טקסט להרעיש, ולהפוך את הקוד שלך זה להגיש, להפעלה. PHP היא כמו C-, אבל זה בוצע על לטוס בדפדפן האינטרנט שלך. כך שאין דרך לדעת. הפוך היה זורק אותם שגיאות מועילות, נכון? זה כמו, אתה יהיה לא הכריז משתנה זה לפני שאתה ניסית להשתמש בו. אתה עשית את כל segfault stuff-- הרע זה, segfault, פעמים כיף כל סוג של שהגיע עם איפור. PHP היא חרב פיפיות בגלל שאתה לא תקבל שגיאות אלה, אבל זה גם אומר שאתה לא יודע באמת מה רע בתכנית שלך אם אתה רק להפעיל אותו וזה לא עובד. אבל הבאגים צריכים להצביע כמה דברים קטנים בתקווה מועילה מבחינה תחבירית שאתה יכול לתקן. אז עכשיו אם אנחנו הולכים על צריכה-- אומר, בואו נסגור את זה. פתח מחדש. ואנחנו חוזרים לכאן. אז יש לנו משתנים וb משתנה. ואלה לא סופו של דבר משנה. אנו קוראים להם שעות וגרמו בלי שום סיבה מיוחדת. ואנחנו אומרים שלום. עכשיו זה נראה כמו המחרוזת שלנו "היי" הוא אכן הדפסה. יצרנו משתנה בשם "מחרוזת", להגדיר אותו שווה ל" היי. " שימו לב שאנחנו לא צריכים לעשות malloc או לעשות מערך תווים. ב- PHP, כי משתנים הם typeless, מחרוזת הוא אותו הדבר כמו char ל כל דבר ועניין. זה יכול להיות "היי". זה יכול להיות רק k האופי. זה יכול להיות מספר 1. ולא אכפת לו. לא אכפת PHP על סוג המשתנה שלך. או, זה עושה טיפול. זה אכפת כשאתה מנסה ולעשות דברים עם זה, אבל לא אכפת לו ב צעד ההצהרה. ובדיוק כמו שאתה יכול ב- C, אתה יכול להכריז על מחרוזות הערימה כמו זה למרות שאומר "ערימה" הוא קצת קצת מטעה פוטנציאלי כאשר על PHP אנחנו מדברים. אבל אנחנו לא צריכים לדאוג בקשר לזה. אז יש לנו המחרוזת שלנו "היי," ואנחנו הד מחרוזת. אז עכשיו אנחנו כבר דנו משתנים. אז עכשיו אנחנו צריכים לדבר על גט ו לפרסם ולבצע את הדבר האחרון זה באמת צריך לקום בחזרה זה לפונקציונליות של P להגדיר 6. אז עכשיו אנחנו מהדהד את המחרוזת, אבל אנחנו יש לי משתנה אלה לקבל ולפרסם. ובגלל שאנחנו משתמשים ב השיטה מקבלת, זה נראה טבעי שמשתנים ש אנחנו מעוניינים ב, שני ו- B, יהיה ממוקם במערך או מילון, מקבל מבחינה טכנית. אז אם אנחנו מקימים לקבל כזה עם groups-- לחצתי להיכנס וזה לא מצא חן בit-- אבל כאן יש לנו לקבל. וכך תקבל כבר קיים. אז אנחנו כבר יכולים להתחיל לגישה חלק מהאלמנטים של גט. אם אנחנו מקבלים, תחביר זה ל מערכים ב- PHP הוא מאוד כמו C-. יש לנו שני סוגריים מרובעים שלנו. אז אם אנחנו אומרים לקבל בנורמלי מערך, אנחנו יכולים לגשת ל מדד האפס, המדד הראשון. PHP היא אפס מדד. אנחנו יכולים לומר אפס, אחד, דברים two-- כמו זה. ואני כבר אומר שאקבל מבחינה טכנית מילון. אז מה עושה PHP מתחת למכסת המנוע, שהוא קצת יותר נחמד מאשר C, זה כבר נותן לך כמה פונקציונלי מילון, ש הוא שולחנות באמת חשיש, או מנסה, כביכול. או, מבחינה טכנית זה יכול להיות לנסות גם כן. אבל PHP מיישם שולחן חשיש, המהווה מילון יעיל. וכך אנו יודעים את השם של המשתנה שלנו, נכון? זה שעבר ב מחרוזת השאילתה על ידי PHP. יש לנו = h ו- B = g בי וב השמות של המשתנים. לכן הדרך שאנחנו יכולים לגשת ל ערך שמתאים למפתח במילון שלנו הוא רק באומר _GET_GET [""]. אז עכשיו יש לנו _GET [""]. ואם אנחנו פשוט להחליף בתוך ההד שלנו, אם אנחנו הד _GET_GET [""] - ונראה אם ​​הבאגים זורק את כל שגיאות על זה-- אנחנו נשמור את זה ולסגור את זה. לפתוח אותו. אז אנחנו רק עושים תקין עכשיו, כל כך ב לא משנה. "" ו- "לו" - "זִמזוּם." ו" זמזום "." אותה " נשמע טוב. וזה הדפיס "," שהוא משוגע. אבל זה בדיוק מה ש קורה בP להגדיר 6. בעיקרון, מה שP להגדיר 6 היה עשות-- הד שלום, name-- בו היה לי שם משתנה וזה פשוט מבקש ממך להקליד שקצת טקסט. היה גם כמה קוד נוסף שבי זה כלול אם הצהרות, שאנחנו יכולים לעשות כרגע. אנחנו יכולים לומר אם קיימים, ש הוא פונקציונלי בתוך PHP, _GET עם הקו התחתון, "שם" - שבעצם אומר, "אם שם כבר מלא ב" כי היינו יכול פשוט לוחץ על הכפתור לשלוח את הטופס ללא הקלדת כל דבר לתחום זה. ואנחנו עוטפים שבנו ידידותיים סוגריים מסולסלים. אנחנו יכולים להיות הצהרה אחרת. וזה כל מה שבתוך זווית PHP הסוגר, סימן שאלה, תושבת זווית, אם אתה. ועכשיו נראה אם ​​זה עובד. אני כל הזמן מחכה שזה באגים ושטויות עליי, בעצם, אבל יש לו עדיין לא. אולי זה יהיה עכשיו כי אני מדבר עליהם. כן. זה עשה, למעשה. אז, שום דבר לא מופיע. זה בגלל משהו לא בסדר שכתבתי בקוד PHP. והזכרתי את הניפוי הוא מסובך, כי ב- PHP, אנחנו לא לקמפל אותו מראש והמהדר לא אוהב, כאן המקום שבו השגיאות שלך הן. אבל מה אנחנו יכולים לעשות הוא-- לעשות אנשים זוכרים איך להסתכל על הרשת שונה בקשות שPHP-- או שאתרים לִשְׁלוֹחַ? [? אלין?] עשה את זה ב להרצות פעם או פעמיים. אתה זוכר איפה אנחנו הולכים למצוא החובות השונים ו -200 OKs, כל קודים אלה שנשלחים דרך HTTP מדף האינטרנט לדף אינטרנט? האם מישהו זוכר לאן אנחנו הולכים לעשות את זה? קהל: מקור דף. SAM LEVATICH: מקור דף. בְּדִיוּק. אם אתה הולך למושלם הדף Source--. אז מקור הדף מושך את המפקח. ואני משתמש בספארי. הרבה מכם יהיה כנראה להיות באמצעות Chrome או Firefox. אבל כל עוד אתה בכל browser-- המודרני ואל תהסס מעקב לאורך אם אתה רוצה. ניתן להקליד את הקוד הזה או רק להסתכל פנימה סט P 6 ספרייה לכמה דברים דומים. hello.php הוא מה שאנחנו כרגע עובד על חיקוי. אז יש מגוון של כרטיסיות. אנחנו יכולים להסתכל על כל המשאבים. אנחנו יכולים לראות את קוד המקור. אז נראה שזה לא לקבל את הגוף האחרון בסופו של הדבר. זה מצא שגיאה ב- PHP ו הפסיק טעינת דף האינטרנט השלם. אפילו אין לנו סוף תג לHTML או כל דבר. ואם אנחנו מסתכל על הרשת, שביכולתנו רואה שאנחנו נשלחים בקשה. זה תחום. זוהי הכתובת. זה מסמך. אנו משתמשים בשיטת הגט. וזה אדום. או, זה היה אדום כש לא היה בחירתו. איך אני לבטל את בחירתו? ובכן, זה היה אדום. תן לי לרענן. הנה זה. עכשיו זה אדום. אז זה אדום, מה שאומר ש זה נכשל, וזה רע. אז בואו לבחון מדוע זה לא מצליח. אז כל מה שיכול מקור הדף בעצם אומר לך הוא הדבר שלך לא עבד, שבו אנו כבר יכולים לראות. אז באופן אידיאלי יש היית להיות כלי שימושי יותר. ויש כמה הרחבות דפדפן המאפשר לך לאתר באגים PHP, אבל אנחנו לא הולכים ל כותב טון של PHP, אז זה כנראה רק הטוב ביותר להסתכל דרך הקוד שלך בזהירות ורק לוודא ש זה לא עושה שום דבר אחר. אז בואו לראות אם הפורמט של זה אם הצהרה היא היכן הבעיה. אני רוצה לטעון שאחזור לכאן. שלום היי. אז יש בעיה שם. אז לתחביר נכון של PHP, PHP הולך להיות שבתראו לולאות כמו C-. תראה אם ​​הצהרות. אתה תראה את כל החברים האלה כי אתה כבר להכיר עם מעל הקורס של סמסטר CS50 זה. אבל הדרך הטובה ביותר להבין איך לעשות משהו ב- PHP הוא גוגל זה או להסתכל על כמה דוגמאות של קוד PHP כי אתה יודע את הפונקציונליות. אתה יודע מה שאתה יכול לעשות עם התכנית. אתה יכול לולאה. אתה יכול פעמים לולאה רבות ככל שאתה רוצה. אתה יכול לולאה בכל מיני דרכים שונות. אתה יכול ליצור פונקציות. אתה יכול ליצור פונקציות ש לקרוא לפונקציות, פונקציות אחרות שקורא לעצמם. ויש לך שמות למושגים אלה. יש לך רקורסיה, לולאות, אם, תזרים שליטה אחר. וכך גוגל הוא החבר הכי טוב שלך. אפילו לומר, "אם PHP הצהרה "ויהיו להיות טונות של הודעות עם תשובות לאנשים אחרים שהיה לי שאלות דומות לך, שרק מתחילים עם PHP וסקרנים לגבי דבר תחביר. כי יש לנו את המותרות של להיות תוכל לעיין בקוד בסט P 6, אנחנו בעצם למשוך אותו למעלה ורואים ש אישור, הנה משהו מעניין. אז זה מה שהוא באמת נראה כמו בP להגדיר 6. אז אם אנחנו עוברים את זה, אנחנו יכולים לראות שיש לנו יש כמה קטן האלה ביטים סימן שאלה כמו PHP. ויש לא סוגריים מסולסלים. יש נקודותיים. ויש מתולתל פלטה ב- PHP, אבל זה היא תבנית ודרך לעשות PHP שעובד היטב עם HTML כי כפי שתראה, אנחנו סוגרים את PHP אלה bits-- elses והטענות וכל לראות-- ולאחר מכן אנחנו interspersing HTML בתוכם ועדיין הבאים בקרת זרימה שנקבעה על ידי PHP. אז רק אני הולך הליכה מהירה דרך זה בגלל זה הרבה מאותו מושגים שאנחנו עושים לפני. יש לנו אם לא ריק, סוגריים, _GET_GET ["שם"]. כל זה באותו החומר. אנו משתמשים במילון _GET ש PHP שולח על פי בקשה של צורות, בגלל זה הוא הפרמטרים של הפעולה, והשיטה היא לקבל. ואז שמסתיים ש. המעי הגס הוא מסמן רק כדי לעשות את זה אם אם ההצהרה מעריכה לאמיתי. זה כמו סד מתולתל. ולמעשה, זה סד מתולתל בשפות אחרות כמו פייתון, שבו אתה עלול להיתקל אם אתה רק לעשות את זה לפרויקט הגמר שלך. ולאחר מכן את הקו הזה, שלום. אז יש לנו הדבר המוזר הזה. יש לנו יותר סוגריים. אין HTTP יניהם-- או PHP, מצטער. אבל יש סימן שוויון. ואז יש לנו פונקציה, htmlspecialchars (_GEThtmlspecialchars (_GET ["שם"]). זה כמו סוג של יותר גרסה מתקדמת של הד. כמו שהיו הד כדרך להדפיס דברים בPHP. זוהי פונקציה זה מוגדר ב- PHP ש יעסוק בכמה מגעיל יותר דמויות וערכים בייט כי אתה יכול להעביר את זה. זה תמיד הבטוח ביותר לשימוש זה. אבל הד יעשה את העבודה בסדר גמור אם אנחנו לא התמודדות עם כל דבר מגעיל מדי. וכך זה יש את אותו השפעה בעצם, החומר הזה בין השאלה סימנים מוערך על ידי PHP. htmlspecialchars חוזר HTML נחמד ערך מודפס של _GET_GET ["שם"], דהיינו כל מה שאנחנו הקלדתי בטופס. ואז זה יגיד שלום, חלל פסיק, ולאחר מכן ש. שכל דבר בין הסוגריים זוויתיים יוחלף על ידי מה ש htmlspecialchars מעמיד. מתוך אז זה בעצם דומה למה שאנחנו עושים. ויש לנו הצהרה אחרת זה שלום עולם, מה שהופך את התחושה. אז עכשיו בואו נחזור לנו קוד ולראות exactly-- הו. אמרתי קיימת, שאינו דבר שאנחנו רוצים לעשות. רצינו לומר לא ריק. וכך זה צריך לעבוד קצת קצת יותר טוב, לא _GET_GET הריק ["שם"]. ושסד מתולתל תואם לזה סד מתולתל. יש לנו הסוגריים המסולסלים שלנו כאן. הד שלום ["שם"] _GET. בואו אראה אם ​​זה עובד קצת יותר טוב. אנחנו עדיין פועלים בשרת שלנו. שלום ג'ייסון. שלום ג'ייסון. וזה עבד הפעם. ואז זה הוכחה כי אכן אתה יכול להשתמש בסוגריים המסולסלים ש מכיר ואוהב בקוד PHP ב- HTML. קוד PHP הניתן ל אתה בpset 6-- pset 6-- מספק דרך נוספת עושה אותו דבר. אז עכשיו יש לנו את הכח. יש לנו את הפונקציונליות ליישם קוד PHP שראינו בpset 6 בעצמנו, בעצם. לפני שאני ממשיך הלאה, מה הם כמה מ שאלות שיש לך בשלב זה? כן [לא ברור]. קהל: אז בגרסה בpset6, כאשר אתה מפעיל אותו, יש מקום. ואני יכול לראות בו החלל הוא אחרי הפסיק. [לא ברור] התחלה הסוגר הפתוח. איך אתה משלב את המרחב ב הדרך בה אתה כתב קודים משלך? דובר: זו שאלה טובה. ואז בואו להבין את זה. אז זה באמת שאלה טובה ואחד שאני לא רואה. אבל בואו נעשה את זה ביחד. אז קודם כל, מה ש אני עושה עם הד כאשר אנחנו רק הד שלום, זה פלטי שלום. אם הד עכשיו זה לעלות על נפרד קו, בואו נבדוק מה קורה. אז אנחנו לחצו זה. אנו חוזרים ואומרים, היי ג'ייסון. אז שוב, אין לנו את המרחב הזה. וזה בגלל, ב PHP, כאשר יש לנו הד, לא משנה כמה spaces-- לא, לא V-- לא משנה כמה חללים שאנחנו מכניסים ל כאן-- אם אנחנו עכשיו לטעון את זה שוב, היי ג'ייסון. כן, תראה, כל אלה רווחים ירדו לאכול עד. וזה משהו ש פונקצית ההד עושה. אז לטפל ב חלל ש, וזה אחת הסיבות למה אתה לא משתמש בהד ואתה משתמש htmlspecialchars במקום. אני סקרן לדעת מה היית יקרה אם עשיתי את זה שבו אנו מוקפים חלל במחרוזת. אני בכנות לא בטוח מה יקרה כאשר אני עושה את זה. כך שדרך אחת. זאת דרך אחת לטפל בזה. אם אתה עוטף את החלל ב מחרוזת, אז החלל יהיה פלט יפה על ידי הד. הדבר הבטוח ביותר לעשות הוא לעשות htmlspecialchars. זה תמיד ההימור הבטוח. אבל עכשיו יש לנו דרך לעשות זה עם הד במידת צורך. ובאופן דומה, אנחנו יכולים הד קווים חדשים, כל הסוג דברים שאתה מכיר עושה ב- PHP. כל אחד אחר, מה הם יותר שאלות שיש לאנשים אחרים בשלב זה על PHP? אם אנשים הגיעו קצת באיחור, אני שמח להישאר אחרי קצת ולדבר על כמה מההתחלה. וזה גם כל livestreamed, וארכיון, שהוא משוגע. בכל מקרה, אז עכשיו בואו נעשה קצת דברים מתקדמים יותר עם PHP. ואחד הדברים הראשונים שאתה הוכנסו ב- C היה ללולאות. ויש לי PHP חזק יותר ל לולאת foreach נקראת הלולאה. וזה נראה כמו זה-- לכל ריק כסוגריים ריקים, מתולתל, לעשות את הדבר. אז זה בעצם קיצור. ראה, ללולאה כ בנייה תחבירית תוכנן ב- C והרכבה שפה ודברים כאלה. המציא ב- C, בדיוק, כמו קצרנות להרבה סוגים של לולאות שאנשים רואים. כמו כשאתה כתב לולאה, יש היה לעתים קרובות שלב אתחול להורג מייד בהתחלה, מצב שבו הלולאה הייתה stop-- וזה התכונה זה רק בלולאה בזמן, או שבעוד יש בדיוק רק שfeature-- ולאחר מכן צעד incrementation בסוף. וכך היית לעתים קרובות מוצא את עצמך כתיבת קוד כמו הבא. אני הולך למחוק חלק מזה. אבל אם אנחנו iterating דרך דמויות במערך, למשל, כמו שיש לנו יש מערך של תווים. מצטער להחזיר ג אני יודע, חשב שאתה עשית. אבל זה רק לצורך לימוד PHP, אני מבטיח. אז אם יש לך str char אורך 8, ובואו אומר שזה אומר hellooo עם אפס נגרר. גדול, אז זה המחרוזת שלנו. ואז היו לנו ללולאה. יש לנו int i שווה 0. ואנחנו רוצים לצאת כאשר str שלי שווה לא שווה ל null, כי אנחנו לצאת כשזה שווה null. ואז אנחנו עושים i ++ בכל נקודה ללולאה. עושה משהו עם str שלי. אז הנוסחה הבסיסית הייתה, היו לנו מערך זה ש רציתי לטפל אלמנטים נפרדים. אבל מה שהיינו צריך לעשות הוא שהיו לנו ל בעצם ליצור שלם נפרדת משתנה שסופר את כל זמן שעברנו את הלולאה. ואז יהיה לנו אז לקרוא strstr [i] כאשר מה שאנחנו באמת רוצים לעשות פשוט ללכת אופי על ידי דמות, נכון? אנחנו לא רוצים להגדיל מספר שלם ולאחר מכן להשתמש במספר שלם ש כדי לגשת לכל דמות בנפרד. אנחנו באמת רוצים תו אחרי תו. וכך לכל אחד בתבונה מחשבים את זה בשבילנו. אם יש לנו מערך, ש אנחנו יכולים להכריז ב- PHP כפשוט-- אם יש לנו משתנים בשם, בואו נקראים לזה מערך. הנסים של לא הקלדה, זה בדיוק כמו כל משתנה אחרים. זה פשוט מערך. ויש לי [לא ברור] כמו קטן 1, 2, 3, רק סוג של מערך אותחל. זה בסדר, זה לא כמו foreach שלי. אבל אם אנחנו foreach-- למעשה הקלדתי שקצת לא בסדר. ישנן שתי דרכים לעשות לולאת foreach. יש תחביר וכבתחביר. ואנחנו הולכים לעשות בתחביר הראשון, לא כ. זה הטעות שלי. num אז foreach במערך, הד num. ו- PHP צועק ב שלי מסיבה כלשהי. זה מציאת בלתי צפוי במשהו, שהוא קצת מפריע. אבל אנחנו להבין למה שהוא ברגע. אז לא כזה. בואו ננסה באמצעות כ. הוא מעדיף כתחביר הוא נראה. אז בואו לעשות מערך foreach כnum. אז הסבר קטן של מה בדיוק קרה הוא כמו התחביר הוא saying-- הבאר ראשון, בואו נסתכל על מה זה מדפיס. אז אנחנו פותחים את IDE שלנו. אנחנו הולכים כאן. אנחנו אומרים, הלו ג'ייסון. וזה עשה 123, אשר היה התוכן של המערך שיצרנו למעלה. אז צולל לתוך לולאת foreach זה, יש לנו מערך משתנה בשם אשר הוא מערך של שלושה מספרים. ואז אנחנו עושים foreach מערך כnum, הד num. וזה יותר אינטואיטיבי מאשר ללופ. אנחנו אומרים, טיפול בכל אחד מ הדברים במערך כnum, אני רוצה שתיתן לי num. וזה בדיוק מה שהוא עושה. PHP היא חישוב ש כשאתה אומר מערך foreach, עם מערך ויש לך עסק, מה ש אתה הולך רוצה לחזר על היא הדמויות במערך ש, הוא ints במערך ש, הוא האלמנטים במערך ש. וזה מאפשר לך לאחסן אלה משתנים כnum, וnum אז פשוט פלט מייד ולא אומרים, יש לי משתנה בשם i, ו אז אני רוצה strstr פלט [i]. וכך המאפשר לנו לעשות דברים מגניבים. כמו בעצם אנחנו לא צריכים ליצור משתנה אלה כמוני של ולעשות את כל דברים incrementation זה בסוף. PHP מטפל בכל זה בשבילך. אז עכשיו בואו נדבר על foreach כ הוא חל על מילון _GET. אז אנחנו להגיב זה במהירות. אז יש לנו מערך _GET. יש לנו משתנים זה. ויש לו כמה דברים בזה. נכון לעכשיו, יש לנו משתנים אחד בלבד שעבר אליו, שהוא שם. אבל אם אנחנו הקש Enter, עכשיו יכול להיות לנו שני משתנים. אנחנו יכולים להיות שם וגיל, למשל, אם אנחנו רוצים להגיע לגיל וגם שמו של אדם, באפן מצחיק מספיק. אז עכשיו _GET הולך להיות מילון עם שני אלמנטים, עם שני זוגות ערך מפתח. וkey-- הראשון אני הולך לכתוב את זה על הלוח מדי. יש לנו המילון שלנו הוא _GET. מצטער, זה קצת קשה לראות. אבל בתוך המילון שלנו יש לנו שם, שהולך להיות משהו כי אנחנו נתון. ויהיה לנו גיל, שהוא גם הולך להיות משהו שאנחנו נתון. וזה השלמות המילון שלנו. אז יש לו שני אלמנטים בזה. וזאת משום שforeach לולאות חכמות, אנחנו אולי חושב, ובצדק אולי חושב שforeach יכול לחזר דרך זה מילון, הדפסה החוצה הערכים שניתנו על ידי שם וגיל. אז בואו למעשה לעשות בדיוק את זה. בואו לבנות לולאת foreach. ואנחנו הולכים לעשות ל_GET כ. ואנחנו הולכים לעשות את הדברים הבאים. אז בואו לראות מה קורה אם אנחנו מקלידים רק מילה, ולאחר מכן לומר מילת הד. אנחנו גם הולכים להד קו חדש רק כדי לעשות את זה קצת יותר ברור, מה הולך. אז בואו לראות. זה לא נותן לי את כל שגיאות. ואנחנו נסגור את זה. באתר שלנו, אתה הולך לעשות הרבה שבמשך pset7. אז אנחנו אומרים את השם שלי הוא סם. הגיל שלי הוא 45. זה לא. אבל זה מדפיס, כצפוי, סם 45. וכך תוכל להבחין כי מה foreach לולאת did-- כאן, בואו נחזור לזה אז זה תלוי על board-- אנחנו מקבלים _GET כמילה. והיו ארבעה דברים ב_GET. אבל זה הדפיס רק שני דברים. foreach, להיות עצמי המודיעין שלה, ההנחה היא כי מה שאנחנו באמת רוצים היה הערכים, לא על המקשים. אבל יש דרך שנוכל להדפיס את המפתחות כמו גם, אם אנחנו רוצים. אם אנחנו רוצים גם לדעת מה משתנים אלה נקראו, יש דרך ש תוכל לגשת לזה גם כן. והדרך לעשות סוג של ש, כך אנו יכולים לומר, מאפשר באמת לפצל אותו לזוגות ערך מפתח. אז בואו לראות מה קורה עכשיו. אז יש לנו מפתח. יש לנו ערך. יש לנו עוד חדש קו לקריאות. ובואו נראה מה קורה כאשר אנחנו עושים את זה עכשיו. אני לא יודע בן כמה ג'ייסון הוא. ג'ייסון של 15. אז יש לנו את השם ג'ייסון, גיל 15. אז היינו יכול לגשת למפתח וזוגות ערך של מילון זה רק באומר נקודות מפתח כמו לשווי. וזה תחבירי foreach קצת סוכר המאפשר לך לגשת דברים במילון. אז אני מקווה שזה סוג של דגש כוחו של foreach הלולאה. אתה יכול פחות או יותר לזרוק כל דבר שנראה iterable, כמו כל דבר שיש מספר רב של אלמנטים כמו מערך, כמו dictionary-- אלה הם שני דברים עיקריים שאתה עובד עם הן בחיים ובpset 7. אז אתה יכול לזרוק דברים ש בזה, וזה יהיה להבין מה שאתה רוצה לעשות עם זה. זה אומר, בסדר, אני הולך לקבל את הדברים האלה מנתונים ש עבר לי. וזה משהו שאתה הולך להיות באמצעות הרבה בpset 7. אני הולך לגלילה מהירה למטה רק כדי לראות איפה אני ב. האם יש לי אנשים שאלות בשלב זה? שאלות בכלל? כֵּן? קהל: אז עם המפתח וערך, אתה יכול שם זה משהו אחר וזה עדיין עובד? דובר: אופס. וואו, אני לגמרי נמחק כל הקו. עבודה נהדרת. אז,. מפתח וערך הוא רק מוסכמה. זה מועיל. היית מקבל כמה עיצוב נקודות, אולי כמה נקודות בסגנון לעושה את זה כי זה באמת מעביר את הכוונה. אבל אנחנו אומרים וyarp. קהל: אין לך ל לשנות משהו בקובץ HTML על מנת לשקף את זה? דובר: בכלל לא. קהל: וזה רק יודע ש בגלל שווה than-- יותר דובר: כן. קהל: מחוון --that שthat's-- דובר: כן. זה תחביר foreach, אבל כן. קהל: אין סוגים. אז מה אם אתה רוצה גיל להיות רק מספר? האם יש דרך לעשות את זה? דובר: יש דרכים לבדוק אם משתנים מתאימים לסוגים מסוימים. אז PHP שואל קצת יותר מ שלך כי אין בסוגים. מבחינות מסוימות הוא מבקש פחות. במובנים מסוימים הוא מבקש יותר. כי אם יש לך רק משהו במשתנה, אין לך מושג איזה סוג זה. אבל אם אתה חכם על המשתנים שאתה מקצה לסוגים ולוודא שפונקציות return-- אתה רק רוצה פונקציות להחזר רק סוג אחד של ערך כל כך כי בעצם אתה יכול מצפה שהמשתנה שאתה מקבל בחזרה מפונקציה יהיה מהסוג כי אתה חושב שזה יהיה, בעצם. אבל יש כמה שיטות שבו אתה יכול לבדוק. אני לא זוכר אותם את החלק העליון של הראש שלי. אני מחכה לזה להכחיל. isint? isstr? ישנן שיטות שיכול שנבנה לתוך PHP לבדוק את הסוג של משתנים בשבילך. אבל אם אתה מקצה משתנים בזריזות, אתה לא צריך צריך לעשות את זה יותר מדי בpset 7. אבל שיטות אלה אכן קיימות. וזה משהו ש הוא בשפה עצמה. ואני לא זוכר את התחביר המדויק. אנחנו יכולים אפילו לבדוק את זה. אבל הזמן הוא המהות. יש לי האם מישהו אחר יש עוד שאלות? כֵּן. קהל: יש לי רק אחד יותר. אז אתה הזכרת את שיטת GET, אבל לא הזכיר את שיטת POST. האם אנחנו חוזרים לזה? דובר: כן, אנחנו אחזור לזה. זה בדיוק מה שאני מחפש בטלפון שלי, שעכשיו נרדם, אבל אני תמצא אותו. רק כדי לוודא שפגענו כל הערות PHP. כן, אין גרסת ניפוי. כן, יש לנו עוד כמה דברים ש אנחנו רוצים לעשות עכשיו, בשלב זה. אז דיבר על POST, שההזכרה, ההבדל היחיד בין לקבל ולפרסם הוא שזוכר שהסתכלנו בכתובת אתר זו וראינו, הו, שם שווה ושווה גיל yarp צודק ב- URL יש לנו. POST הוא חשאי קצת יותר עם פטירתו של מידע. אז אם אתה לא רוצה משתמש לדעת, למשל, אתה לא רצה את שם המשתמש וסיסמא של האדם כרגע מחוברים ליוצג ב כתובת האתר, וזה דבר סביר לא רוצה את כתובת האתר, בגלל שמישהו יכול לראות את זה. אם הם מקשרים מישהו לדף, אתה לא רוצה כתובת האתר שלהם מטויחת שם, בגלל שיאפשר לאנשים להתחבר רק עם ההדבקה של כתובת אתר במקום של ממש מילוי טופס. POST הוא קצת חשאי יותר. והדברים היחידים ש נצטרך לשנות הם שיטה, שינוי זה מלהגיע להודעות. ואז בתוך HTTP, במקום לגישה ל_GET המערך, אנחנו הולכים כדי לגשת ל_POST המערך. ואנחנו שמים לב ש, אם אנחנו פותחים את זה בחזרה שוב, ג'ייסון יורד לאט בגיל. שם ג'ייסון, גיל 14. אותו החומר צץ. אבל אנחנו הולכים לכתובת האתר ו משתנים אלה לא נמצאים שם. ואופן שבו POST passes-- כך זוכר איך להסתכל על המקור של דף. אנחנו הולכים לרשת. אנו לרענן. וזה עוד דבר ש POST ייתן לך אזהרות על. אולי ראו תיבה, טקסט תיבה כמו זה בדפדפן שלך. אתה בטוח שאתה רוצה לשלוח טופס שוב? POST הוא מה זה שליחת טפסים אלה. כי בעצם אם אתה נשלחת פרטי כרטיס אשראי למישהו, זה לא הולך להופיע ב- URL. זה הולך להיות בקשת POST. לכן, כאשר אתה לרענן את הדף, זה לשלוח שוב כי לאחר בקשה. אז עכשיו אנחנו רוצים לשלוח טופס שוב, כי זה לא הולך ליצור כל רכישות כפולות. ואנחנו שמים לב שכאן למטה, השיטה אנו משתמשים היא POST. וזה אכן להעביר בתים. זה הועבר 401 מהם. התכנית של די זעיר. אבל אין לאן שאנחנו יכולים לראות הערכים שמועברים. דפי האינטרנט עצמם יכולים לראות, אבל אנחנו כמשתמשים לא מסוגלים לראות, אלא אם כן אתה האקר. אם אתה האקר טוב, אתה יכול להסתכל. אם אתה יודע בסיסי פורמט של HTML, הערכים יעשו את עצמם לדעת בדפים. תוכל לראות. הערכים יהיו שם, הם רק קצת פחות ברור לך לגישה, בעצם. האם יש לנו יותר שאלות על GET, POST before-- מה שאנחנו הולכים לעשות עכשיו למעשה מסתכל על חלק מהקוד שאתה נותן בpset 7, לדבר על איך הוא משתמש בחלק מהמושגים האלה, ולדבר על דברים שאתה הולך צריך לעשות קצת בpset 7. יותר שאלות לפני ש? יש עוד שאלות אתם? גדול. בסדר, בואו נסתכל קצת בpset 7, אין ספק מה אתה כל הנרגש ביותר על. אני מתכוון, זה משהו ש דוד עובר קצת. אבל תהיה לנו שלוש ספריות ב עליון, כמו גם קובץ תצורה. זה עבור מסדי נתונים, אשר נשלחה לדבר על בכחמש דקות. כולל, אתה אף פעם לא צריך לחפש בספרייה זו אם אתה לא רוצה, אבל זה נחמד יודע שיש כל מיני עוזרים. עוזרים הוא כמו פונקציות מועילות. ואז יש לנו config, אשר קובע כמה דברים עד. יש כמה פונקציות שיש CS50 נכתב כי הם בעוזר וconfig. וחלק מPHP ש כבר יוצא בקבצים יעשה הרבה יותר מיין עבודת רגליים של אטומה בשבילך. כמו אם תלכו לציבור login.php, וזה מה ש מופיע תקין כשאתה נכנסת לpset 7. אנחנו תראו שיש זה דורש הצהרה. וזה סוג של כמו חד כוללים, hashtag כולל אם אתה מדור חדש יותר. אבל זה בעצם אומר שאני צריך גישה לכל הפונקציות בconfig.php. ואתה יכול להיות דורש לכל מיני דברים אחרים. config למעשה דורש עוזרים. אז בכל פעם שאתה צריך config, אתה גם כולל או דורש עוזרים גם כן. אז זה נותן לך גישה לכל פונקציות מגניבים שאנחנו הולכים להשתמש, דברים כמו לדקלם. בעצם אני הולך להקל זה קצת למטה. אז הפונקציה אז אנחנו הולך לטייל ב רק לפני שאנחנו עוברים ל- SQL קטן קצת הוא פונקצית login.php, רק משום שהיא משתמשת חלק מהנושאים שאנחנו פשוט דיברנו על ב- PHP. אתה רואה את הדבר הראשון הוא אם $ _SERVER. זהו עוד משתנים גלובלי ש אתה הולך להיות התמודדות עם. זה כמו _GET ו_POST, אבל מה שרת מכיל הוא זה יכול לתת לך יודע אם שיטת הבקשה היה GET או POST. כמו בעבר מה אנחנו עושים רק בקוד שלנו שאנחנו כתבנו, אנחנו רק היו משנים אותו להיות GET ו POST תלוי מה יש HTML. אבל יש דפים שיכולים להיות לגשת עם שני הסוגים של בקשות. ואולי כדאי לך לעשות דברים שונים בהתאם בסוג של בקשה, רק כניסה כמו עושה. אז אתה יכול לבדוק בקשה ש שיטה באמצעות מקשי גישה, באמצעות שימוש במפתח ומקבל ערך של משהו במילון _SERVER. אז זה עוד גלובלי משתנה כמו _GET ו_POST. אם זה נהיה, אנחנו רוצים מציג את טופס כניסה. לדקלם היא פונקציה שבעצם רק מכניס את ה- HTML המתאים עד ומעביר אותו כמה פרמטרים. התואר הזה הוא פרמטר זה שימוש במוצגות, למרבה הפלא, הכותרת של הדף ב שאלה, הדבר עד כאן, אומרים שלום או בדוגמא הקודמת שלנו. עכשיו יש לנו דבר שונה. אחר אם זה POST, אנחנו לעשות כמה דברים אחרים. אנו משתמשים בשיטה שריקה. זה לא קיים, זה ריק. וראינו לפני, PHP יש כמות נבנה הוגנת בשיטות שהדוד will-- אם יש שיטות שהם שימושיים לך, הם יהיו התראה לך בהליכה דרך שהדוד נותן בסקירה מתחילה, וגם הפיסות מועילות של Zamyla. היא חזרה כולם. כולנו יכול לשמוח. להתנצל היא פונקציה בשם צדק שרק בעצם מדפיס כמה הודעות שגיאה, כי CS50 מאוד מנומס. ועכשיו זה, זה הוא מסובך קצת, כי זה המקום שבו אנחנו שאילתות מסד הנתונים. עכשיו יש לנו לא דיברנו על מסדי נתונים. ואנחנו הולכים בעולם הבא חמש דקות בערך, מקסימום. אבל זה פונקציה CS50 שכתב כדי לקבל שולחן בעצם מבסיס נתונים כי אנחנו עובדים עם בpset 7. אני ממש רע עם שלי אפס אינדקס היום. אבל כן, זה הוא 7. אז שאילתה שזה הולך לחזור מערך, בעצם הוא קצת מפתח. וכי אין לי הדברים האלה הקלדה, כך שורות היא מערך של מערכים. משום שכאשר אנחנו חושבים על שולחן, מה שאנחנו הולכים לעשות הוא, כפי שאתה למדת בpsets כמו במשחק של 15, בכל מקרה שבו אתה צריך להשתמש ב מערך כפול, אנחנו בעצם יש מערך של אחרים מערכים עושה שולחן. ויש לך את שורות ועמודות. ואז אתה יכול לגשת אליהם כמו [0] [1], אתה מקבל [0] [1]. דברים בסיסיים כמו ש. אז מה שאנחנו עושים כאן בפונקציה זו, אנחנו מבקשים את מסד הנתונים אם המשתמש זה מנסה להתחבר, שיהיה נשלח באמצעות שיטת POST. אנחנו תראו שאנחנו מקבלים שם המשתמש מ_POST. הם שלחו, המשתמש או שאתה, תשלח ערך באמצעות טופס דרך POST כי זה חומר את שם המשתמש וסיסמא. אנחנו בודקים את שם המשתמש לראות, היא זו בטבלה? כי אם משתמש כניסה ב, אז את שם המשתמש שלהם יש לאחסן בטבלה משתמשים שקיימים באתר זה. אז בעצם אם משתמש הוא באתר, שאילתא הולכת לחזור שורה ש, שהוא מערך. אבל החלק הבעייתי הוא שאם גם אם המערך הכפול הוא רק של שורה אחת, גם אם זה שורה אחת array-- כמו שיש לך basically-- אם יש לך מערך אחד בגודל שמחזיק מערך אחר, אתה באמת מתעסק עם עמודה אחת. אבל עדיין התייחס לזה כמו מערך כפול. וזה המקום שבו יכול לפעמים להגיע מסובך, משום שיש לנו בשורות כאן. משתנים הוא שורות. ואז אנחנו יוצרים שורה משתנה בשם חדש והגדרת אותו שווה ל השורה הראשונה של שורות. ותשימו לב שתגובה אומר שזה בשורה הראשונה ורק. אז זה מסובך פונקציות חלק שבו החברה יכול לחזור מערכים מאוד בקלות. אין mallocs. אתה לא תראה את mallocs. אז אתה לא תראה את פגמי SEG. אבל פונקציות עדיין תהיינה עוברות סביב מערכים ונתונים בקבוצות. ואתה צריך להיות זהיר של מה ש בדיוק הפונקציות שלך תחזור. וגם אם זה אחד טור כזה, שאילתה עדיין עומד לחזור מערך כפול. אז לגישה שcolumn-- או שאתה יכול לחשוב על כל זה כהפוך מאז על שורות אנחנו מדברים. אבל כדי לגשת שלשורה אחת, אתה לא יכול פשוט להגיד שורות. למרות שזה שורה אחת, שיש לך אל rowsrows [0] לחסל סוג זה חיצוני קצת את המערך ו יש רק שורה אחת שלך. לעשות כמה דברים אחרים. יש פונקציה password_verify נקרא שמאמת את סיסמא שפורסמה. ואז אנחנו רואים אחר בעולם משתנה כאן, _SESSION. בעיקרון מזהה הפעלה איך אתה לעקוב אחר של אם מישהו מחובר או לא. אז עכשיו עם login.php, אנחנו כניסה משתמש ב. אז מה אנחנו רוצים לעשות הוא שאנחנו רוצים אומר מזהה ההפעלה שווה לשורה id, שרק הגיוני כי כל שורה תהיה id שונה מספר כחלק מהשולחן. נגיע אל SQL ב שני, כך שאם משהו מכל זה נראה קצת כמו בלה, אז כל ינוקה עד. אבל אנחנו הולכים להגדיר id שווה ל הדבר הנכון, כניסה המשתמש ב. מתנצל אם משהו ישתבש. וכי הוא מטרת כניסות ב חיים כפרופסור מלאן היינו אומרים. אז זה היה login.php. והרבה קוד PHP שאתה כותב בpset 7, הם יהיו קצת. אל תשכח chmod ל ההרשאות המתאימות. יהיה קצת על כי בתחילת המפרט. אבל PHP שאתה כתיבה הולכת להיות עושה דברים זה דומה לזה. אתה הולך להיות גישה כמה דברים ש ניתנים לך ב משתנים הגלובליים של PHP ש הם עם זרם התמודדות משתמש מחובר, אם יש יש בקשות נשלחו לזו דף, דברים שונים כמו ש. וזה יהיה גם פוטנציאל iterating דרך שורות של הדבר הזה. בפונקציה, שאילתא שונה מחזיר מערך הכפול הזה. ואם יש יותר משורות בזה, אם יש הן-- כן, אם יש יותר מפעם אחת שורות בזה, אז זה יהיה שולחן. ואולי כדאי לך לחזר בין השורות של מערך זה באמצעות foreach הלולאה שתיארנו. אז אם אתה עושה את foreach על כפול מערך, מה יהיה word-- כאן, אני באמת אכתוב את זה. אני אכתוב את זה מהר כאן. אם יש לנו foreach שורות כשורה, מה הסוג של שורה? האם מישהו יודע? יש לך את זה? אז שורות הוא מערך כפול. אז מה foreach הולך להסיק שאנחנו רוצים ממערך הכפול הזה אם אנחנו iterating על זה? אנחנו בעצם יכולים להניח ש זה הולך להיות או אלמנטים, או שורות, או עמודות, בעצם. וכך שורות ועמודות ש ניתן לטפל באותו הדבר. בעיקרון מה שforeach הלולאה הולכת לעשות הוא שזה הולך לחזור שורות. השורה הולכת להיות של שורת סוג, בעוד שורות הוא מערך כפול. אז אם אתה נותן foreach מערך כפול, זה לא הולך לחזר יותר מפעם אחת ברמה עמוקה. שהוא בעצם לומר אם יש שמונה תאים בזה table-- 1,2, 3 4, 5, 6, 7, 8-- foreach לולאה היא לא הולך לעבור כל אחד מהתאים הללו. מה foreach הלולאה תעשה היה זה ילך דרך שורה זו, אתן לך כל שורה זו. ואז זה ילך דרך השורה ש. אז זה רק סובב רמה אחת עמוקה. אם תוסיף מקונן foreach לולאה, אז אתה ניתן לטפל בכל שורה חזרו מ שורות, שאתה עושה שורת foreach כאלמנט, נניח. ואז אתה יכול להדהד האלמנט. אז זה קצר רענון קטן על איך ייתכן שאתה משתמש foreach לולאות בהקשר של שאילתא. האם יש שאלות על PHP? כל דבר לפני ש לעבור למדברים על SQL והכיף של מסד הנתונים? מרגיש טוב? מרגיש טוב. בסדר. בואו נעבור על חזרה ל PowerPoint, שבו אתה כנראה מתגעגע. SQL, yay. אנשים שנמצאים בסעיף שלי בדרך כלל אדע שכותרות משנה של ראשי תיבות הם תמיד רק את המילים הראשונות אני חושב על המשחק ש algorithm-- ראשי התיבות ש. זה לא אלגוריתם. אז SQL הוא מסד נתונים. זו שפה ש עובד עם מסדי נתונים. וכל מסדי הנתונים הם הוא שולחנות, לפחות בדרך SQL שמייצג אותם. דרך נוספת לחשוב על מסדי נתונים היא מאגרי מידע הם קבוצה של מפתחות וערכים באופן בסיסי. אתה יכול לחשוב על מסד הנתונים כ מילון וגם כשולחן. בעיקרון זה דרך לשייך נתונים שונים עם נתונים אחרים, לעתים קרובות דרך שורות ועמודות. וככה זה SQL עובד הכי טוב. אז זה הוא דוגמא אחת של שולחן. יש לי כמה דוגמאות של אנשים בסעיף שלי, ש לא היו לי זמן לשנות. אבל יש לנו דברים כמו זיהוי, שם, מעצמה, ועיר הולדתו. אני לא יודע איפה כל אחד זה בסעיף שלי, אז אני פשוט הולך להניח כולם מניו יורק עיר כי יש לי גבוה סטטיסטי סיכוי להיות נכון. SQL באופן אוטומטי לקחת אכפת לי של העמודה מזהה בשבילך. אם תכניס שורה חדשה לתוך מסד נתונים SQL, זה יהיה להגדיל ש מספר תעודת זהות ורק בעצם מקל כמו חמישה שמות, מעצמה, עיר הולדתו, מי ש על הסוף של שולחן ש. אז זיהוי הוא טור אתה אף פעם לא צריך לדאוג. אבל, כמו במקרה של login.php, כאשר אנו היו מקבל את מזהה ההפעלה משולחן ורק באמצעות תעודת זהות, זיהוי הוא דרך לזהות באופן ייחודי אלמנט של מסד הנתונים. אז אם היו לנו שני סאמס, שניהם שלימד CS50, והן של מי ש היו ממילווקי, הייתם אלה עדיין יש לי מספרי זהות מובחנים ובכך להיות שונה ב ההקשר של הטבלה. אז זה מה SQL הוא התמודדות עם, עבודה עם בקצה האחורי. עכשיו אלה הם ארבע פקודות כי אתה צריך לעבוד עם SQL. והקאתי את כולם בשקופית אחת. אבל אנחנו הולכים לעבור כל אחד מהם בנפרד. הפקודה הראשונה היא עדכון, אשר עושה את מה שאתה יכול לצפות. אומר שיש לך כמה נתונים ב השולחן שמחוץ למועד. כמו אם אתה שומר אחר השמות של אנשים וגילים, אם מישהו עם עלייה בגיל, ואז אתה הולך רוצה ללכת וב לעדכן את הגיל רק של אותו האדם. לדוגמא שעובדת עם table-- הראשון שלנו אל תדאגו על כתיבת כל פקודות אלה באותו הזמן. אבל אם יש לך עדכון כלפי מטה, זה יהיה טוב לחלק זה, כי אנחנו הולכים ל לחזור לשולחן. אז אם נחזור לשולחן, נניח משהו שקרה הייתה הייתה רעידת אדמה או קו שבר שנפרד ישירות דרך ניו יורק. ורצינו לעדכן את כולם שחי בניו יורק. כולם היה צריך לעבור לפנסילבניה. זה לא עיר הולדתו. כולם היה צריך לעבור לניו הייבן. הנה. אז כולם בניו יורק עובר לניו הייבן. ואז זה משהו ש עריכת שלוש שורות בטבלה זו. אבל בSQL, אתה יכול לעשות שרק משפט אחד. אז אנחנו חוזרים לעדכון. תן לי מהיר למחוק לוח זה שוב. כאשר אנחנו מדברים על עדכון, יש כמה חלקים של התחביר שהם מפתח. ובכן, כל התחביר הוא מפתח. אבל הדברים בירוק הוא אופציונאלי. הלבן נדרשים, שמות כמו שהוגדרו מראש. ותכלת דברים שמשתנה בהתאם לשולחן. אז זה מה שקורה עם ערכת הצבעים כאן, שם למעלה. אז אם אנחנו רוצים לעדכן רק שורות אלה של האנשים שגרים בניו יורק, אז מה היינו עושה אם אמרתי עדכון? אז שולחן שבו אנחנו שמים שמו של השולחן שלנו. בואו נגיד את השם השולחן שלנו הוא שולחן אחד. אז אנחנו רוצים לעדכן את הטבלה אחת. ואנחנו רוצים set-- מה שאנחנו רוצים להגדיר? ובכן, אנו רוצים לומר, PHP כך column-- מטפל בשורות כמזהים ייחודיים. ולאחר מכן העמודות תחומים השונים מאותם אלמנטים של מסד הנתונים. אז האלמנט הראשון של מסד הנתונים יש לו שם של סם, מעצמה של CS50, ועיר הולדתו של מילווקי. אז אם אמרתי שנקבע, בואו נסתכל על הפרמטרים שוב הסט שלוקח. יש לנו טור שווה ערך. אז אנחנו רוצים לומר כמה column-- שזוכר הוא field-- אנחנו רוצים לראות שדה שווה למשהו חדש. אז אם אנחנו פשוט אמרו עדכון טבלת 1, אליוט שווה שם נקבע. קבל כמה אנשים מ סעיף חדש בזה. אבל אם אנחנו רק עשינו שולחן עדכון 1 אליוט שווה שם נקבע, מה שהיית נראה כמו אחרי שהשולחן? לאנשים יש מושג? כֵּן. קהל: כל דבר שב שורה תהפוך אליוט. דובר: הכל שבשורה? קהל: בשורה הראשונה. דובר: בשורה הראשונה? למה השורה הראשונה? אני לא מתכוון לקחת עליך. קהל: אולי כל מה ש בכל השולחן? דובר: הכל ב כל השולחן, כן. וזה דבר משום שבדיוק נכון רק עוזר לך קצת יניהם-- כי אנחנו הושמטו הסעיף האופציונלי איפה. אם אין לך איפה סעיף, מה פקודה זו תעשה הוא זה יעבוד עם כל שורה אחת בטבלה. שמו של כולם הפך אליוט, בעצם, שאליוט הוא מאוד שמח על. או יאני, אחד משני. אבל השם של כולם ישתנה. אז הדרך בה אנו משתמשים באיפה clause-- וזה חל על כל Wheres שנמצאים בכל אחד מ הדברים השונים הללו. אז תוכל להבחין SET ש יש ערך שווה טור. וכך גם איפה. אבל אלה הם שונים סוגים של דוחות. אז הטור שווה ערך בSET הוא במשימה. כמו שאנחנו אומרים שאנחנו רוצים כדי להגדיר שם שווה לאליוט. אבל בסעיפים שבו, אלה הם הצהרות שוויון. אז בואו נגיד שרק רצינו לשנות את שמו של האדם לאליוט אם השם שלהם היה ריאן, נניח. לכן, כאשר אנו אומרים איפה שם שווה ריאן, ש היית שינוי בהצלחה רק name-- זה רק היית לשנות את שם השדה בשורות איפה את שם השדה שווה לריאן. אז אם היו לנו מספר רב של אנשים בשם ראיין, כל השמות שלהם אשנה לאליוט. זה דומה לדוגמא של אם קו שבר מתפצל עיר ניו יורק וכל אחד יש ל לעבור לניו הייבן, הדרך שנוכל לעשות את זה במשפט אחד הוא עדכון עיר הולדתו SET table1 = ניו הייבן שם עיר הולדתו שווה בעיר ניו יורק. זה כוחה של הצהרת העדכון. אנחנו יכולים לבחור כל מספר של שורות באמצעות הצהרות האמיתיות על השדות בשורות אלה. אנחנו לא יכולים לומר סט table1 העדכון שם = אליוט איפה שורה = 1, חוץ מזה שאנחנו יכולים, אם אנחנו אומרים ID = 1. אז אנחנו הולכים להיות עבודה עם שוויון של שדות, שוויון של עמודות. אבל שימוש בשדה מזהה היא דרך ל בחר שורות בודדות במיוחד, בגלל השדה מזהה הוא ייחודי מזהה במסד נתוני SQL. אז כמו עדכון שורה אחת, מספר שווה 1. עדכון שורה שתיים, רק לשנות את זה מספר תעודת זהות. אבל כוחו של איפה הצהרה היא ש תוכל לעדכן את הדברים על סמך מהם ערכים הנוכחיים של דברים מסוימים הם. כן אליוט? קהל: ומה אם אתה רוצה צריכה-- שוב, זה כבר שאלה אחרת. אבל השאלה הראשונה שלי הייתה, איפה זה קורה? איפה אני מעדכן את זה? האם זה בקוד PHP? דובר: איפה אתה מעדכן, כן. אנחנו הולכים לדבר איפה כל זה קורה סוג של פעם שאנחנו הולכים דרך כל הפקודות. אבל מה שאתה צריך יודע לעת עתה הוא בעצם כי מסד נתוני SQL שלך קיים כמשהו כדי לקבל גישה על ידי השאילתה פונקציה, אשר מגדירה CS50. אז אם אתה משתמש בפונקצית השאילתה, אתה יכול לגשת לשולחן הזה. אז אתה תשלח אלה פקודות לשולחן שלך בקבצי PHP באמצעות פונקצית השאילתה. גם אתה יכול לשחק עם השולחן שלך ישירות. וכי הדרך הטובה ביותר ל לבדוק מיני פקודות אלה. ונלך דרך בדיוק איך לעשות את זה בקצת. אז זה פקודת UPDATE. ואת שאר הפקודות הולכים להיות סוג של דומה, עובד על דברים דומים. INSERT INTO הוא כנראה השונים ביותר מעדכון. אני הולך להשאיר את זה שם למעלה ל רק קצת ולעבוד כאן. אז INSERT INTO, תראה שולחן שהוא עדיין אותו. אתה רוצה להכניס לתוך. היוון, SQL הוא מקרה רגיש. אז אין לך לנצל את הדברים האלה. לפי אמנה, המילים בלבן המהוון. אבל אני גם צבע המקודד. הסיבה היחידה שאתה לנצל אלה כאשר אתה מקליד אותם רק להדגיש כי אלה הם קבועים. ואז אתה יכול גם להסתכל היוון או העובדה כי אני כבר בצבעם בצורה שונה. אז יש לנו INSERT INTO, בואו לעשות table1 שוב. כל זה בשורה אחת. אני רק מפריד אותו על ידי הדוחות השונים. אז אל תדאגו לגבי העובדה ש הטבלה 1 עשתה את זה על הקו השני. אז אנחנו רוצים להכניס INTO Table1 כמה ערכים. ותשימו לב אופציונאלי קצת, שאני אגיע בשני. אז יש לנו ערכים. אז בואו נגיד שאנחנו רוצים להוסיף אנדי לשולחן שלנו, כי אנחנו מתגעגעים אנדי. אנדי הוא חולה. אז בואו להוסיף אנדי לשולחן שלנו. זכור כי מספר תעודת הזהות מתעדכן באופן אוטומטי. אז השדות היחידים ש צריך לדאוג הם שם, מעצמה, ועיר הולדתו. ולכן הדרך שאנחנו עושים את זה, מסתכל על התחביר שלנו, הוא שיש לנו פשוט יש לי סוגריים, עם פסיק ערכים מופרדים, כל אחד מהם הוא ערך. אז אם אנחנו רוצים להכניס לאנדי שולחן, כל שעלינו לעשות הוא תקין אנדי. מה המעצמה של אנדי, אנשים בסעיף של אנדי? היא אוהבת טיסה, או רוצה מהירות, או משהו. מה כבר יש לנו שם למעלה? יש לנו CS50, טיסה, מהירות, וכוח. קהל: מסע בזמן. דובר: מסע בזמן, מדהים. אז יש לנו אנדי, זמן נסיעות, ועיר הולדתה. זו שאלה טובה באמת. עיר ניו יורק, אלא אם כן מישהו יודעת. כולם מניו יורק הוא שיעור לקחת מהיום. אז הצהרה זו היית הכנס, כמו שורה החמישית, עם המסע בזמן המעצמה ועיר הולדתו של העיר ניו יורק. אבל השדה האופציונלי היא בעצם דרך כדי לציין בדיוק אילו עמודות אתה רוצה להכניס דברים ב. הדרך שאנחנו עושים את זה עכשיו, אנדי, מסע בזמן, בעיר ניו יורק, הוא הולך לפי הסדר המדויק שלנו שם table--, מעצמה, עיר הולדתו. ואם אתה רוצה לעשות משהו אחר מזה, כמו לומר שאתה לא יודע המעצמה של מישהו, כמו איך אני לא יודע אנדי של מעצמה בתחילת. אז כל מה שידעתי היה שם ועיר הולדתה. מה אני יכול לעשות הוא שאני יכול do-- אני אמחק את זה מהר. אני רוצה לעדכן רק את העמודות. וזה המקום שבי אופציונאלי רשימת טור נכנסה לשחק. אני רק רוצה לעדכן את שם עיר הולדתו ו. ואז אני אומר ערכים. אני אעשה את אנדי ועיר ניו יורק. אם אני השמטתי את רשימת העמודות ורק לעשות את שני הדברים האלה, שבו היה בניו יורק הלכה? שהטור היית ניו יורק העיר הוצב ב? לאנשים יש מושג? מעצמה, בדיוק. אז זה רק ילך לפי סדר. וברגע שהוא מגיע לסוף רשימה, שזה פשוט להפסיק מילוי דברים ב. והערכים שהוא יישארו ב כל העמודות פשוט תהיה NULL. אז בגלל שצוינו שם ועיר הולדתו, אנחנו הולכים יש מספר 5, שם אנדי, NULL מעצמה. אז מעצמה הוא ערך שלא אותחל. אתה לא בהכרח תקבל אותו שגיאות Valgrind אם תנסה ולגשת אליו. הכל יהיה מאופס יפה החוצה, כי NULL הוא ערך ב- SQL. שהוא קבוע. ולאחר מכן עיר הולדתו תהיה ניו יורק. אז זה INSERT INTO הפקודה. לפני שאנחנו עוברים, יש עוד שתי פקודות. האם יש לי אנשים שאלות על עדכון, על INSERT INTO, על SQL בדרך כלל לפני שנעבור על הפיסות הסופיות שלנו? לאנשים להרגיש טובים, נהדרים. אוהב את זה. אז בואו נדבר על SELECT. הולך UPDATE תעלה לכאן. ובחר הולך להיות דומה מאוד. המטרה של SELECT, המטרה של SELECT בחיים הוא לתת לך חבורה של עמודות המקיימים תנאים מסוימים. וכשאני אומר לספק תנאים מסוימים, מייד אולי המוח שלך לחזור לזה המשפט WHERE שעלה בעדכון. וסעיף שהוא בדיוק שם בSELECT. אם אנחנו לא לשים איפה סעיף ואנחנו אומרים שם SELECT, hometown-- כוסמין שקטן שם wrong--, עיר הולדתו מטבלת 1. אם אנחנו רק אומרים את זה, מה SELECT הוא הולך לתת לנו הוא זה הולך לתת לנו double-- שולחן, ולא. מערך כפול אם אנחנו חושב על בPHP החושים. אבל זה רק הולך לתת לנו מערך כפול של שני שם columns--, ועיר הולדתו. וזה יהיה להתעלם מזהה. וזה יהיה להתעלם מעצמה. וזה יהיה רק ​​לתת לנו כל שורה אחת של שולחן ש. אז אם אנחנו פשוט הוכנסו אנדי, יהיה לנו אנדי. ויהיה לנו ארבעה המקוריים. אם הם כבר מעודכנים, שיהיו תבואו לידי ביטוי, וכולי, וכולי. אז זה בגלל שאנחנו לא השתמש בסעיף איפה. אבל אנחנו יכולים להשתמש בו בדיוק ב אותו אופן שנהגנו זה בעדכון. אם אנחנו רוצים רק שולחן של השמות וכוחות העל של אנשים שחיים בניו יורק, אנו יכולים לבצע הצהרה כמו שם SELECT, superpower-- אני רק הולך לעזוב לראות-- מ טבלה 1 איפה עיר הולדה = עיר ניו יורק. אז זה הולך להראות כי אתה יכול תקבל עמודות שונות לחלוטין, ואז לשים את העמודות שאתה לא אפילו לחזור בסעיף איפה. אנחנו אפילו לא רוצים עיר הולדתו של כולם. אבל אנחנו רוצים את השם ו המעצמה של אנשים עיר הולדתו היא בעיר ניו יורק. אז זה משהו שאנחנו יכול לעשות עם איפה סעיף הוא שאנחנו יכולים להתמודד עם עמודות כי אנחנו לא בהכרח רוצים בחזרה. באותו אופן בעדכון, אנחנו יכולים להתמודד עם עמודים שאנחנו עושים לא בהכרח רוצה לעדכן. אנחנו יכולים לעדכן את העיר של כולם מי שם הוא סם, למשל. אנחנו יכולים לעדכן את העיר כולם מזהה שמספר הוא 2. אז רק לעדכן עיר של השורה השנייה שבו אנחנו לא צריכים להתמודד עם צורך השאלה הנפוצה. ולמחוק הוא, שכהיית מצפה, DELETE מטבלת 1. ולאחר מכן יש לנו סעיף איפה עוד. אז אנו יכולים לומר איפה ID = 1. מחק את השורה הראשונה. ולמחוק תמיד למחוק שורה, או שזה יהיה למחוק חלק מספר השורות. DELETE משולחן שבו עיר ההולדה = עיר ניו יורק ימחק את כולם בעיר ניו יורק. זה אם היה מגפה טרגית פתאומית ואתה רק רוצה להסיר כולם מהשולחן ש גר בעיר מסוימת שנפגע מהמגפה. ייתכן שהם ינוחו בשלום. אלו הם ארבע פקודות SQL שתצטרך להשתמש. אולי אפילו לא צריכים להשתמש בכולם. אבל אלה הם ארבעה שCS50 מצפה ממך להיות נוח עם הולך ל שני חידון 1 וגם pset7 וpset8. יש רק שולחן ששוב. בזה, יש המעצמה של רוי עודכן לקרן לייזר, ש הוא דוגמא אני לא משתמש. אני לא יודע איזה מהם רוי מעדיף, אבל כוח. יש רוי מעצמה של כוח. קתרין לא עשה את זה היום. זה מצער. אבל יש לה מהירות סופר. ובכן זה היה PHP. לפני שנידבר על MVC, עושה למישהו יש שאלות על PHP? עכשיו SQL, או PHP אם פתאום יש לך לבוא עם שאלה על PHP? גדול. בסדר, כולנו להגדיר אז. אז דיבר קצת על בקרים להציג מודל, בואו נחזור לחלק של החומר בpset7. אז מה להציג מודל בקר הוא-- אני לא הולך כדי לשמור את השינויים שלי להתחבר כי אני לגמרי נטבח זה. אבל בעצם יש לנו שני דברים נפרדים קורה. יש לנו ציבור ספרייה המכילה הקוד זה הולך להיות מוצא להורג ודפי האינטרנט שיהיה ביקרו. ויש לנו גם ספריית הנוף הזה. ונופים מכילים תבניות. זה מה שהפונקציה render-- ראינו לדקלם פונקציה בחבורה של קוד PHP CS50 שכבר כתב לך, שלוקח בפרמטרים מסוימים. מה הקוד שעושה הוא זה הולך לנוף, שהם קבוצות של כמו קוד ה- HTML שנכתב מראש, וזה החדרת ערכים למקומות מסוימים. כך כאשר אתה להיכנס לCS50 האוצר, באותו הכותרת היא על כל עמוד. אותו תחתונה הוא בכל דף. סיבה לכך הוא הדרך ההופכים את העבודות הוא זה ימצא באופן אוטומטי לתקן בכותרת וש צופה בו אתה יכול למצוא בנוף. אנחנו באמת יכולים להיכנס לכותרת, ו תראו, זה קובץ HTML עם ראש. יש לו כמה גיליונות סגנון. אתה לא צריך להסתכל על CSS לpset7 אם אתה לא רוצה. אבל אתה יכול לשנות שלהם אם אתה רוצה, לעשות האוצר שלך נראה קצת שונה. יש לו כמה PHP ב הכותרת קצת לראות אם יש כותרת שונה זה צריך לשים בכותרת זו. אבל רק כמה תסריטים אחרים, וקישורים, ודברים אחרים. הראש מסתיים, גוף מתחיל, ואופס, יש לנו קצת מוזר זה הסוף. ויש div, בדיוק כמו סוג חסר צורה של אלמנט שיש לו רעיון של אמצע. ואז, כאשר אנו רואים תחתונות, יש לנו את סוף div. יש לנו תחתון, שהוא שבו הטקסט התחתונה הוא. סוף div, סוף הגוף, סוף HTML. אז מה הופך אותו עושה הוא לדקלם סוג של תיקון מעלה כותרת, קובץ PHP שונה ש יכיל את הדברים בפועל ש אתה רואה, כמו השולחן של מניות שלך אם אתה קונה או מוכר מניות. ואז זה תוסיף בכותרת התחתונה. ולהציג המודל רעיון הוא שאנחנו בקר ש רוצה להפריד בין איך דברים נראים מהקוד. זה שאנחנו רוצים להפריד את הממשק וbackend, שבו הממשק הוא הדברים שהמשתמש רואה, נחמד visuals-- HTML, CSS, דברים כאלה, תמונות, וכולי. וbackend הוא PHP. זה קוד שאתה כותב. זה המקום שבי הקוד זה עושה פעולות בפועל. זה כאשר אתה מוסיף המניה לשולחן שלך, כאשר אתה קונה ו מכירה, זה backend. ואנחנו יכולים, כפי שראיתם, כולל PHP ישירות ב- HTML. אז מה אנחנו יכולים לעשות ל משימה זו היא פשוט הייתה קובץ HTML לכל דף, כמו התחברות. ולאחר מכן בדף זה, פשוט היה גוש ענק של קוד PHP, כולל את כל הקוד ש דף זה במיוחד היה צריך. ואז תהיה לנו עשה את זה לתיק. אנחנו יכולים לעשות את כל הקנייה ומכירה בדפים הבודדים. אבל בגלל שאנחנו טיוח בנפרד ממקום שבי אנחנו כותבים backend קוד, אנחנו יכולים בקלות לשנות את האופן שהדברים נראים ללא שינוי כל קובץ. אנחנו עושים את דברים כמו רק להוסיף div חדש לתחתית ל-- שלום שיניתי את הכותרת התחתונה. אתה פשוט יכול לעשות דברים כאלה. אבל גם, אתה יכול לשנות הפריסה ויזואלית שלמה מבלי להשפיע על מה הולך בbackend. ואתה יכול לשנות את backend כל ועדיין יש לו נראה בדיוק כמו שעשה לפני. זֶה האם הרעיון של בקר להציג מודל. וזה בעצם הפרדיגמה שהוטלה בחלק משפות תכנות אולי כדאי לך להשתמש ב לפרויקטי גמר. אם אתה עושה את פיתוח iOS, יש להם דעות, וזה מה שאתה רואה ב- iPhone, ו אז Backend כמו כמו דבר נפרד. אתה יכול לחשוב על קצת. יש הרבה של קבצים בינאריים ב מדעי מחשב, שהוא מצחיק, כי הכל זה בינארי. לא תכננתי את זה. זה היה משחק מילים לא מכוון. כן, משחק מילים לא נועד. אבל כמו קבצי .c קבצים ו.h, יש הרבה הפרדה של דברים שאנחנו אולי לא צריך. אז אנחנו יכולים רק לערוך את קבצי h, או מישהו יכול רק לראות את קובץ .h ויודע בדיוק הפונקציות שנמצאות ב קובץ .c בלי בהכרח לדעת יישומם. רעיון זה של רכיבי הפרדה שתלוי זה בזה אבל סוג של יכול לגשת לכל אחר באמצעות ערוצים שונים, חולף של משתנים, רק כוללים הצהרות, דברים כמו ש, עיקרון זה עוזר ליצור יישומים זה יכול להיות בקלות רבה יותר נערך על ידי מספר רב של אנשים, ניתן לשנות בקלות רבה יותר או שונה בקנה מידה גדול, והם קלים יותר ל באגים בהרבה דרכים. באמת מהיר, יש לי כמה טיפים לpset7, שאני אעשה מסך מלא, כך שלא רק מסתכל על tippee קצה קצה כל--. אין טיפים שרבים. אבל הזכרתי PHP קשה באגים. כפול ומשולש לבדוק את זה. אם הקוד שלך הוא פשוט לא להופיע בדף, זה כנראה שגיאת PHP, מצטער. אתה אף פעם לא צריך להסתכל על CSS אם אתה לא רוצה. אבל ברגע שתסיים, זה יכול להיות דבר כיף קטן ונחמד, רק כדי ללכת ב ולהתעסק עם הפרמטרים CSS. CSS ו- HTML הם דוגמא למודל דבר בסגנון בקר תצוגה מדי, נכון? יש לך יכול תגי סגנון בתוך האלמנטים של HTML. אבל אם אתה סוג של מיקור חוצם ל- CSS, הם קלים יותר לערוך, ולשחק מסביב עם, ויש לי כיף איתו. פנק את עוזר CS50 פונקציות כקופסות שחורות. אתה לא צריך לדעת בדיוק מה לדקלם עושה, אבל תאמין לו תמיד לעשות את הזכות דבר תלוי במה שאתה עובר את זה, דברים כאלה. ואני ממליץ צפייה בהדרכתו של דוד, עובר את כל הדברים, לא רק todos, אבל אתה באמת יכול לטפל ב קופסות שחורות כמו אלה. אל תלכו לאלה פונקציות מחפשים באגים. ומקדם בברכה את החזרה של Zamyla אדוננו. גדול. האם יש שאלות האחרונות לפני אנחנו סוג של להקפיץ ליום? אני עדיין חייתי? גדול. אנשי Livestream היי. גדול. האם יש עוד שאלות? לֹא? ואז אני חושב שאנחנו טוב ללכת להיום. אני אשאר בסביבה קצת אחר כך, אם אנשים היו שאלות הם פחדו לשאול על הזרם. אבל חוץ מזה, יש לך יום טוב.