[השמעת מוסיקה] אליסון BUCHHOLTZ-AU: בסדר, כולם, ברוך שובי לסעיף. אני מקווה שכל מה שהיית גדול בסוף שבוע ליל כל הקדושים, או Halloweekend, כמו שאני רוצה לומר, כל נח והתאושש. ותודה לאל שזה לא יורד שלג כבר. זה שמש למעשה מחוץ. הייתי ממש שמח על זה. לא מוכן למשוך את מגפי החורף שלי. יש לקוות, pset6 הלך די טוב. אם אתה עייף של C, אני שמח לומר שסיימת עם C לעת עתה. סיימנו את תהליך המעבר באופן מלא לתכנות אינטרנט, כך תוכל לעבוד ב- HTML, PHP, אולי קצת JavaScript. אני לא יודע מה בשבוע הבא של pset הוא, כך אני לא יכול להבטיח מה pset יהיה הבא שלך להיות, אבל pset השבוע הוא CS50 האוצר, שהוא בעצם יישום הסוג של דף האינטרנט המאפשר לך לקנות ולמכור המניה, ולעקוב אחריהם. וזה די מגניב, כי כל זה נוצר באופן דינמי. אתה יכול להיות משתמשים שונים ש כל אחד מאיתי מידע משלהם, ואתה הולך להיות יישום כל זה. זה לוקח זמן. אני בהחלט חושב שזה קל יותר מ psets C, אבל זה לוקח יותר זמן. אתה לומד שפה חדשה, PHP, שהיא מאוד דומה ל- C, אבל כמובן הולך לדרוש לך לחפש את התחביר ולהבין כיצד להמיר בין השפות. אבל אני לא חושב שיש משהו סופר רעיוני קשה על pset זה. זה רק לומד שפה חדשה ומקבל דרך כל הפיסות הקטנות האלה. אם אתם קראתם דרך המפרט, שזה די ארוך. אני חושב שזה אחד הוא כמו 21 דפים, אם אני זוכר נכון. זה מפרט ארוך. אז אם אתה לא קראת it-- 22. 32. וואו. אז הייתי מב -50% יש. אז, 32 עמודים. אז זה זמן. יש הרבה חתיכות, אבל אף אחד של החתיכות צריכים להיות כל כך רעה. זה פשוט הרבה. אז בהחלט להתחיל מוקדם אם אפשר, כרגיל, אבל אני חושב שזה צריך להרגיש קצת יותר נחמד במיוחד psets כמו להתאושש ולשנות את הגודל, כי הם פשוט קשה מאוד לעטוף את הראש סביב. אז עם זה, אנחנו הולכים לצלול ב. אין לי סדר היום שלך להחליק היום, אבל אנחנו הולך להיות מדברים על PHP. אני נותן לך סוג של קורס מזורז על כמה דברים שאולי אתה רוצה לדעת על PHP. דברים תחביר שונים, דברים כדי להשגיח על. אנחנו הולכים לדבר קצת על SQL. דברים פשוט מאוד פשוט יש, ולאחר מכן גם MVC הוא דגם תצוגת בקר, ש איך pset מוגדר, כך הבנה איך ש עבודות תהיה סופר שימושי. בְּסֵדֶר. אז PHP. אתם צריכים לעשות משהו מאוד, מאוד פשוט עם PHP, שהיא דבר תחתון זה כאן, שבו אתה הגשת צורה כלשהי על ראש הדף כאן כי היו כמה שם ש קלט, וזה הייתי אומר כמו שלום, בן, או שלום, אליסון, וזה היה צץ. אז זה בעצם מה ש צריך כבר נראה כמו מpset שלך, במקרה שאתם רוצים לדעת או לא ממש לא להבין את זה. אבל יש לנו סימני שאלה אלה כאן שמצביעים על כך שזה PHP. הם עוטפים אותה, ולאחר מכן htmlspecialcharge, לזכור, היא רק, לוודא שאתה בטוח מכל התקפת הזרקה מטורפת או אם מישהו מנסה לשים דמויות זדוניות מטורפות לשם שלך בשדה, זה לא אוהב את השרת או מה שלא שלך. ולאחר מכן, אם אנו מבחינים, HTML זה הייתה לי צורת שיטה של ​​_GET $, אשר, אם תזכרו superglobals מ- PHP, _GET $, _POST $, אנחנו הולכים ל אלה בקצת. אבל אנחנו יודעים שיש לנו כמה שם כאן שמתאים לשם שהגשנו. אז זה פשוט סוג של כמו שיתוף פעולה PHP HTML פשוט מאוד שיש לך חבר'ה מpset שש. אבל זה לא באמת לענות על מה זה PHP. ברור שזה בשפה, אבל יש לנו לא ממש דיבר על זה בסעיף זה, כך שיש קצת יותר על מה PHP היא בעצם. אז PHP היא רק PHP עיבוד מוקדם היפרטקסט. זה באמת נחשב שפת תכנות כי יש לו היגיון, ואילו אם על HTML אנו זוכר שדברנו, קראנו ששפת סימון לעומת שפת תכנות כי HTML הוא שינוי מוחלט איך דברים נראים בדף. זה פשוט שינוי אם משהו לא נועז, או בין אם זה צורה, אלמנט, או משהו כזה. זה לא חייב שום היגיון. זה לא חייב לולאות או תנאים. אתה לא יכול שגיאה בדיקת דברים. היית גם להציג דברים בדרך מסוימת או לבקש דברים מהמשתמש. זֶה הַכֹּל. אז עם PHP, זה ממש מאפשר לנו לעשות את כל דברים הגיוניים יותר אלה, כמו לאמת את הקלט או לתפעל אותו באופן כלשהו. אנחנו יכולים לשלב את זה עם HTML, כפי שאנו פשוט ראה בpset האחרון שלך ועכשיו, וזה מאפשר לנו ליצור דפי האינטרנט הדינמיים אלה. אז אם אתם ever-- אני לא יודע אם אתה היה כמוני, אבל באמצע הספר הם הכריחו אותנו לקחת את זה בכיתה IT בי יצרנו רק דפי האינטרנט HTML, והם היו סטטי ולחצו סביב לדברים אחרים, אבל הם אף פעם לא השתנו. עם דינמיים אלה, מה שאנחנו יכולים לעשות הוא, כמו עם CS50 האוצר, אתה הולך למשתמשים שונים. בהתאם לאותם משתמשים " העדפות, ומה הם קונים או מה שהם מוכרים למניות שלהם, אתה הולך לתצוגה דברים שונים. אז אם יש כמה מאפיין זיהוי למשתמש שלך משתמש בזה דף אינטרנט, אנחנו יכולים באופן דינמי להחליט מה להציג להם. זה לא אותו דבר לכל אחד אדם, שאם רק היה לי HTML, הדף יהיה זהה ל כל אדם ואדם שביקר. PHP מאפשר לנו להתאים אישית את הדפים. ואז אנחנו יכולים גם לשים אותם ב את אותו הקובץ, ש, כמו במקרה לפני כאן, ראה ש יש לנו HTML כולם כאן ולאחר מכן יש לנו זה קצת PHP. אנחנו יכולים לעשות כמו ש, או עם CS50 האוצר, אם אתם נראים ב files-- וצריכה לנו זמן כדי לעבור כמה מהם יחד בסוף אנחנו section-- יכול לראות איך אתה יכול למעשה להפריד ביניהם, שהוא בעצם דבר טוב יותר לעשות. כן." קורס מזורז. כל דברים פשוטים והמהירים ייתכן שצריך לדעת עבור PHP. הצהרה על משתנה. כחול זה קצת מעצבן, אבל אני מקווה שאתם יכולים לראות את זה. אם לא, אני אכתוב את זה על לוח הגיר. המשתנים שהכריזו. דבר אחד שיש לדעת הוא כי, שלא כמו C, PHP היא רופף או מוקלדת באופן דינמי, מה שאומר שאתה לא צריך לספר משתנה איזה סוג זה. אתה יכול פשוט לומר כמה משתנה שווה לכל מה שאתה רוצה שזה, וזה יהיה להחליט על הסוג של משתנה שבטווח זמן בשבילך. כפי שאתה רואה, זה יכול ליצור כמה דברים מאוד מעניינים. אבל לרוב מטרות, לא צריך לציין את הסוג. אתה יכול, ואתה יכול להקליד להטיל כמוך דברים בדרך כלל לא תראה אם ​​אתה רוצה להכריח אותו להיות מסוג מסוים, אבל אין לך. זה לא הולך לצעוק עליך אם אתה רק מכריז על משתנה ולא תציין סוג לזה. אז במקרה שאתה לא יכול לקרוא זה-- אני יודע שזה לא הכי טוב. חשבתי שזה יהיה להופיע better-- דרך בה אתה לאתחל כל משתנה היא רק עם סימן דולר, מה ש אתה רוצה שזה ייקרא, ואז מה שאתה מקצה אותו. אז במקרה הזה, זה קצת $ var = 3. אז אם אי פעם אנו משתמשים var $ אי שם, זה יהיה פשוט יהיה אותו הדבר כמו לשים 3 יש. בסדר? אז, כל משתנה, רק סימן דולר, מה ש אתה רוצה לקרוא למשתנה שלך, וכל מה שאתה רוצה שזה שווה. קריר מעט. פחות לכתוב לאתחול משתנה, נכון? האם זה הגיוני לכולם? רק הבדל תחביר מהיר בין C ו- PHP. מערכים הם הרבה יותר מגניבים ב- PHP. אנחנו יכולים לתת להם את מפתחות. אז הדרך לחשוב על זה הוא, שאם אי פעם רציתי לגשת אלמנט בתוך מערך, אנחנו צריכים לדעת מדד זה, נכון? אז אנחנו יודעים שעם C, אנחנו יכול לגשת לאלמנט הראשון על ידי עושה הסוגר מערך אפס, או אם רוצה האלמנט הראשון, תושבת מערך אחד. ואם אנחנו רוצים משהו שם, רק אולי אנחנו צריך לחזר דרך, אלא אם כן למעשה ידעו המדד. דבר אחד שהוא באמת מגניב עם מערכי PHP הוא שהם מה ש אנו קוראים אסוציאטיביים. כדי שנוכל לשייך כמה מפתח לערך כלשהו, ואנחנו בעצם הולכים to-- אני אראה לך איך אנחנו יכולים להשתמש בזה בשנייה. אבל בעיקרון, אם אתה רוצה אי פעם כדי לאתחל מערך כזה, יש לך כמה מערך $. אז באותה הדרך, זה פשוט כמה משתנה שאנחנו יוצרים. זה יכול להיקרא כל מה שאתה רוצה. זה יכול להיות $ דוגמא. רק עוד משתנה. מה עושה את זה מערך הוא תחביר תושבת שיש לנו כאן. בדיוק כמו ג ואנחנו רגילים יש לי כמה מפתח לערך כלשהו. אז key1 הולך לVALUE1, key2 שתי הולך לvalue2. זוגות אלה מופרדים עם פסיק, בדיוק כמו מערכים נורמלים. עם זאת. אחד גדול. מפתחות הם אופציונליים. אתה לא צריך להשתמש בם. ואם לא, אז זה רק נורמלי. שאלה? או, אה. קהל: ובכן, על הזכות. איפה הזיכרון מגיע? האם זה יכול גם להיות זהה כמו [לא ברור] ומהמחסנית? האם זה גם באמצעות PHP? כמו כאשר אנחנו מקשרים אותם? אליסון BUCHHOLTZ-AU: עם PHP, אנו לא נוטים לדאוג איפה זיכרון מגיע מ. אנחנו לא מבלים הרבה זמן מדבר על זה, כך שזה לא ממש משהו אתה צריך לדאוג. אז מפתחות הם אופציונליים. באותו אופן, אם לא רוצה להפוך את זה קשור, אתה רק רוצה מערך רגיל שבי מערך אפס הוא האלמנט הראשון ומערך אחד הוא שני אלמנט, אתה יכול לעשות את זה בדיוק כפי שהיית בג יש לך כמה משתנה שהולך להיות המערך שלך, והוא שווה לסוגריים האלה כאן. כן. קהל: האם יש לו אותו הצבע על סימון. כמו, שאני יכול לעשות כמו מערך ++, וזה מצביע על השנייה אחת. אליסון BUCHHOLTZ-AU: ניתן do-- ובכן, אתה יכול לקבל קצת איטרטור, אני, שאתה יכול לעשות לי ++ ולעשות מערך שלי באותו אופן. אבל זהו זה. אז, כמו במקרה זה, מערך של 1 יהיה שווה 20. אותו סוג של סימון לאינדקס. זה בעצם רק דבר משתמע כאן, איפה שכתוב אפס, אפס עד 10, ל1 עד 20, 2-30. זה פשוט מפתחות משתמעים לזה. מה שינויים בPHP הוא כי עכשיו יש לך את הכח להקצות מחדש מקשים אלה ל לעשות מה שאתה רוצה. אז דבר אחד הוא כאן. אז יש לי רק כמה דוגמאות כאן שכתבתי לכם כי אני מרגיש כמו דוגמאות תמיד לעזור יותר מאשר רק את התקציר. אז, במקרה זה כאן, אנחנו יש לי כמה מערך אסוציאטיבי כי הוא השם הפרטי שלי, שלי שם המשפחה, ואני אם משקף, וזה רק לכל הדבר והעניין כאן הולך להדפיס לפלט כאן. וזה אומר, בסדר. להדפיס את הערך ש מתאים למערך באליסון מפתח. ואני גם יכול לשלוח לך בחורים כל הקוד הזה אחרי השיעור. לכן, כאשר אנו מפעילים את זה, מה לעשות אתה חושב שיקרה? מה עומד להדפיס? קהל: שם המשפחה שלך. אליסון BUCHHOLTZ-AU: שם המשפחה שלי. הוא עושה. ממש כאן. להדפיס. אז אם אנחנו רוצים לשנות את זה ואנחנו הייתם מוסיף מישהו אחר list-- אז בואו נגיד שיש לנו את אמה כאן, ואנו מקשרים name-- האחרון שלך בואו אראה אם ​​אני מאיית את זה נכון. קהל: כן. אליסון BUCHHOLTZ-AU: כן. קהל: עבודה טובה. אליסון BUCHHOLTZ-AU: יפה. אז עכשיו אם יש לנו את זה כאן ו אנחנו רוצים למצוא את שם המשפחה שלך, יש לך את זה שם. אז אתה יכול רק לחשוב על זה כהחלפת מפתח זה כאן. אתה פשוט מחליף את המדד. אז זה מאפשר לך פשוט לחפש באמצעות מערך הרבה יותר קל. אתה לא צריך לדעת את המדד. כל עוד זה מפתח שאתה מחפש לקיים במקום כלשהו במערך, PHP ימצא אותו והוא יחזור הערך הקשורים אליו. אז זה נותן לך הרבה יותר כוח עם המערכים שלך. כן. קהל: אם יש לך שני מפתחות אותו דבר, יהיה זה ייתן לך שגיאה? אליסון BUCHHOLTZ-AU: זה צריך לתת לך שגיאה, כן. האם זה הופך את קטן יותר הגיוני בשבילכם? וגם באותה הדרך, יש לנו מערך כאן שאין מפתחות. כמו כן מדובר בתחביר שאולי אתה רוצה להיות מודע, כי אתה צריך להשתמש בזה בpset שלך. בכל פעם שאתה עושה הד, יש לך ציטוטים אלה, ובכל פעם שאת מתייחסת לחלק ממערך, אתה צריך שתהיה להם סוגריים מסולסלים סביבם. זה סוג של מעצבן, אבל אתה רק צריך לעשות את זה. אז רק משהו שכדאי לזכור. אם אתה מפעיל לשגיאות של, אני יודע שזה קיים במערך שלי אבל זה לזרוק שגיאות בי, נסה לשים את הפלטה סביבו וזה אמור לעבוד. אז במקרה הזה כאן, זה הוא מערך C רגיל שאנחנו רגילים אליו. יש לו שלוש, חמש, ושש, ואנחנו פשוט רוצה להדפיס את האלמנט הראשון, כך זה צריך להדפיס את שלוש. ואני לא להפעיל את כל אלה, כך אני מקווה ששום דבר לא השתנה. אנו רואים בחלק התחתון כאן, זה פשוט מדפיס את שלוש. מגניב. זה הגיוני לכולם? מערכים אסוציאטיביים. הרבה יותר מגניב ממערכים רגילים. זה why-- דוד האם להראות לך יישום PHP של pset6 במהלך הרצאה שנשא בכל? אישור. אז, אני אראה לך. אני לא יודע את זה t-- קהל: הוא עשה בשבוע שעבר. אליסון BUCHHOLTZ-AU: האם זה היה בשבוע שעבר? קהל: כן. אליסון BUCHHOLTZ-AU: כן. אז איות יכול להיעשות בשש שורות כמו עם PHP, וחלק מכוחו של ש הוא המערך האסוציאטיבי הזה שבו רק אתה יכול לטעון כל מילה ב, ויש לך את זה שווה לנכון או לא נכון. ואז אתה יכול להגיד, אה. חזור מילון באיזו מילה, ו אם זה שם, זה יחזיר אמיתי. אחרת, זה לא ימצא זה וזה יחזרו שווא. אז סוג של דבר קצת קריר. בְּסֵדֶר. אז אלה הם מערכים אסוציאטיביים. הם די מגניבים. אני באמת אוהב אותם. וכמובן זה-- אה. אישור. עכשיו זה עובד. אולי. אישור. דבר נוסף. אז, עם שוויון, רק דבר מגניב שכדאי לזכור. עם PHP, משום שהיא הקלדה באופן דינמי, הסוג יכול להשתנות בהתאם לכאשר אתה מפעיל אותו, איך אתה מפעיל אותו. יש לי בעצם כמה מגניב דוגמאות שאני אראה לכם. אבל == רק בודק שוויון לאחר ג'אגלינג הסוג. כך שאם יש לך משהו לא כמו הדמות 1 ומספר 1, PHP יגיד לך ש אלה הם שווים כי זה יכול לתמרן בין הסוגים שניים מהם עד שזה שווה, שאולי במקרה שלך הוא בסדר גמור. אם אתה צריך לראות אם הם אותו סוג של ערך ואותו הסוג, אתה רוצה === זה. ואני לא חושב שיש לך מקרה שבו אתה צריך להשתמש שב בpset שלך, אבל להרבה שלכם שתמשיך לעשות דפי אינטרנט פרויקטי הגמר שלך ודברים, זה דבר טוב לדעת == וש=== שונים, וזה טוב הבחנה להבין. אישור. כן." לולאות foreach. הם דרך ל לחזר באמצעות מערך. אז, בדיוק כמו מערכים הפכו כך הרבה יותר מגניב ב- PHP, הדרך שלך ללחזר באמצעות מערך, אני חושב, גם הופך הרבה יותר מגניב והרבה יותר חזק. אז במקום ליצור כמה לi שווה 0 וכל מה ש, ולאחר מכן לעדכן ש אני כמו שאתה הולך דרך, יש לנו foreach הלולאה הזו מדהימה. אז הנה כללי הסטנדרטי מבנה של שני אלה. אז אתה גם צריך foreach כמה מערך כערך אתה רוצה מכות באותה. אז זה הוא שמו של המערך משתנה שאתה רוצה התייחסות, וזה מה שאתה רוצה לקרוא לזה בתוך הלולאה. בסדר? אז זה מתאים כל אלמנט של המערך, ואתה משתמש בערך זה בתוך לולאה זה. יש לי דוגמא. אני יודע דוגמאות הן כל כך הרבה יותר טוב. ואז זה אם יש אין מפתחות, אז זה כמו אם רק יש לנו אחד שבו המפתחות הם המדדים נורמלים למערך שלך. או זה גם הוא במקרה אם אין לך שימוש למפתחות. אם לא אכפת לך את המפתחות ולך רק רוצה לחזר דרך עם הערכים לכל אחד מאלה בכל סדר, זה בסדר. אתה יכול להשתמש במבנה. אחרת, אם יש מפתחות, ערך $ רק משנה ל$ ערך מפתח. אז זה רק משנה לזוג ערך מפתח. ואז אנחנו יכולים להתייחס ל$ מפתח וערך דולרים בתוך הלולאה שלנו. בסדר? כן." דוגמא. תעשה את זה יותר נחמד. אישור. אז יש לנו את זה כאן, שיש לנו כמה are-- אתה גם יכול ליצור מערך כזה על ידי שיש כמה שווה משתנים למערך עם סוגריים, או שאתה יכול פשוט לעשות את הסוגר. אתה צריך לעשות את התושבת, אבל זה הוא דרך נוספת לעשות את זה. אז הנה יש לנו כמה מערך של שלוש אלמנטים של אחד, שתיים, ושלוש, ויש לנו foreach שלנו. שים לב זה אחד מתאים ל מערך שאנחנו iterating מעל, וזה מה שאנחנו קוראים כל דבר במערך שלנו. וכל זה עושה הוא זה הולך להדפיס את כל ערך. אז אם אנחנו מפעילים את זה, אנחנו שמים לב שאנחנו יש ערך אחד, ערך שני, ערך שלושה. וגם באותה הדרך, כי בדרך כלל מערכים צריכים להיות מסוג אחד, אין לי מערכים לכל להיות אותו הסוג כאן. אז עכשיו יש לנו כמה int. יש לנו שתי מחרוזות. אז המערכים שלך יכולים לקבל הרבה יותר חזק ואולי קצת מבולגן קצת, בהתאם בדרך שאתה רוצה להסתכל על זה. אז אנחנו יכולים לשנות את זה לכל מה שאנחנו רוצים. אנו משתמשים בערך. זה פשוט הדבר הסטנדרטי שאנו משתמשים. אבל, רק חשוב לדעת שאנחנו יכולים קורא דלפק כמו זה אם אנחנו רוצים. וכל עוד הם מתאימים, ברור שכולם שמחים. אם אי פעם רוצים לרוץ PHP להפעיל משהו כמו פקודה זו קו שאתה יודע את זה כאן, אתה פשוט עושה PHP, ולאחר מכן כל מה שקובץ שאתה רוצה להריץ. אז אם אתה רוצה להתעסק עם PHP, ויותר היגיון ואתה לא באמת צריך לראות כמו בדפדפן אינטרנט, אתה יכול פשוט להפעיל אותו ב בשורת הפקודה כמו ש והד ידפיס את מה שאתה רוצה. אישור. הדרך אחרת שיש לנו היא כזה. אז זה מקרה שבו אולי אתה רוצה להשתמש בשני המפתחות והערך, אני יודע שאלו הם כמו דוגמאות סופר מאולצות אבל אני מקווה שהם עושים זה קצת יותר ברור. אז הנה יש לנו כמה מערך שוב, אבל הפעם, במקום שיש רק אתה יודע שאין מפתח. יש לנו מפתחות לכל אחד מאלה. אז הולך להיות אחד, ב יהיה מתאים שני, וג יהיה מתאים לשלושה. ובמקרה זה, אם אנחנו כותבים את זה ככה, יש לנו גישה לשניהם מפתח וערך לכל אחד מאלה. לכן, כאשר אנו מפעילים את זה, אנחנו מקבלים כל אחד מאלה. אז זה מדפיס את המפתחות שלנו ומתאים ערכים. עוד דבר מגניב הוא ש, ואני יודע ש אמר כמו זה שלא היה לי מפתחות, אבל זה תמיד במובלע יש מפתח, כי אם אתה לא להאציל מפתח, כמובן, שלך מפתחות הם רק האינדקסים שלך או מדדים כדי שנוכל תמיד גם לעשות את זה אחד. כמו זה. אני אדפיס את. אז במקרה הזה, אם תשים לב, יש לנו מפתחות משתמעים אפס, אחת, ושתי כאן. ואותו הדבר עם זה, תמיד אתה יכול להגיד r כערך, ורק שיש לך גישה לערך. לא אכפת לך ממך מפתחות, גם אם יש לך מפתחות, אם לא אכפת לך שלהם, אתה לא בהכרח צריך לשים אותם בforeach הלולאה שלך. האם זה הגיוני לכולם? קהל: אתה יכול פשוט קורא את המפתחות, מדי? אליסון BUCHHOLTZ-AU: כן לגמרי יכול לעשות את זה, גם. למעשה, לחכות. תחזיק חזק. היה it-- מס ' אם אתה רוצה את המפתח, ואז אתה צריך לעשות מפתח לערך. קהל: להוסיף ערך. אליסון BUCHHOLTZ-AU: כן. ואתה פשוט אף פעם לא משתמש בערך הוא כל. קהל: אישור. אליסון BUCHHOLTZ-AU: אם פשוט לשים דבר אחד שם, זה הולך להניח שאתה מדבר על הערך, לא את המפתח. שאלה גדולה. בְּסֵדֶר. מגניב. למעשה, להחזיק ב. תן לי לראות את מה שיש לי. אז לפני שאנחנו נכנסים לתפקיד ולקבל, אני רק רוצה להראות לכם קצת על איך זה באופן דינמי הקלדה, שהוא סוג של מגניב. יש לי את כל אלה. יש לי כמו ארבע דוגמאות כאן, ואני אשלח לך את כל הקוד הזה אחרי השיעור. אז הנה יש לנו כמה משתנה. זה רק 1 פלוס 1, נכון? ואנחנו הולכים להדפיס את מה שזה שווה, ולאחר מכן יש לנו כמה סוג. וכל אחד יש ניחושים על איזה סוג זה הולך להיות? קהל: int. אליסון BUCHHOLTZ-AU: כן, זה int. אז זה רק מוסיף אותם יחד. זה int. כל טוב. אז הבא זה, יש לנו מה נראה כמו חוטים. כאשר אנו מפעילים את זה, הוא חושב, אוי. אתה בעצם מנסה רק להוסיף דברים. רק לך מבולבל. אז אני פשוט הולך לתקן את זה בשבילך. התכוונת int. אני יודע שהתכוונת int. אז זו אחת הדרכים שאתה יכול לראות, PHP יש דעה משלו. למרות שאנחנו באופן מפורש אמרו, נראים, אלה אלה הם מחרוזות. אני מתכוון מחרוזת אחת. אבל זה אומר, אה, אבל אתה מנסה להוסיף אותם, אז אתה חייב אומר שזה מספר שלם. רק תאמין לי על זה. אז זה אומר שזה מספר שלם, וזה מוסיף להם כמו נורמלי. אז די מגניב אם אתה הולך כדי לקבל עצלן עם הדברים שלך, או שאתה רוצה להוסיף משהו. דבר גדול הוא ש, אם אתה חושב לחזור לpset2, משהו שהיה משתמשים שהוזן, תקין, שאנחנו חושבים הוא char או מחרוזת בהתחלה. עכשיו אנחנו לא צריכים באופן מפורש אומרים, אה, לעשות את זה int. PHP יהיה בדיוק כמו, אה, כן. אני יודע שהתכוונת int. הטיפשי. אתה לא מתכוון למחרוזת. אז במקרה זה, עכשיו שיש לנו זה, מה ש אתם חושבים שזה הולך לעשות כאן? יש לנו מחרוזת וint עכשיו. קהל: זה עדיין int. אליסון BUCHHOLTZ-AU: הוא עדיין int. והסיבה is-- הייתי לשים דוגמאות נוספות, אבל הכיף של זה. הסיבה שהוא עושה זאת היא משום זה כמו שאתה מנסה להוסיף דברים. אז אם אתה מנסה להוסיף דברים, אני הולך להניח, סביר, יש לך משהו סביר, כי אתה יכול להוסיף. אני רק הולך לעשות את זה int, ו אנחנו פשוט הולכים להוסיף אותו, כרגיל. ולאחר מכן באותה הדרך, אני חושב שאתם מבינים את הרעיון. יש לנו גם את זה כאן, וזה רק תוים, וזה עושה את אותו דבר. זה כמו, המשתמשים הטיפשיים. אתה יודע שאתה רוצה int. קהל: אם אנחנו שמים מכתב, יהיה זה עושה את הערך [לא ברור] או לא? אליסון BUCHHOLTZ-AU: אה, זו שאלה טובה. בואו נראה. לא ולא, עדיין הוא int. אז זה קצת משוגע. זה פשוט סוג של להראות לך PHP לפעמים יכול להתנהג בirrational-- לא לגמרי לא הגיוני, אבל זה עלול להתנהג בדרכים שאתה לא באמת מצפה. אז, במקרה של ספק, לבדוק הסוגים של דברים. GetType פונקציה זו יכול להיות סופר שימושי. בדרך כלל, אם אתה עושה משהו עם פלוסים או כל מפעילים מתמטיים, זה הולך להניח שום דבר סביר הוא רק int. אז, יש לך char 1, או מחרוזת 1, או בפועל int 1, זה הולך להניח ש. אם אתה רוצה חומר מודפס כל דבר, שאפשר ממש. אתה יכול לעשות דבר כזה להכפיל כאן, אני מאמין. ובמקרה זה, זה הולך לומר, הו. אני אעשה את זה כפול כי אתה במפורש אמר שהוא כפול. אתה יכול תמיד באופן מפורש להפוך את PHP לעשות משהו, אבל. קהל: המתן, למה היא בתוספת 1 לשם? אליסון BUCHHOLTZ-AU: אה. יש. זה היה רק ​​הד. זה היה באשמתי. אז, אתה יכול להגיד את זה באופן מפורש ל לעשות משהו מסוג מסוים, אבל רוב הזמן, זה הולך באופן דינמי להחליט כי בזמן הריצה. כך שזה הולך להמשיך דרך וזה הולך להיות כמו, אישור. מה שעושה את רוב תחושה שזה תהיה? האם הוא צריך להיות ממש מחרוזת? זה צריך להיות int? זה צריך להיות לצוף? זה צריך להיות כפול? והוא יחליט את זה בשבילך. אתה יכול להכריח אותו לעשות מה שאתה רוצה, but-- קהל: האם זה עושה את זה לאט יותר? אליסון BUCHHOLTZ-AU: ובכן, אני מתכוון, C הוא יעיל מאוד. אני חושב שזה בהחלט איטי יותר משום ש שיש לו התהליך כפי שהוא קורה. C, אני כמעט בטוח שהוא מהיר יותר. אבל ברור שיש הרבה דברים מגניבים כאן שאנחנו לא צריכים לדאוג. לכן, אם אנחנו מחפשים באמצעות מערך, אנחנו לא צריך ליצור למעשה כמה חיפוש באמצעות המערך. אנחנו רק יכולים לבקש את המפתח ו- PHP לטפל בזה. מגניב. מדהים. נראה כמו הסוף של דוגמאות שלי. אתם אף פעם לא הולכים לשכוח את זה עכשיו. אתה הולך להיות כמו, אה, PHP היא רק כמו שאמא שהיא שאין כמותו, לא, לא. אני יודע למה אתה מתכוון. אני יודע מה אתה רוצה. אישור. אז זה, אני מקווה, שימושי עבורך pset, לפחות בהתחלה, בגלל שאתה כל על התמודדות עם צורות ודברים מהמשתמש. אז יש שתי דרכים שבן אנחנו מעביר ביניהם מידע עם PHP ו- HTML כאשר אנחנו עוברים בין שני הדברים האלה. אז יש לנו _GET $, אשר מועברים באמצעות כתובת האתר, ויש לנו _POST $, שעבר בהודעה גוף, ולכן אנחנו רואים את זה נסתר. אבל דבר אחד הוא להבין ש אף אחד מאלה נחשבים בטוחים. אם יש לך מישהו שהוא יירוט ההודעות הולכים הלוך ושוב בינך לבין שרת, שהם עדיין יכולים לקבל את הנתונים. הם רק צריכים להסתכל קצת יותר קשים. זה לא באמת that-- זה רק מוסתר מכתובת האתר. זה עדיין בגוף ההודעה, אם כי, כך שאם יש להם גישה לזה, זה באמת רק like-- זה כמו ההבדל בין משהו נכתב בצד החיצוני של בן מעטפה ומשהו כתב על פיסה בתוך נייר. זה לא כל כך קשה לפתוח את המעטפה ולקבל את פיסת נייר בתוך. אמנם, אהיה זה הרבה יותר קל פשוט לקרוא מחוץ. אבל ככה אתה יכול סוג של חושב על אלה. אף אחד מאלה באמת נחשב מאובטח. בסדר? אמנם, לא ממש משנה לpset שלך כי אתה לא עוסק עם סודות מסחריים, אבל זה בדרך כלל אחד דבר שאנחנו באמת רוצה להדגיש כי אנשים חושב, אה, כן, זה נסתר. זה חייב להיות סופר מאובטח. מס ' זה לא בטוח. זה רק מעט פחות חסר ביטחון, אני מניח. או לא מאובטח. אז בעצם יש לנו דוגמא. כפי שאתם יודעים, אני אוהב את ללמד יותר עם דוגמאות. אני מרגיש כמו שזה עוזר טוב יותר. אז, יש לנו כמה צורה פשוטה כאן אשר למעשה, אם אתם אי פעם מבולבל על PHP, זה ממש קטן, אבל php.net הוא למעשה תיעוד ממש טוב. אני באמת אוהב את זה. אני משתמש בו כדי להתכונן לזה סעיף, כך שאני יכול וטרינר את זה בשבילך. זוהי דוגמא מהם כיצד _POST $ ו_GET $ עבודה. ההבדל היחיד בין שני אלה, חוץ מזה שבו המידע הוא מוצג, בין אם זה ב- URL או בגוף, הוא גם מהי השיטה. אז בצורה שלך לHTML-- זה הוא צורת HTML פשוט מאוד. מישהו יכול להגיד לי מה זה עושה? קהל: בקש שם והגיל שלך. אליסון BUCHHOLTZ-AU: בדיוק. אז יש לנו כמה פעולות צורה. שמאפשר לנו לדעת שזה צורת מעשה. ומה הולך לקרות הוא, כאשר פגעו שלח, זה הולך לקרוא action.php, וזה מה שזה, וזה הולך לקרוא לזה עם שיטה של ​​_POST $. אז במקרה הזה, שלך המידע מוסתר. וזה רק השם שלך, כמה סוג הקלט קרא בשם, כמה גיל, קלט סוג = "text", שגם אנחנו קוראים לגיל. ולאחר מכן אם פגעו שלח, שלח יקרא action.php. לכן, כאשר אנו למעשה על 'שלחו', אנו יודע שזה פורסם, כשלעצמה, ואנחנו בעצם רואים את זה בך להגדיר בעיה שאני מקווה שנציע ב מקבל ללכת דרך קצת. וכל זה עושה כאן הוא POST כמה משתנה superglobal שדיברנו עליו בהרצאה. ואיך אתה יכול לחשוב על _POST דולר שזה רק מערך אסוציאטיבי. בסדר? אז זה חלק ממפתח, זה היגיון מסוים, וכל מה ש קלט המשתמש הופך ל ערך עבור כל אחד מאלה. בסדר? אז אם היינו כותב מה שהמערך הזה ממש נראה כמו אחרינו הגיש את הטופס, הייתי יש לי, זה שלנו _POST $, וחלק המערך שבו יש לנו כמה שם. בואו נגיד אנחנו נעשה את השם שלי, ולאחר מכן יש לנו כמה גיל, 21. וו. אז זה כל _POST דולר. _POST $ רק מערך אסוציאטיבי, בסדר? זה פשוט אומר, בסדר. מה הם הדברים שיש לנו ביקשת מהמשתמש? מה הם המשתנים שאנחנו עוברים מסביב שאנחנו כבר ביקשנו בצורה זו? ואז מה הם ערכים הקשורים לזה? אז במקרה הזה, אם הגשתי אותו עם שמו של אלי וגיל 21, זה מה שנראה _POST $ כמו. בסדר? וזה מה שזה יש קובץ PHP גישה ל. בסדר? אז במקרה הזה, זה בדיוק כמו מקבל כל דבר אחר מהמערך שלנו. במקום מדד בנו מערך, יש לנו כמה מפתח. אז זה הולך לתת לי שלי הערך בשם המפתח. אז זה הולך להיות בת ברית, ו זכות זו הנה הוא הולכת לתת לי הערך ב_POST בי $ מפתח הוא גיל, אשר יהיו 21. אתה הולך להיות עושה את זה לא מעט. כן, ממנו החלק? קהל: מתי היית מצביע על החלק התחתון. אליסון BUCHHOLTZ-AU: חלק תחתון זה? אישור. אז, אתה מבין את זה הוא HTML שלנו יוצר, ויש לנו כמה _POST שיטת $, שחשוב. זה גם יכול להיות _GET $, אבל למטרה זו, אנחנו רק הולכים להגיד שזה _POST $. כשנשלח את הטופס, זה הוא חלק מקובץ PHP שנקרא. אז קובץ PHP כל זה הולך לביצוע בהתחשב במידע מ- HTML שלנו צורה. אז מה שהיא עושה זה, כאשר אנו על 'שלח טופס HTML שלנו, זה עובר לך superglobal זה, וזה רק מערך אסוציאטיבי. זהו זה. זה בדיוק כמו שעבר כי לקובץ. ומה זה אומר הוא, אישור, הנה _POST $. זה המערך האסוציאטיבי שלך. לעשות עם זה מה שאתה רוצה. ואנחנו אומרים, בסדר. תן לי את הערך בשמו, ולתת לי את הערך בגיל. אז אלה הם רק מפתחות, וזה המערך שלנו. האם זה הגיוני? קהל: מהמממ. אליסון BUCHHOLTZ-AU: מדהים. קהל: אם אתה צריך להגיש מחדש צורה שזה פשוט לכתוב על נתונים? אליסון BUCHHOLTZ-AU: כן. מהמממ? קהל: למה יש לך כדי לציין שזה int? אליסון BUCHHOLTZ-AU: במקרה זה, משתמש פשוט מאלץ אותו להיות int. קהל: אישור. אליסון BUCHHOLTZ-AU: אני לא יודע אם אתה באמת היה צריך את זה, אבל למטרות שלהם, הם החליטו שהם רוצים שזה יהיה int. הם פשוט הסבת טיפוס זה. אולי הם משתמשים בו כ משהו אחר בשלב מאוחר יותר. זהו רק קטע אחד. כן? קהל: מה אם הם הקלידו 12, T-W-E-L-V-E, לגיל? אליסון BUCHHOLTZ-AU: אם הם ניסיתי להקליד כי כint? קהל: כן. אליסון BUCHHOLTZ-AU: אני לשכוח את מה שעושה. אני חושב שזה עלול לנסות להמיר התו הראשון לint, או לקחת את הערך ולהמיר את זה, אבל אני שוכח מה זה בדיוק. להיות דבר כיף לכתוב תכנית ונסה. האם בני זוג קווים. אוקיי, אז זה הוא אחד העיקרי דברים שאתה הולך לעשות. אני הולך ללכת בתקווה באמצעות כמה הקבצים מpset איתכם. זה נראה כאילו אנחנו הולכים ל יש לי זמן, ולכן אנחנו יכולים לעשות את זה. אבל אתה הולך להיות עושה הרבה דברים כמו זה, שבו אתה עובר דברים מטופס HTML לPHP טופס זה, כי אז יהיה לבצע כמה סט של הוראות על נתונים שסופק. זה ממש התמצית של pset שלך. כן. קהל: type = "submit", ש עושה כפתור בטופס HTML. האם יש דרך להתקשר שמשהו כפתור? אז האם תהיה כמו name = "שלח"? או כפתור שרק הולך להיות לרוקן עכשיו, כי אתה רק נתתי לו סוג, לא שם. אליסון BUCHHOLTZ-AU: אני חושב שזה פשוט הולך להיות ריק עכשיו. אנחנו בהחלט יכולים להסתכל ב pset, כי אנחנו בהחלט יהיו להיות מסתכל לרשום סוג של דבר. אבל כן, אתה בהחלט יכול לציין את הטקסט שברצונך על הכפתור שלך. אוקיי, אז SQL. כאשר אתה קונה ומוכר מניות, אתה צריך לעקוב אחר אותם. לכן הדרך שאנחנו הולכים לעשות את זה היא עם SQL, וזה רק בסיס הנתונים. תחשוב על זה כשולחן שבו אתה שומר את כל המידע הזה על המשתמשים השונים שלך. ואתם למעשה הולך ליצור אחד מאלה. זה די מגניב. ויש רק ארבעה דברים עיקריים שאתה צריך לדעת לpset זה, והם עדכון, כך ש בעצם לעדכן את הנתונים. זה מבוסס על ההנחה שזה כבר שם. אם זה לא שם, זה הולך להכות אותך עם שגיאה, אז אולי כדאי לך לבדוק. ואתה תעדכן on-- אני צריך "בעצם יש לי זמן, אני אכתוב כמה כאלה. אני בעצם נותן לך חבר ' כמה מדגם, פקודות SQL מלאה, כי אלה הם רק עיקריים אלה, אבל אתה יכול להצטרף אליהם יחד. אז אני אעשה את זה ואני אשלח כי לך עם ההערות האלה. אז אם אתה רוצה לעדכן משהו, צריך להגיד את זה מה אתה מעדכן ואיפה אתה אתה מעדכן אותו. אז פקודת SQL טיפוסית תהיה עדכון מזהה בו משהו שווה משהו. או כתובת עדכון כמו שבו מזהה שווה 3, וזה היה לעדכן את שדה הכתובת של המשתמש שלך שיש לו תעודת זהות של שלוש. בסדר? אז אם אתה הולך ל- SQL וW3Schools, יש להם דוגמאות מדהימה. למעשה, אני יכול למשוך כמה בקצת. ולאחר מכן הכנס ל, אתה פשוט החדרת ערכים מסוימים יש. אז אם אתה מנסה ליצור כמה חדש כניסה, כך שאתה יוצר משתמש חדש, אתה יכול לעשות להוסיף ל כל מה שמסד הנתונים שלך נקרא, והיית צריכים את כל הערכים הללו. אז אתה צריך לבחור, לבחור ערכים כדי להציג. אז אם אתה מנסה לבדוק ל לראות אם משתמש קיים או שאתה מנסה לתפוס ספציפי מידע על משתמש אתה הולך להיות באמצעות בחר. ולאחר מכן למחוק, אני חושב, הוא די פשוט שם. אתה פשוט מוחק משהו מהשולחן. ולמעשה, תן לי בעצם מושך כמה דוגמאות בשבילכם. אוי, תראה, זה העמוד 61 שלי. אז אם אנחנו הולכים לW3Schools, אני מקווה שזה שוב. כן, אוהב את זה. אנחנו הולכים ל- SQL. אז, זה משהו כאן. אז, זה SELECT פשוט מאוד. גבר, אני אוהב את התפקיד הזה. אז, אתה יכול להיות SELECT איזה שדה מהלקוחות. במקרה זה, לקוחות מתייחסים ל מאגר מידע מקוון שאתה משתמש, לכן כל מה שהשולחן שלך נקרא, ו כוכב רק אומר לבחור הכל. תן לי כל אחד. אז, אני רק רוצה לתת לך חבר ' כמה דוגמאות בן זה. אז יש לנו SELECT, UPDATE. אז הנה הוא סוג של התחביר הכללי. אז עדכון, מה שלך שם טבלה הוא, ולאחר מכן קבעתי המקום שבו אתה בעצם הולך להיות מה הנתונים שאתה משנה. אז זה יכול be-- בואו לי לעשות פה דוגמא. אז זה הולך be-- אישור. אז אני יצרתי מסד נתונים קטנים בשבילנו. אנחנו הולכים לעבור כמה ID, כמה שנה, וכמה שם. אז מזהה אחד הולך להיות שנה '15, ואנחנו רק הולכים לעשות את זה לי. מי רוצה להיות שני אדם בשולחן שלנו? כל אחד. אני רק הולך לבחור אמה בגלל מהיר של השם שלך. אמה, באיזו שנה אתה? קהל: באיזו שנה? אליסון BUCHHOLTZ-AU: כן. קהל: ל 16. אליסון BUCHHOLTZ-AU: ל 16. אתה פשוט הולך להיות שפן הניסיונות שלי להיום. אוקיי, אז יש לנו שני האנשים האלה. למעשה, תנו לי לעשות את זה. בואו נגיד שאני שמעתי אותה לא נכון, ואני למעשה אמר שהיא צעירה בשנה. היא '17. מה שאנחנו רוצים לעשות כאן, אם רציתי לעדכן את השנה של אמה להיות נכון באמצעות ש, את מה שאמרנו לעשות הוא היינו אומרים עדכון נתונים לכאן. וזה כל יכול להיות בשורה אחת, אבל מאז אני דחוס למקום כאן, אני הולך לכתוב כאן. ואנחנו רוצים להגדיר. אז זה השולחן אנו מעדכנים. SET הולך להיות מה שטור או מה הנתונים שאנחנו באמת משתנים. מה שאנחנו משתנים הוא שנה, כך אנחנו הולכים להגיד השנה SET = 16, ואז איפה אומר לנו שבו משתמש או מה שורה אנחנו למעשה עדכון זה. אז איפה? יש לנו שתי אפשרויות כאן. מה הם שני? אלה הם ייחודיים, נכון? אז השמות שלנו הם ייחודיים והזהות שלנו היא ייחודית, אז מה הן שתי האפשרויות לשם אנחנו יכולים לעשות את זה? אני אתן לך אחד. אנחנו יכולים לעשות איפה ID = 2, או שאנחנו יכולים לעשות מה ש אם אנחנו הולכים את הפרדיגמה הזאת כאן. קהל: [לא ברור]. אליסון BUCHHOLTZ-AU: בדיוק. אז אנחנו גם יכולים לעשות שם = אמה. וכל אחד מהם יעבוד. ורצנו זה, זה יהיה כמו, אישור. אנחנו נשנה את זה. אתה למעשה 16, כך עכשיו אתה שוב צודק. אוקיי, אז זה יהיה סופר שימושי בpset שלך שבו אולי מישהו החליט לקנות 100 מניות של אפל, ואז הם היו כמו, סתם, בצחוק. אני רוצה רק 90 מניות. ולכן הם מוכרים 10 מהם, כך שאתה צריך לעדכן את הסכום של מניות שיש להם. אז, עדכון מניות, עדכון שולחן. אישור. אז זו דוגמא אחת שיש. זה תחביר העדכון. DELETE. אה. הכנס להוא השני שלנו. אז, זה אחד כאן הוא דומה מאוד. אנחנו רק יכולים לומר, בזה המקרה בוא נוסיף מישהו. אנחנו יכולים להוסיף בן הפעם. אנחנו INSERT INTO, ואנחנו רוצה את השם של השולחן שלנו. במקרה זה זה נתונים. ואז אנחנו רק רוצים, אתה הולך טוענים כי ערכים, ומה שאתה הולך לעשות הוא, שאתה באמת צריך לוודא שיש לך משהו עבור כל שורה שאתה רוצה. אתה פשוט לשים אותם בסדר. אז במקרה הזה, היינו אומר 3. אתה 18, תקין בן? קהל: 19. אליסון BUCHHOLTZ-AU: 19? קהל: 19. אליסון BUCHHOLTZ-AU: '19 השנה שלך? שתתקדם ב'18, נכון? קהל: אה. אליסון BUCHHOLTZ-AU: שנת סיום. קהל: אישור. אליסון BUCHHOLTZ-AU: הייתי כמו, אתה כבר מתכנן לקחת שנת חופשה כאן? אז, '18, יש לנו בן. אז במקרה הזה, זה יהיה לעבור, זה יהיה ליצור ערך חדש כאן. מגניב. לא רע, נכון? הרבה זה הולך להיות תחביר בשבילכם. מושגים צריכים לבוא, בתקווה, בקלות יחסית. התחביר הוא הדבר היחיד זה יכול להיות קצת מסובך. ולאחר מכן עבר אחד שלנו הוא DELETE, וכפי ששמתם לב, אני מאוד ממליץ על האתר הזה. זה נהדר. יש המון דברים. אז, באותה הדרך שהיינו לנו כמה UPDATE, DELETE הוא דומה מאוד. במקום זאת יש לנו מחק מנתונים. אז במקרה הזה, האחרון שלנו אחד אני אכתוב כאן למטה. נניח שאנחנו רוצים למחוק אותי. אני לא יכול לכתוב היום. מחק מכל מה ש שולחן אנחנו ב, נתונים. ולמעשה יש שלוש דרכים אנחנו יכולים לבחור למחוק אותי. אתם יכולים להגיד לי מה השלושה דרכיהם, איך אתה יכול למחוק אותי? מזהה שווה 1, שבו זהות שווה 1. אנחנו יכולים לעשות בי השנה שווה 15, או שבו שם שווה אליסון. כמובן, יש רק שלוש דרכים שונות, בגלל כל אלה הם ייחודיים. בדרך כלל בשולחן שלך, ובמיוחד בpset שלך, אתה הולך להגדרה אחת מ עמודות אלה כדי להיות ייחודיות. זה כנראה הולך להיות מזהה ייחודי מספר, כי אם אתה have-- למעשה, זה באמת עשוי לתת לך שני. אני לא זוכר אם זה ייתן לי יש לך שתיים מאותו הדבר. קהל: אז זה יהיה לשנות את התנהגותם. אליסון BUCHHOLTZ-AU: זה יהיה. זה יהיה לגרום להתנהגות שאינה צפוי, כי אתה לא יכול לחזות באמת. אז בהחלט יש לך עמודה אחת במסד הנתונים שלך שיהיה ייחודי, וזה בדרך כלל באפשרותך להגדיר זה כל כך שזה כמו זיהוי ייחודי, וזה יהיה פשוט לעדכן את כל פעם שאתה מכניס לטבלה. כל פעם שאתה יוצר חדש שורה, באופן אוטומטי זה להגדיל ולתת לו תעודת זהות ייחודית מסוימת. אז רמזת לpset שלך. אישור. אז זה SQL. אז עכשיו אנחנו הולכים לדבר על הדבר האחרון, שקושר ב למעשה די טוב עם שלך pset, אם זה ילך קדימה. אז MVC, בקר להציג מודל. זה באמת רק דרך כדי לשמור דברים מאורגנים. באותו אופן עם C אנו מבקשים מכם בחורים כדי ליצור פונקציות ודברים נפרדים את, זה הוא רק דרך להפריד את קוד כאשר אתה עושה פיתוח אינטרנט. אז זה עושה את הדברים הרבה יותר יותר אלגנטי ופשוט יותר, וזה בעצם הדרך שpset שלך הוא בעצם להגדיר, אז אם אתה אוהב את זה או לא, אתה הולך ללמוד את זה, גם אם אתה לא חושב ש אתה לומד את זה. ודבר אחד, זה גם מאפשר לך לעשות הרבה יותר כמו שיתוף פעולה משתמש. לכן, כאשר לקחתי CS50, שעשיתי אתר לפרויקט הגמר שלי, ואני היה כמו, אני יהיה להתמודד עם הדברים מסד הנתונים. אני אעשה בחזרה דברים הסוף, ושלי שותפה לחדר שאני לוקח איתו היה מאוד אמנותי. היא עושה עיצוב במה, והיא רציתי לעשות את זה כולם די. אז אני כמו, אישור. אתה יכול לטפל ב כל הדברים קדמיים. והעניין הוא, כ אנחנו תראו בקרוב מאוד, כי בקר להציג מודל מאפשר לך להפריד לחלוטין את קוד שכל כך שאני יכול לעבוד ב יישום הדפים שלנו, ומידע מניפולציה במאגרי המידע שלנו, והיא רק יכולה לעשות דברים די, ושנינו היינו מאוד שמחים, כי אנחנו צריכים לעשות את מה ש שנינו רוצים אותנו ו לא צריך להתמודד עם השני. כך הסתובבו יחד. אנחנו אוהבים להסתובב. אני פשוט לא רוצה להתמודד עם כל CSS וכאלה HTML. אני היה כמו, אתה עושה את זה יפה. אני אתמודד עם מסד הנתונים. אז יש לנו את זה באמת שולחן מגניב, גדול קטן. אני אוהב את השולחנות. ובעצם, אתה יכול המודל לחשוב עליו הוא רק בסיס הנתונים שלך. אני היה אדם המודל לפרויקט שלי. זה הכול העניין של האחסון של מידע וארגון הנתונים ש. אז זה מה שאנחנו אוהבים לקרוא לסוף חזרה. אז אתם יהיו להתמודד עם מסד נתונים SQL וקבצי נתונים. זה המודל שלך. המבט שלך, כפי שאתה חושב, סוג של היגיון, זה מה שהמשתמש שלך רואה ממש. זה ממשק המשתמש. זה שרכיב פניו לחזית. אז זה מה שהשותפה שלי התחלתי לעבוד על כל הזמן. היא הייתה סופר מאושרת. אז זה כל HTML, ויש PHP מעט מאוד. אם אתה מדבר רק על מה שמוצג בפני המשתמש, על היפר-טקסט אנחנו מדברים. על איך שזה נראה אנחנו מדברים. אנחנו לא מדברים על היגיון, או תנאים, או מה שלא. כל זה מקבל טיפול על ידי בקר, בסדר? כך שמטפל בבקשות המשתמשים ומקבל את המידע. אז דבר אחד שכדאי לדעת על pset שלך הוא ש, בדעותיך, כל דבר שהוא למעשה מידע בו מוצגות לא צריך להיות מה שהופך קורא למודל שלך. כל זה מתבצע בבקר שלך. הבקר שלך הוא אחד תיווך בין שני אלה. הוא ישאל את המודל למידע מסוים. זה יכול לחזר על זה מידע, להבין מה שאתה באמת צריך מ זה, מה לעשות עם זה, ואז זה יעבור ב רק את המידע שאתה צריך את התצוגה כדי שתוכל להדפיס אותו החוצה או להציג אותו למשתמש, בסדר? בגלל שאנחנו רואים את הנוף כ כל מה שעומד בפני המשתמש, כך שזה יהיה הרבה יותר קל להם להבין, הו, אם אתה עושה כמה קריאה למודל שלך ואתה שואל עבור כל המשתמשים שמתחילים באות, ואתה עושה את זה במבט שלך, כל מי שיכול לראות את דף האינטרנט שלך עלול לגשת. אתה לא בהכרח רוצה ש. אתה לא רוצה שאנשים יראו יותר לתוך מסד הנתונים ממה ש הם אמורים לראות. רק את ההעדפות הספציפיות שלהם. אז בקר מטפל בכל זה. אז כל קבצי .php שנראה אתה יכול לשקול קבצי בקר שלך. וזה שבו אתה נמצא באמת הולך להיות מבקש דברים מבסיס הנתונים שלך, וiterating או מניפולציה שלה על פי צורך לפני העברתו להצגה. זה pset ממש מגניב, לדעתי. אני חושב שזה קצת יותר כמו סיפוק מיידי, כי אתה מיישם הרבה דברים קטנטנים, וכל דבר צריך לעבוד בכוחות עצמו. לא אוהב, לעשות כל מה ש ואז לראות אם זה עובד. כמו עם תוכנה שבו אתה נוהג כמו, אני באמת מקווה שזה נכון, כי אם זה לא, יש הרבה מציב אותה יכול להיות לא בסדר. בְּסֵדֶר. רק כדי לוודא שאני אמרתי מה שאני צריך לומר על MVC. כן. מגניב. אז בCS50 האוצר, יש לנו המודל שלנו, כפי שאמרתי כאן. זה הולך להיות MySQL וphpMyAdmin. אני בהחלט יכול למשוך את אלה כל כך אתם מקבלים הזדמנות להסתכל על זה. כמו שאמרתי קודם, זה SQL שלך מסד הנתונים משמש כמודל שלך, ואתה יכול לשלוח את מה שאנו מכנים שאילתות, שהם רק דברים כאלה. אלה נקראים שאילתא. זה שאילתא, שבו אתה רק שואל מסד הנתונים שלך למשהו, או שאתה המשתנה שלך מסד הנתונים בדרך כלשהי. זה כל מה שזה. ואתה עושה את זה עם פונקציות אנחנו נותנים לך כאן. אפשר גם לטפל ב אותם ביד באמצעות phpMyAdmin, שבו אנו יכולים בהחלט נסתכל. אני ליצור מדגם מסד הנתונים איתכם. אישור. אז, בקר. אז במקרה הזה, אם אתה הודעה, זו היא כל PHP. שים לב שזה סוג שלך דבר עיקרי של הבקר שלך הוא שזה צריך להיות בעיקר PHP. אם יש לך HTML בבקר שלך, לא ממש בטוח מה קורה שם. באותו אופן כמו שאמרתי, אם אתה מצליח [לא ברור] עם HTML, אני אמיתי מעוניין. אז מה יש לנו כאן הוא שיש לך כמה שאילתא. שאילתא היא פונקציה ש בנינו בשבילכם. זה כמו עטיפה כדי לעשות שאילתות למסד הנתונים שלך קצת יותר קל. אם לא היה לך את זה, התחביר ל בעצם מדבר למסד נתוני SQL שלך יהיה שונה, כדי ש רק לספק אותו בשבילכם. אנחנו אוהבים לעשות את החיים קלים. אז במקרה הזה, אתם יכולים תגיד לי מה הקו הזה עושה? * בחר מכמה שולחן. קהל: בחר הכל מהשולחן הזה. אליסון BUCHHOLTZ-AU: בדיוק. אז זה אומר, תן לי הכל מהשולחן הזה. וזה לאחסן אותו ב כמה תוצאה משתנה. וזה אומר, אם התוצאה היא לא שווה ל- false, אז אנחנו עושים כל אחד מזה. אז אם יש כאן דבר, אם שלך השולחן ריק או שהוא פשוט לא קיים, זה הולך לחזור שווא. אז במקרה הזה, אנחנו רק עושים בטוח שמשהו שהיה בפועל חזר אלינו. והנה, יש לנו לולאת foreach הגדולה שלנו כי אנחנו iterating עלינו תוצאה, ואנחנו קוראים לזה בשורה, ואנחנו אומרים להבהיר תבנית זו איפה הנתונים שלך הוא תוצאה זו. בסדר? כך שזה רק עיבוד השורה של התוצאה. אחרת, זה צועק. אז, זה הוא דוגמא של הבקר. כפי שאתם רואים, זה הוא רק place-- כן, מצטער? קהל: מדוע יש אמפרסנד לפני השורה? אליסון BUCHHOLTZ-AU: אמפרסנד לפני השורה. אנחנו רק iterating. זה גם כתובת ל-- קהל: אז זה כמו התייחסות C. אליסון BUCHHOLTZ-AU: זה וודא כי אתה בעצם שינוי המקורי ולא עותק. זה באותו אופן עם C שבו אנחנו עוברים על ידי התייחסות כאן, רק כדי לוודא. קהל: האם זה לא == במקום לא = ב- PHP? אליסון BUCHHOLTZ-AU: זה לא ==. קהל: כי שווה בC הוא פשוט- אליסון BUCHHOLTZ-AU: זה פשוט לא =. כן, לא. זה לא ==. בגלל == ב- PHP בודק שוויון עם שם הטלה, שהוענק, אבל איכות נוספת. אז, זה לא == ב- PHP. זה אחד הקטן הבדלי תחביר. כן. אז אנחנו רק iterating דרך כל שורה, ולהבהיר, אם אתם לקרוא את המפרט שלך, רק תפקיד אחר שהוא הולך למעשה לעבד את כל HTML ולהציג אותו בך דפדפן אינטרנט בשבילך. אישור. אז, אנחנו אוהבים לחשוב על הבקרים שלך כמו מה מטפל בהיגיון העסקי. כפי שאתם רואים כאן, זה שבו אנחנו נמצאים לוקח את הנתונים שלנו מהשולחן, אנו מעבדים אותו בדרך כלשהי, ולאחר מכן אנחנו עוברים אותו. כאשר אנו עושים להבהיר כמה תבנית, תבנית כלשהי היא לדעתנו, ואנחנו עוברים את זה רק הנתונים שהוא צריך לקבל. לא את כל הנתונים. רק את הנתונים שאנחנו רוצים שהוא יקבל. בסדר? בעיקרון את הנתונים לאחר עיבוד. אז זה את התצוגה, זה תבנית הסכום שיש לנו, וכל זה עושה הוא, שאתה יכול יש להם קצת PHP במבט שלך. זה לא כמו שום PHP בתצוגה. אתה צריך רק צריך מאוד PHP המינימלי בנוף, ואתה אף פעם לא צריך להיות שאילתות במבט שלך. אתה לא צריך לדבר למסד הנתונים שלך במבט שלך. זה ההבדל הגדול. אז מה קורה כאן הוא, שיש לנו PHP זה iterating דרך השורה. אז במקרה הזה, כיוון שהיינו iterating דרך כל שורה וטיוח משהו, זה היה כנראה כמו מערך דו ממדים שבו יש לנו כמה שורות ש הוא, בעצמו, מערך, כי אנחנו iterating את זה שוב. ואנחנו רק להדפיס את שם השורה, ואז לסיים אותו. אתה לא צריך צריך את זה בforeach. אף פעם לא ראיתי את זה לפני למעשה. אני רק עושה את foreach. אוקיי, אז זה את התצוגה. בואו תראו אם אנחנו יכולים ללכת דרך קצת pset שלך. יש לנו 15 דקות, אז אני בטוח שאתה גברים היו רוצים שיותר מסתם סיום מוקדם. תן לי לראות אם אני יכול להביא את זה. אז אני לא יודע כמה מכם הורדתי אותו ומה לא עדיין, אבל יש לנו את שם משתמש של כאן, ויש לנו כמה סיסמא. ולרוע מזל, תקין עכשיו מסד הנתונים הוא ריק, כדי שבאמת צריכים כדי ליצור מסד נתונים. ובכן, זה מוזר. לא ציפה לזה. טעויות טכניות. קשיים טכניים. יש לנו כמה pset7. מגניב. אז, דבר יחיד שאתה יכול לעשות זה, עם query-- אני ליצור טבלה. אז זה הולך להיות users-- מה אתה יכול לעשות כאן הוא, אם יש לנו some-- ממש עכשיו? אישור. ברור שאני לא עושה כל כך חם. אה. אני יודע למה. כי אני מעולם לא יצרתי השולחנות בפועל. לכן, כאשר אתה ראשון להתחיל עם מסד הנתונים, אתה מן הסתם צריך להחליט מה הם דברים שאני צריך יש לי כאן? אז אם רק נצא מ טבלת הנתונים שלנו כאן, היו לנו כמה ID, ש רק יכול להישאר int. ואם נסתכל כאן, יש דבר מגניב that-- מדד אז. אם אתה עושה ראשוני, זה יעשה את זה דבר שהשולחן שלך מאורגן על ידי, וזה יהיה גם להפוך אותו לייחודי. אז במקרה הזה, אנחנו נעשה את זה יסודי, ואני הולך לעשות את זה שם, אז אנחנו פשוט נעשה את זה varchar כמו 26 אותיות, וכי מדוע לא? ואז אתה יכול ללכת להצלת, ולאחר מכן אם אתה רואה, יש לנו כמה משתמשים כאן. אז אם אנחנו רוצים לעשות הכנס, שאנחנו יכולים לעשות את זה בדרך זו, או אם אתה רוצה להתאמן עם queries-- הו הילד שלך. אני לא השתמשתי בזה לנצח. אני לוקח את זה בחזרה. אתה יכול לערוך את זה גם בעצמך רק על ידי הוספת מידע באופן ידני עם משהו כמו, אתה ניתן לשנות כל אחד מאלה אם אתה רוצה make-- אם אתה רוצה פתאום להיפטר משם, אתה יכול להוריד, אתה יכול לעשות את כל הדברים האלה. אם אתה צריך אי פעם לשנות באופן ידני את הטבלה, אני מציע לעשות את זה ב phpMyAdmin לעומת מנסה כדי להבין את SQL שאילתות באופן כללי. כאשר אתה מתחיל pset הראשון שלך, אתה הולך צריך לעבוד כאן, כך מתרגל לזה. ואז כשאתה באמת רוצה להכניס דברים לtable-- שלך אני באמת תוהה איפה זה, כי יש-- הנה זה. זה מה שאני רוצה. אז אם אתה הולך ל- SQL, אתה יכול ממש לראות, כפי שאנו רואים כאן, יש לנו שאילתות SQL. אז אם אנחנו רוצים לבחור משהו או אם אנחנו רוצים להכניס משהו, אנחנו יכולים לעשות להכניס למשתמשים, נכון? אני חושב שאתה צריך הקו הנטוי. דבר אחד שיש לדעת הוא, אם אי פעם אתה משתמש בזה, אתה צריך להשתמש באלה בחזרה גרשיים, אשר בדרך כלל, אם אתה על מק, ממש מעל הכרטיסייה. אז דבר טוב לדעת. אתה יכול להכניס לתוך משתמשים, ויש לנו את הערכים שלנו, נכון? אז יש לנו ערכים, והערכים שלנו במקרה זה יהיה רק, יש לנו רק תעודת זהות כדי ש יכול לעשות אחד אם אנחנו רוצים. זה מוזר. אישור. אז זה בדיוק כמו קצר דבר קטן עם SQL, אבל זה יכול להיות שימושי יותר לבפועל תסתכל על כמה מהקבצים בפה. אז ללכת להורדות. אה, לא הורדות. אז, רק בהדרכה מהירה של מה בכל אחד מתיקיות אלה. הוא כולל, רק שיש לנו דברים כי להגדיר את הדפדפן שלך, יש לנו קבועים אלה, ויש לנו את הפונקציות האלה. אם אתה מעוניין בכל אחד מהם, אני ממליץ לחפש בפונקציות. אחד מהם שהוא סופר שימושי, למעשה הוא זה כאן, מזבלה. אז אם אתה משתמש בזה, זה יהיה ממש פשוט להדפיס את כל מה שמשתנה כי אתה אוהב את זה ל. אז אם אתה מתקשה להבין מה מערך זה נראה כמו, או מה נתונים אלה למעשה, איך זה מעוצב, זה דבר נהדר לשימוש. במיוחד כאשר יש לך משתמש עם מניות רבות, זה הולך להיות משהו נהדר לשימוש. כי זה עלול להיות formatted-- אני יודע לפחות עבורי, כאשר עשיתי pset זה, זה היה מעוצב בצורה כי אני לא ממש מצפה. אז אני מנסה לחזר על זה ומנסה לתפעל אותו, אבל אני לא ממש להבין מה אני עושה. אז אם אתה פשוט לזרוק אותו, זה יהיה להדפיס אותו לדפדפן, ואתה יכול לראות בדיוק איך זה מעוצב. זה בדרך כלל יהיה להדפיס אותו כ מערך עם המפתחות שלה ואת ערכיה. כך שהוא יכול לעזור שם. זה גם יכול לעזור לעשות בטוח שאתה בעצם תופס את הנתונים ש אתה חושב שהיית. אז אם אתה היה כמו, השולחן שלי בהחלט אומר שיש משתמש עם זיהוי זה, אבל כשאתה הולך לזרוק משתנה, זה לא שם, ברור שאתה יודע שזה שבו שגיאה הולכת להיות. זהו אחד הכלים הטובים ביותר לניפוי שגיאות, לדעתי. ואז יש שני דברים נוספים שכאן, אבל על פי רוב, זה אחד אני רוצה להסב את תשומת הלב ל, כי זה מאוד מועיל. ציבור, מה יש לנו כאן הוא, זה כל הדברים CSS שלנו. אז CSS, גופנים, התמונות שלנו, מה לא. זה כל הדברים האלה אתה לא צריך לשנות. אתם יכולים לחשוב על אם זה יש דברים כמו CSS בגופנים, היה זה יהיה מודל, או נוף, או בקר? קהל: [לא ברור] אליסון BUCHHOLTZ-AU: זה יהיה להיות יותר מנוף, נכון? זה טיפול בכל דברים, איך דברים נראים. אז אם אנחנו פותחים את זה כאן, אנחנו רואים שכל מה שקורה כאן הוא שאנחנו הופכים משהו. בסדר? אז זה הייתי מאוד להעפיל כתצוגה עבור זה. אז זה פשוט לוקח כמה, זה מתקשר קצת portfolio.php שיש לנו, וזה עובר בכותרת ותיק. וזה רק הופך את זה. למעשה, אני חוזר בי. זה הוא בקר, משום ש לעבד, לזכור, הופך את התצוגה. אז portfolio.php בזה מקרה יהיה המבט שלך. מצטער, חבר'ה. Portfolio.php הולך להיות המבט שלך, וזה פשוט להיות הבקר שלך בשביל זה. ואם אנחנו נסתכל על זה אחרון כאן, תבניות, תבניות כל הדעות שלך נמצאות כאן. אז אם אנחנו מסתכלים, ללא ספק אנחנו רואים הרבה HTML כאן. אז זה אחד הוא רק מראה לך מה דף כניסה צריך להיראות. אתה שם לב שיש לנו כמה קבוצות צורה, יש לי להגיש. הנה איך אתה מחליט מה מוצג שם. יש לך איזה סוג כפתור = "submit", ואז יש לך את מה שאתה רוצה את זה כדי להציג בלחצן. אז ככה היית עושה את זה תופיע כמה שאתה רוצה. ואנחנו רואים כאן יש לנו כמה שם משתמש, סיסמא כמה, וכאשר אנחנו באמת פגעו שלח, זה הולך להיות קצת פוסט, וזה הולך לפרסם למה? מה בקר עבור תצוגה זו? כאשר אנו פוגעים הגשה, מה קורה שייקרא? האם אנחנו יודעים? זה ממש כאן, כל כך login.php. משהו שאתם נמצאים הולך ליישם. אז אתה תמיד יכול להגיד לי מה הולך להיות קרא אחרי הלחיצה על 'שלח על ידי הקו ראשון זה כאן. מה פעולת הטופס. כאשר טופס זה יוגש, איזו פעולה אנחנו לוקחים? אנו קוראים login.php, ואנחנו קורא לזה בשיטה זו פוסט, שבו יש מידע מוסתר. בסדר? אז זה המבט שלך, ואז ברור ש אם הלכנו לlogin.php-- האם יש לנו את זה עדיין? כן. אז כפי שאנו רואים כאן, זה יש הרבה יותר היגיון. זה הכל PHP שלנו כאן. אנחנו מנסים לראות אם זה היה _GET $, אם זה היה _POST $, אימות דברים, שאילתא, את כל הדברים האלה. אז אלה הם רק שלוש דברים שונים כאן. אתה לא צריך לשנות דברים. אתה תהיה יצירת דברים בתבנית, אולי, אבל ככל HTML או עיצוב של כל זה הולך, אתה יכול להשאיר אותו כפי רגיל או כמורכב כמו שאתה רוצה. חלק מהאנשים מקבלים ממש בקטע שלו ו לעשות כמה אתרים די מדהים. אתה לא חייב לעשות את זה. אם יש לך זמן, זה דבר ממש מגניב. אתה יכול להתעסק עם CSS ו- HTML ולקבל תחושה הרבה יותר טובה עבורו, אבל לא מרגיש לחץ. יש הרבה שתוכל לעשות ב סוף חזרה עם היישום להתחבר, ולהירשם, וכל הדברים האלה. אז אני מקווה שעוזר קצת. יש לך חבר 'כל שאלות על כל דבר שהלכנו לשם, כל משאבים אחרים? אני בהחלט לשלוח את כל הקוד שלי לדוגמא PHP כדי שאתם, ואז אתה מוזמן לקחת תמונות או מה שלא של זה. גם זה באינטרנט. אתה תמיד יכול פשוט לצפות שוב. אז אם זה זה, כולם טוב? כן. קהל: אני רק רוצה כדי לאשר, כשאנחנו עושה בחר ב- SQL, כוכב אומר הכל, נכון? אליסון BUCHHOLTZ-AU: כן. קהל: ואז אם אין לך הכוכב, אם אתה רוצה לקחת את זה מספציפי שורה, אז אתה שם את השם של-- אליסון BUCHHOLTZ-AU: שמו של השורה ומה שאתה רוצה אתה רוצה את הערך של. קהל: ואז תאריך. אליסון BUCHHOLTZ-AU: לא משנה מה שאתה מחפש, כן. באותו אופן, אם אתה עושה DELETE * מ כמה שולחן, זה יהיה למחוק את כל מה. אז, * הוא פשוט פראי כרטיס לכל דבר. קהל: אישור. אליסון BUCHHOLTZ-AU: מגניב. מדהים. ובכן, יש לי גדול יום שני, בחורים. אני אראה אותך בשבוע הבא. מזל טוב על pset שלך.