SAM LEVATICH: Ласкаво просимо в розділ на цьому тижні. Я не Енді. Енді вже захворів у цей день, і я були свого роду називається в останню хвилину взяти на себе. Це сезон грипу, так переконайтеся, що ви залишаються чистими, мити руки, і здорового харчування, так що Ви теж не прикуті до ліжка. Але без подальшого шуму, давайте почнемо. Сьогодні ми поговоримо про PHP трохи bit-- як PHP відноситься до HTML, як це відноситься до CSS, а деякі з мережі речі ви зробили на останньому завданні. Ми збираємося поговорити Трохи про SQL і як ви можете працювати з базами даних, який є досить основним компонентом P встановити 8-- Р встановлений 7. Р встановлений 7. І тоді ми будемо говорити трохи Трохи про те, як вид контролери працюють і чому це філософія позаду деяких Сучасні веб-сторінки і інший дизайн. Досить багато багато типів додатків і додатки, які ви, можливо, корабель використанні цієї моделі, вид рамки контролер, що ви будете використовувати в Р встановлюється 7, так що я буду трохи поговоримо про те, чому, що стало популярні, чому це важливо і приємно. І тоді я, нарешті, перейти до кілька порад про рішення P встановлено 7. І якщо у нас є час залишилося в кінці, ми можемо фактично зробити деякі працювати на тому, що разом. Так, PHP. Справді, ви, можливо, помітили this-- Ви дійсно не зануритися в it-- але Р встановлений 6 мав деякий PHP код, який відбувається. І тому, що PHP є С-як мову, PHP, на відміну від HTML і CSS, це мова програмування ,, в той час як HTML і CSS є статичними. Вони мов розмітки, що займаються зі стилем і візуального макета. PHP є реальною угоди. PHP має петлі, тобто conditions-- все, що речі, які весело про С. Він має кілька речей, які трохи трохи краще, ніж С, що ми побачимо, але я думаю, найпростіший спосіб, щоб поговорити про PHP просто зануритися в. Так що я збираюся йти прямо в IDE в цій точці. Перше, що ми збираємося зробити, насправді виглядають трохи на деякі з PHP код, який був у Р встановлюється 6. Таким чином, шлях, який ми робимо that-- перш, таким чином, що ми були під управлінням сервер для пристрою було те, що ми повинні були б type-- або використовувати реалізацію або реалізація співробітники готелю з server.c зайшовши в папку і працює з server.c або ні arguments-- так просто назвати його на локальний хост, який, ймовірно, те, що ви зробив велику частину time-- а потім годувати його directory-- з який буде використовуватися в якості його кореня де сайт буде запустити, в основному. На цьому тижні для P встановити 7, а велика, як наш код для server.c Тобто, є люди, які вже написав ці прекрасні речі, по меншій CS50 що є трохи більше функціональності, програма-сервер, що здатний боротьби з трохи більше про тонкощі, що ми будемо см в обох P встановлений 7 і Р 8 встановлений. І так, що ви запуску сервер, просто набравши "apache50." І перш, ніж ви що-небудь, Ви хочете, щоб переконатися, що Apache 50 НЕ вже працює, як це на моїй машині, що я і зробив, щоб перевірити його. І ви що, називаючи apache50. Стоп, і ви побачите, що це заважає веб-сервер, якщо ви можете подивитися там в нижній частині вікна терміналу. А потім просто почати, ми буду називати, "apache50 почати." А потім ми збираємося годувати його каталог. Тепер, тому що ми хочемо, щоб подивитися на деякі з P встановлений 6 код що ми вже здійснили, я насправді скопіював трохи Р набір 6 код в моїй папці, які ви можете побачити зліва там. Вона називається "SECTION8" великими літерами тому що я просто так схвильований щоб бути в прямому ефірі транслюватися-сьогодні. Так що, якщо ми запустимо це, він повинен Все працює дуже ефективно. Це говорить, добре, наш сайт в даний час доступно за адресою в IDE, в основному, що те, що ви були з допомогою точно так, як це було в Р встановлюється 7-- Р набір 6. Всі мої індекси один індекс сьогодні. Таким чином, ми можемо піти на що адресу, якщо ви пам'ятаєте, просто натиснувши ця маленька Кнопка в правому верхньому куті. І ви пам'ятаєте цей код, який сталося, коли ви пішли в hello.php. І те, що код призначений для зробити, коли ви набрали в імені here-- якщо ви говорите, Сем бо це моя name-- і я натисніть привітатися, коли ми пішли на наступну сторінку, що ім'я повинно було бути відображено. Це б сказав, "Привіт, Сем" або "Привіт," все, що вам ім'я покласти в неї, хоча ми пішли на абсолютно новий веб-сторінці. І це та річ, що PHP може зробити для вас. PHP здатний передавати дані між двома веб-сторінок. Це зовсім різні сторінки. Ви побачите назву "привіт" тут. Насправді, вони мають те ж саме назву, але я обіцяють що вони інший веб- сторінки, якщо ми подивимося на джерело. І ви можете передати дані, що це введене в цьому текстовому полі, Ви представити його до наступного сторінка, яка призову, і потім ці дані в змозі там в його нинішньому вигляді. Тепер ми ще не реалізували це себе, що це те, що ми збираємося зробити прямо зараз, щоб Сортувати отримати смак того, як PHP працює, але основна ідея в тому, що ви можете PHP-- начебто думаю про нього, як функції. Щось, що PHP може дозволити вам у це може приймати параметри Те, що Ви вхідний в HTML сторінці за допомогою використання РНР і форм, і він може передавати їх в якості параметрів до наступної сторінки, що Він завантажує. У цьому випадку, ми до цього завантаженні сторінка з кнопкою "привітатися". Але зараз, я насправді видалив деякі цього коду в hello.php, що в даний час запуску що було насправді, що відображає "привіт, Світ "або" привіт, Сем "або "привіт," все, що було просто введіть. Таким чином, для прямо зараз, ми збираюся зробити що, в принципі. Ми збираємося, щоб відтворити, що і додати ще трохи функціональності, зробити трохи більше з ним, см те, що PHP насправді здатний. Отже, спочатку давайте поговоримо про цей файл, hello.php. Так що, якщо ми масштабу в трохи bit--, і тепер я начебто намагається прокрутити все спосіб around-- ми йдемо. Ви побачите, що називається hello.php, але синтаксис його виглядає як HTML-файл. Це відбувається тому, поточна PHP в цьому файлі це все застрягли між ними Знак питання-каретка блоки. Все тут вважається PHP код. І ви помітите, що коли я зробив коментар, Ви побачите знайомі дві слеша. І якщо ви пам'ятаєте, в HTML, якщо я введіть коментар, це виглядає якось ближче до це, що коментар в HTML. Так насправді всі між ці два кутові дужки Тепер PHP код, який відбивається в тому, що цей маленький символ коментаря включений у коментар. Таким чином, кожен раз, коли ви написати PHP код, навіть якщо немає HTML-код за її межами, це завжди буде укладені в цих кутових дужках з питальними знаками. Ви можете сортувати думати про те, як все it-- коду, який втік до ваших програмах C був укладений у INT основний, порожнечу, фігурна дужка, кінець кучеряве заяву дужки. І ви побачите, фігурні дужки в PHP, теж, але це свого роду як основного методу PHP. Так що тепер, як ми робимо що-небудь в PHP? Тепер, PHP є програмування мова, яка дуже С-як, але це працює на мережі. Так одна річ, яка Ви immediately-- одна з перших речей, які ви дійсно з З був надрукований матеріал ви, вірно? Таким чином, в C, ми зробили це з функцією PRINTF. Ми дали йому рядок, ймовірно, з нового рядка, і тоді ми припинено це крапка з комою. Таким чином, шлях, який ми збираємося зробити, що в PHP--, тому що це не зовсім Printf. Це трохи інший синтаксис. Таким чином, що ми друкуємо речі в PHP є ми сказати, "відлуння привіт" або "відлуння" будь-яке слово. І, що має ефект робить Printf з рядком "Привіт." І це додає новий рядок в нього. Отже, давайте прямо зараз зробити sure-- Я масштабу знову трохи bit-- давайте переконайтеся, що що код працює бо там може дуже добре бути помилка в цьому коді що у нас буде вирішувати. Таким чином, сервер вже запущений. Так що, якщо ми прокручуємо вниз на дно, да, сервер і раніше працює. Так що, якщо ми просто натисніть на цей трохи прямо here-- welcome-- ми повинні get-- здорово. Ми до цих пір має знайомі "привіт" діалог, але коли я типу в "привіт", ми побачимо, що текст "привіт" дійсно роздрукувати, що саме так, як ми очікували, бо відлуння в PHP точно так само як PRINTF заяві. Отже, повернемося до коду, як в P встановлений 6 зробив код розподілу ви отримуєте зробити так, щоб PHP буде Вихід річ, яка вам набрали в на попередньому екрані? І начебто вивчити чому це відбувається, ми збираюся йти в index.html, який оригінальний файл, файл, який з'являється на екрані за допомогою кнопки "привітатися". Ви помітите, що є всі класичні речі, ми приїхали, щоб чекати від такого HTML як ці речі, ці теги укладені в кутових дужках, як PHP але без знаків питання, що вказує на особливу річ в HTML. У нас є назва, яка "привіт". І ви помітите, що, як ми бачили, Назва "привіт" в обох випадках. Давайте змінимо цей "сказати" просто так ми може відрізняти себе, де ми знаходимося. Але у нас є тіло. І тоді цікаво біта, біт, який з'являється в HTML, це елемент форми. І таким чином, ми отримали форму. І це є ключовим. Це, як ми працюємо з PHP. Параметр Дія Форма каже, що hello.php це те, що ми збираємося відправити значення в цій формі к. Це де ми проходимо параметри, так сказати. Ви помітите, інша справа, тут є те, що метод "отримати". Є два основних Методи, за допомогою яких буде використовувати PHP для передачі даних між websites-- веб-сторінок, rather-- в цьому призначенні. І ці методи є "отримати" і "пост". Є деякі тонкі відмінності між GET та посада що ми отримаємо into-- ми буде "отримати" в, якщо ви будете. Але для всіх намірів і Цілі, отримати і пост знаходяться всього в дорозі, що Ви передаєте параметри зі злегка різними стратами. В даний час, ми збираємося використовувати, тому що отримати отримати було те, що був використаний спочатку у файлі PHP Р набір 6. А насправді, якщо ми йдемо в і дивитися перш, ніж ми коли-небудь ще раз внесено, Я збираюся сказати привіт , Метою яких те, що ваше ім'я? АУДИТОРІЯ: Елліот. SAM LEVATICH: О, чорт візьми. Я не знаю, як пишеться це. Не могли б ви записати це для мене? АУДИТОРІЯ: E-L-L-Я-О-Т. SAM LEVATICH: Я-О-Т? АУДИТОРІЯ: Так. SAM LEVATICH: Ідеальний. ДОБРЕ. Я припускаю, що я знав, як пишеться, що. Вибач за те. Але якщо ми говоримо "Say Hello," це не він не збирається, щоб показати на екрані ще й тому, ми змінили код небагато. Але якщо ми "привіт" - Отже, "привіт" тут. Але якщо ми уважніше подивитися на сам URL, ми побачимо, що вона закінчується з hello.php? Ім'я = Елліот. Таким чином, це спосіб спілкування до наступного веб-сторінки параметри, які ми пройшли. Ми сказали, ім'я = Елліот. І це, в кінцевому рахунку, як Р набір 6 Доступ змінну, ми пройшли в через форму. І це те, що властиво запиту GET. Запит Get робить параметрів Відомо, в URL сайту. І ви пам'ятаєте, теж, в Р набір 6, що ви довелося написати функцію що справу з тим, що це рядка запиту може існувати після файлу. Там може бути знак питання з подальшим по в основному будь-яку кількість символів. І це саме те, що тут відбувається. І причина у вас було б розібрати, що в реалізації server.c в P набір 6 так, що ви могли б сказати код PHP, що назвати = Елліот. Ви потрібні, щоб мати можливість розібрати, що з URL так що файл PHP в питанні знав, що цю справу. Так що сподіваюся, це дає мотивація до server.c Тепер, що ми рухаємося по поза С в PHP. Отже, давайте насправді зосередитися про доступ до речі пройшли через запиту отримати зараз в цій точці. Я йду, щоб врятувати це. Ми нічого не зміниться. Схоже, у нас є поле введення. Ми встановлюємо деякі властивості, як ми можемо зробити HTML. Ці прості речі. Ми не повинні це. Але у нас є автозаповнення с, які в основному says-- ви знаєте, при введенні речі в Інтернеті, іноді він намагається заповнити, що за вас. Так що це хороша річ. Ми хочемо, щоб вимкнути його для цієї мети. Це було рішення CS50. Таким чином, ми можемо видалити, що якщо ми хотіли. Автофокус просто вставляє курсор у вигляді права на початку. Знову ж, не надто важливо. Але ім'я = "ім'я" - це трохи складно, тому що його ім'я та ім'я. Але ми могли б змінив це щось інше. І справді, що це що ми будемо робити прямо зараз. Ми скажемо "особу", яка ніби як ім'я якщо людина визначається за їх імені. Так давайте закриємо це, відкрити наш сайт так наш сервер все ще працює Apache 50, і ми будемо говорити, привіт, ось Елліот знову. Чому ні? Привіт. І якщо ми йдемо сюди, ми побачимо, то замість імені = Елліот, він говорить людина = Елліот. І це прямий результат того, що ми тільки що змінили назву = "людина". Таким чином, в якості вхідного елемента HTML-форма, поле імені ідентифікатор для Параметр, який передається. Це як якщо ви створюєте функцію "додати", що прийняв у двох цілих чисел І ти сказав Int А і INT б. Це було б ім'я а, і якщо Ви хотіли іншу форму, яка ми можемо зробити тільки шляхом копіювання і приклеювання, то ми мали б ім'я б. Так що тепер ми будемо мати два параметри які пропускають через дістатися до наступного website-- наступний веб-сторінки, hello.php. І ми можете побачити що знову, якщо ми хочемо. Це найпростіший спосіб впоратися з веб-код у IDE, в основному. Ви запускаєте сервер, отримати його біг, а потім кожен раз, коли внести деякі зміни, просто закрити що файл просто щоб бути в безпеці. При натисканні на кнопку назад це трохи складніше бо це може завантажити раніше версія, не сама остання з. І тоді ви просто натисніть кнопку кнопку ще раз, поп право up-- о, і в даний час існують дві форми. І тому, якщо ми наберемо одне в кожній одно-- "Джейсон Хіршхорн," для instance-- ми говоримо привіт. Ми подивитися на наших параметрів. Схоже, у нас є, а Очікується, а = Джейсон і б = Хіршхорн, яка представляє два параметри що ми пройшли до цієї функції. Так що тепер давайте насправді отримати реалізації цієї функціональності, що ми мав на P набір 6. Так що зараз ми просто повторюючи привіт. І це не дуже корисно. Ми хочемо, щоб відлуння деякі змінні , Який був прийнятий до нас. І ми знаємо ім'я цієї змінної. У нас є, і ми б. Таким чином, ми могли вибрати, щоб повторити будь-який з них. Але як ми до нього доступ? Ну, є певні глобальні змінні в PHP. І я збираюся написати їх у коментарях тут. Два найбільш важливих з них Get і розмістити для наших цілей прямо зараз. Ці масиви або, Технічно, словники де наші змінні, які ми перейти до наступного веб-сторінки Live. І найближчим часом ми побачимо, як їх використовувати. Ще коротка довідка PHP коду і деякі особливості it-- в C, оголосити змінну або використовувати змінні, Ви спочатку повинні були оголосити їх. І те, що ви повинні були зробити, коли ви оголосив їх було сказати, Int А чи сЬаг б. Ви повинні були оголошувати типи цих змінні перед вами створили їх. PHP-- вам не потрібно робити нічого з цього. PHP не вимагає тип змінної. І так, що ви створити переменная-- а ніж говорити INT, CHAR, string-- яка насправді символ *, як ми знаю-- а не робити все що, тому що всі має той же тип, Безтиповою, ми можемо тільки використовувати один символ, який це знак долара. І ви побачите, що це вже з'являються вгору, маленьких автокомплектів речей. І це говорить, що _GET і _POST два варіанти, які я мав у розпорядженні до мене. Деякі з цих речей інші глобальні змінні в PHP що ви будете використовувати протягом курс P встановлений 7. Зараз ми збираємося зосередитися на GET і посади. Але це корисно річ, що робить IDE де колись ви набрали в цьому знак долара, він почне заповнення глобальних змінних або змінні, які ви вже визначили. Так що, якщо ви хочете, щоб визначити змінна називається "рядок", Ви могли б просто встановити його рівним "привіт". І це в основному так просто. І тоді ми могли б зробити щось на зразок "відлуння $ рядка." У середовищі IDE повинні кидати деякі помилки, якщо я роблю нічого поганого, так що сподіваюся, що я роблю все правильно. Але помилки завжди виникають. Ще складніше справа про PHP є те, що він не складено. Так що з C програми, ви могли б зробити розпорядок дня of-- в основному, Ви б внести зміни до код, ви збережете його, і тоді ви б зробити це, де роблять був крок, який називається компілятор, брязкіт, щоб зробити ваш код, цей текст подати, в виконуваний файл. PHP є С-як, але він виконується на льоту веб-браузері. Таким чином, немає ніякого способу знати. Зробити б кинути тих, корисні помилки, вірно? Це було б схоже, вам не оголосив цю змінну перш ніж спробував використовувати його. Ви зробили все це погане stuff-- Segfault, Segfault, все таке раз весело який прийшов з виробництва. PHP є двосічним мечем тому що ви не отримаєте ті помилки, але це також означає, що ви не будете знати, дійсно те, що трапилося з вашою програмою якщо ви просто запустити його і він не працює. Але відладчик повинен вказати деякі, сподіваюся, корисні дрібниці синтаксично, що ви можете виправити. Так що тепер, якщо ми переходимо, метою яких кажуть, давайте закриємо це. Повторно. І ми повернулися сюди. Отже, ми отримали змінну і змінна б. І вони не будуть в кінцевому рахунку неважливо. Ми називаємо їх годину і г без особливої ​​причини. І ми говоримо привіт. Тепер, схоже, наш рядки "привіт" дійсно друк. Ми створили змінну з ім'ям "рядок", встановіть його рівним "привіт". Зверніть увагу, що ми не повинні робити Танос або зробити масив символів. У PHP, тому що змінні є безтиповою, рядок такий же, як в напівкоксу для всіх намірів і цілей. Це може бути "Привіт». Це може бути тільки характер к. Це може бути номер 1. І це не хвилює. PHP не хвилює тип змінної. Або, дійсно піклується. Це піклується, коли ви намагаєтеся і робити речі з ним, але це не відхід у декларація крок. І так само, як ви можете в C, ви можете оголосити рядка в стеку, як це хоча, кажучи "стек" трохи трохи про потенційну неправильним коли це ми говоримо про PHP. Але ми не повинні турбуватися про це. Таким чином, ми отримали наш рядок "привіт", і ми відлуння рядок. Так що тепер ми обговорювали змінні. Так що тепер нам потрібно поговорити про отримувати і розміщувати і виконувати остаточний річ, яка необхідно, щоб дійсно отримати це назад до до функціональності Р набір 6. Так що зараз ми вторячи рядок, але ми дійсно є ці змінні отримати і пост. І тому, що ми використовуємо метод отримання, він Здається природним, що наша змінна, ми зацікавлені, А і Б, будуть розташовані в масиві або словник, технічно отримати. Так що, якщо ми створили, як це отримати з groups-- я натиснув ввести і це не подобається it-- але тут ми маємо отримати. І так потрапити вже існує. Таким чином, ми вже можемо почати доступу деякі з елементів отримати. Якщо ми отримуємо, це синтаксис для масиви в PHP дуже С-як. У нас є два квадратні дужки. Так що, якщо ми говоримо, потрапити в нормальний Масив, ми могли б отримати доступ до індекс нульового, перший індекс. PHP є нульової позначки. Ми могли б сказати, нуль, один, two-- речі, як це. І я кажу, що отримати технічно словник. Так що PHP робить під капотом, який є трохи краще, ніж C, це вже дає вам деякі Словники функціональність, яка дійсно хеш-таблиці, або намагається, нібито. Або, технічно це може бути спробувати також. Але PHP реалізує хеш-таблицю, який утворює ефективну словник. І так ми знаємо ім'я нашої змінної, вірно? Це передається в рядок запиту по PHP. У нас є A = H і B = г, де і б імена змінних. Таким чином, шлях, який ми можемо отримати доступ до Значення, яке відповідає клавіші в нашому словнику це просто кажучи _GET_GET ["а"]. Так що тепер у нас є _GET ["а"]. І якщо ми просто замінити всередині наша відлуння, якщо ми відлуння _GET_GET ["а"] - і якщо відладчик ми побачимо кидає будь-які помилки про this-- ми врятуємо, що і закрити це. Відкрийте його. Таким чином, ми просто робимо право Тепер, так б не має значення. "вона" і "він" - "гул". "вона" і "гул". Звучить добре. І це роздрукувати "їй", який є божевільним. Але це саме те, що що відбувається в Р встановлюється 6. В принципі, те, що Р набір 6 був doing-- відлуння привіт, name-- де був Ім'я змінної, і він просто просить Вас ввести в цьому трохи тексту. Був і Додатковий код, де вона включала, якщо заяви, які ми можемо зробити прямо зараз. Ми можемо сказати, якщо існує, що це функціональність в PHP, _GET З підкреслення, "ім'я" - який в основному говорять, "якщо ім'я було заповнене в", тому що ми могли б просто натиснув кнопку уявити форму без набравши що-небудь у цій галузі. І ми закінчимо що в нашій дружні фігурні дужки. Ми можемо мати ще заяву. І це все, що в межах кута PHP кронштейн, знак питання, куточка, якщо ви будете. А тепер ми побачимо, якщо це працює. Я продовжую чекати для нього для налагодження і лайно на мене, в основному, але це ще не. Може бути, це тепер буде тому що я говорив. Так. Це й справді. Так, нічого не з'являється. Це тому, що щось неправильно що я написав в коді PHP. І я згадав налагодження це складно, тому що в PHP, ми НЕ скомпілювати його заздалегідь і компілятор не подобається, ось де ваші помилки. Але те, що ми можемо зробити, is-- зробити люди пам'ятають як дивитися на іншу мережу просить PHP-- або що сайти послати? [? Малин?] Зробив це в лекції один або два рази. Ви пам'ятаєте, куди ми йдемо, щоб знайти різні борги і 200 Окс всі ці коди, що відправляються через HTTP з веб-сторінки на веб-сторінці? Чи пам'ятає хтось куди ми йдемо, щоб зробити це? Залу: Джерело. SAM LEVATICH: джерело сторінку. Точно. Якщо ви йдете на сторінку Source-- досконалий. Так Вихідний код сторінки тягне інспектора. І я використовую Safari. Багато хто з вас, ймовірно, використовувати Chrome або Firefox. Але поки ви в будь-якому сучасному browser-- і не соромтеся слідувати поряд якщо ви хочете. Ви можете ввести до цього коду або просто подивіться всередині P безлічі 6 каталог якийсь подібного матеріалу. hello.php це те, що ми в даний час працює на емуляції. Таким чином, існує безліч вкладок. Ми можемо подивитися на всі ресурси. Ми можемо побачити вихідний код. Так виглядає це не так пройти тіло, зрештою. Це виявили помилку в PHP, і це зупинився завантаженні всю веб-сторінку. Ми навіть не кінець Тег для HTML або що-небудь. І якщо ми подивимося на мережі, ми можемо см, що нас послав запит. Це домен. Це адресу. Це документ. Ми використовуємо метод GET. І це червоний. Або, Він був червоним, коли я не вибравши його. Як скасувати це? Ну, це був червоний. Дозвольте мені освіжити. Там. Тепер він червоний. Так що це червоний колір, що означає, це не вдалося, що погано. Отже, давайте розглянемо, чому він не в змозі. Таким чином, все, що вихідна сторінка може в основному сказати вам ваша річ не працювати, що ми вже можемо бачити. Так в ідеалі було б бути більш корисним інструментом. І є деякі розширення браузера які дозволяють налагоджувати PHP, але ми не збираємося писати тонну PHP, так що це, ймовірно, просто краще шукати за кодом ретельно і просто переконайтеся, що це не робить нічого іншого. Отже, давайте подивимося, якщо формат це якщо заяву, де проблема. Я хочу, щоб завантажити його назад сюди. Привіт. Так що проблема є. Таким чином, для правильного синтаксису з PHP, PHP буде щоб бути С-як, що ви побачите петлі. Якщо заяви Ви побачите. Ви побачите всі ці друзі що ви познайомитеся с протягом цієї CS50 семестру. Але найкращий спосіб, щоб з'ясувати, як зробити щось в PHP є Google його або поглянути на деякі приклади коду PHP тому що ви знаєте функціональність. Ви знаєте, що ви можете робити з програмою. Ви можете цикл. Ви можете цикл стільки разів, скільки ви хочете. Ви можете цикл всього види різних способів. Ви можете створювати функції. Ви можете створити функції, які викликати інші функції, функції що самі себе називають. А у вас є імена для цих понять. Ви отримали рекурсію, петлі, якщо інші потоки управління. І так Google це ваш кращий друг. Навіть кажуть, "якщо PHP Заява "і там буду бути тонн повідомлень з Відповіді на інших людей які вже були подібні питання до вас, які тільки починають свою діяльність з PHP і цікаво про синтаксис речі. Тому що ми можемо дозволити собі розкіш бути можливість поглянути на код в P безлічі 6, ми насправді потягніть його вгору і побачити, що Добре, ось щось цікаве. Так що це насправді те, що він виглядав в Р встановлюється 6. Так що, якщо ми пройти через це, ми можемо бачити, що ми отримав кілька з них трохи PHP, як знак питання біт. І не фігурні дужки. Є двокрапки. І є кучеряве дужки в PHP, але це формат і спосіб робити PHP, який добре працює з HTML тому що, як ви побачите, ми закриваємо від цих PHP bits-- повернулися на Батьківщину і IFS і всі that--, а потім ми перемежовуючи HTML всередині них в водночас дотримуючись управління потоком встановлено шляхом PHP. Так що я просто хочу, щоб швидка прогулянка через це бо це багато те ж саме поняття, які ми робили раніше. У нас, якщо не порожня, дужки, _GET_GET ["Ім'я"]. Це все той же самий матеріал. Ми з використанням словника _GET, що PHP відправляє за запитом форм, бо це параметри дії, і метод отримання. А потім, що закінчується цим. Двокрапка означає просто зробити це якщо, якщо заява оцінює до істини. Це як фігурною дужкою. І справді, це фігурна дужка в інших мовах, таких як Python, які ви можете зіткнутися, якщо ви просто зробити для остаточного проекту. А потім ця лінія, привіт. Тоді у нас є цей дивний предмет. Ми отримали більше дужки. Там немає HTTP there-- або PHP, вибачте. Але є знак рівності. І тоді у нас є функція, htmlspecialchars (_GEThtmlspecialchars (_GET ["ім'я"]). Це ніби як більш вдосконалена версія луна. Як ми відлуння як спосіб друкувати речі в PHP. Ця функція це визначені в PHP, що буде мати справу з деякими більш противно символи і значення байтів що ви могли б передати його. Це завжди безпечніше використовувати це. Але відлуння буде робити цю роботу просто прекрасно, якщо ми не справу з чим-небудь занадто неприємний. І тому це має той же Ефект в основному, цей матеріал між питання знаки оцінюється PHP. htmlspecialchars повертає хороший HTML друкується значення _GET_GET ["NAME"], тобто все, що ми ввели в форму. А потім скажу привіт, кома простір, а потім, що. Вся ця річ між кутові дужки будуть замінені всі htmlspecialchars гасить. Так що в основному схожі на те, що ми робимо. І у нас є ще про, що це привіт світ, який має сенс. Так що тепер давайте повернемося до нашого Код і подивитися exactly-- о. Я сказав, існує, що ні річ, що ми хотіли зробити. Ми хотіли сказати, не порожньо. І таким чином це повинно працювати трохи трохи краще, не порожній _GET_GET ["Ім'я"]. І, що фігурна дужка відповідає цьому фігурну дужку. Ми отримали наші фігурні дужки тут. відлуння привіт _GET ["ім'я"]. Давайте подивимося, якщо це працює трохи краще. Ми як і раніше працює наш сервер. Привіт Джейсон. Привіт Джейсон. І це спрацювало на цей раз. І так це доказ що ви дійсно можете використовувати фігурні дужки, що ви знають і люблять в PHP коду в HTML. Код PHP надається Ви в PSET 6-- PSET 6-- забезпечує інший спосіб робити що те ж саме. Так що тепер у нас є влада. У нас є функціональність для реалізації код PHP, що ми бачили в PSET 6 самі, в основному. Перш ніж я перейду, то, що деякі з питання, які у вас є на даний момент? Так [нерозбірливо]. АУДИТОРІЯ: Таким чином, у версії в pset6, коли ви запустите її, є прогалина. І я бачу, де простір після коми. [Нерозбірливо] початок відкрита кругла дужка. Як ви включити в простір як ви написали свої власні коди? СЛУХАЛИ: Це хороше запитання. І так давайте зрозуміти. Так що це дуже гарне питання і той, який я не рахував. Але давайте робити це разом. Тому в першу чергу, те, що Я роблю з луна коли ми просто відлуння привіт, він виводить привіт. Якщо ми відлуння тепер це потрапити на окремий лінія, давайте подивимося, що відбувається. Таким чином, ми натисніть цього. Ми продовжуємо говорити, привіт Джейсон. Отже, ще раз, ми не повинні це простір. І це тому, що, в PHP, коли ми відлуння, незалежно від того, скільки spaces-- Ні, не V-- незалежно від того, скільки простору ми не покласти в here-- якщо зараз завантажити, що знову, привіт Джейсон. Так, бачите, всі з тих, простору з'їли до. І це те, що функція відлуння робить. Таким чином, щоб піклуватися про що простір, і це Однією з причин чому ви не використовуєте відлуння і ви використовуєте htmlspecialchars замість цього. Мені цікаво, що б станеться, якщо ми зробили це де ми уклали простір в рядку. Я чесно не знаю, що станеться, коли я роблю це. Так ось один із способів. Це один із способів, щоб піклуватися про нього. Якщо ви обернути місце в рядок, то простір виводитиметься красиво луною. Найбезпечніший річ, щоб зробити зробити htmlspecialchars. Це завжди безпечна ставка. Але тепер у нас є спосіб, щоб зробити Він з луна, якщо необхідно. І подібним чином, ми можемо відлуння нових ліній, все начебто речі ви знайомі робити в PHP. Хто-небудь ще, те, що які-небудь більш питання, які інші люди в цей момент про PHP? Якщо люди з'явилися трохи пізно, Я щасливий залишитися після невеликого і говорити про деякі з початку. І це теж все livestreamed, і архів, який є божевільним. У всякому разі, так що тепер давайте зробимо деякі більш просунуті речі з PHP. І один з найбільш ранніх речей, які ви були введені в С було для петель. І PHP має більш потужний для цикл називається цикл по кожному елементу. І, схоже, this-- для кожної заготовки як порожні, фігурні дужки, зробити річ. Так що це в основному скорочення. Бачите, цикл у вигляді синтаксична конструкція була розроблена в C і в зборі мову і речі, як. Розроблений в С, точніше, як скорочення для багатьох видів петель що люди будуть бачити. Наприклад, коли ви написали цикл, є часто стадію ініціалізації виконується на самому початку, а стан, при якому цикл буде stop-- і це особливість це тільки в той час як цикл, або що в той час як має рівно просто feature--, а потім стадію прирощення в кінці. І так ви часто опиняєтеся написання коду, як в наступному. Я збираюся стерти деякі з цього. Але якщо ми перебором символи в масиві, Наприклад, як ніби ми отримав масив символів. На жаль, щоб повернути C. Я знаю, Ви думали, були зроблені. Але це тільки в цілях навчання PHP, я обіцяю. Так що, якщо ви отримали напівкоксу вул довжини 8, а давайте кажуть, що це говорить Hellooo з останнім нулем. Великий, так що це наша рядок. А потім у нас був цикл. У нас є INT я дорівнює 0. І ми хочемо, щоб вийти, коли STR з я не дорівнює дорівнює нулю, бо ми виходимо, коли він дорівнює нулю. А потім ми робимо я ++ друг точка в цикл. Роблячи щось з вул І. Таким чином, основна формула була, у нас був цей масив, що ми хотів лікувати як окремі елементи. Але те, що ми повинні були зробити, це ми повинні були в основному створити окремий ціле змінну, яка розраховує на кожен раз ми пішли через петлю. І тоді ми мали б потім викликати strstr [я], коли те, що ми дійсно хотіли зробити просто піти характер характером, вірно? Ми не хочемо, щоб збільшити ціле число, а потім використовувати цю ціле для доступу до кожного індивідуально характер. Ми дійсно хочемо посимвольно. І так для кожного грамотно обчислює, що для нас. Якщо у нас є масив, який ми можемо оголосити в PHP а просто-- якщо ми маємо змінну називається, давайте називати його масив. Чудеса не друкувати, це як і будь-який інший змінної. Це просто масив. І у нас є трохи [нерозбірливо], як 1, 2, 3, просто свого роду ініціалізованих масиву. Це нормально, це не подобається моя Еогеасп. Але якщо ми насправді foreach-- Я набрав, що трохи неправильно. Є два способи зробити цикл по кожному елементу. Там же синтаксис і в якості синтаксису. І ми збираємося зробити в синтаксисі в першу чергу, а не як. Це моя помилка. Так Еогеасп піт в масиві, відлуння Num. І РНР кричати на мені чомусь. Це знаходячи несподіваний в чомусь, який є трохи турбувати. Але ми подумаємо, чому це в даний час. Так що не подобається. Давайте спробуємо, використовуючи як. Це воліє, як синтаксис здається. Так давайте зробимо Еогеасп масив в якості піт. Таким чином, невелике пояснення що тільки що відбулося є, як синтаксис saying-- Ну по-перше, давайте подивимося на те, що це виводить. Так ми відкриваємо наше IDE. Ми йдемо сюди. Ми говоримо, Привіт Джейсон. І це зробив 123, який був вміст масиву, який ми створили до вершини. Так дайвінг в цьому цикл по кожному елементу, у нас є змінна називається масив який являє собою масив з трьох чисел. А потім ми робимо Еогеасп Масив, як піт, відлуння Num. І, що більш інтуїтивно, ніж для Лоб. Ми говоримо, лікування кожного з речі в масиві як піт, Я хочу, щоб ви дати мені піт. І це саме те, що він робить. РНР розрахунку, що коли ви говорите, Еогеасп масив, і ви маєте справу з масивом, те, що Ви збираєтеся хочете перебрати це символи в цьому масиві, є Інтс в цьому масиві, це елементи в цьому масиві. І це дозволяє вам зберігати ці змінні як піт, а потім просто вихід Num відразу, а не кажучи У мене є змінна I, а то я хочу, щоб вихідний strstr [я]. І так, що дозволяє нам робити класні речі. Як в принципі ми не повинні створювати ці змінні, такі як я і робити все це прирощення речі в кінці. PHP піклується про все це для вас. Так що тепер давайте поговоримо про Еогеасп в це відноситься і до наших словнику _GET. Таким чином, ми коментувати це швидко. Таким чином, ми маємо _GET масиву. У нас є ця змінна. І він отримав дещо в ньому. Прямо зараз, у нас є тільки одна змінна передається до неї, що це ім'я. Але якщо ми натискаємо Enter, тепер ми можемо мати дві змінні. Ми можемо мати ім'я і вік, наприклад, якщо ми хочемо, щоб вік, а також ім'я людини, як не дивно. Так що тепер _GET буде бути словник з двома елементами, з двома пар ключ-значення. І перший key-- я збираюся написати цей один на борту теж. У нас є словник _GET. На жаль, це трохи важко побачити. Але всередині нашому словнику у нас є ім'я, яке буде щось що ми дали. І ми будемо мати вік, який також буде щось, що ми дали. А це повнота нашої словника. Так він отримав два елементи в ній. І це тому, що Еогеасп петлі розумні, ми могли б думати, і правильно Можна подумати, що Еогеасп може перебирати це словник, роздрукувавши значення задається ім'я і вік. Отже, давайте насправді зробити це. Давайте побудуємо цикл по кожному елементу. І ми збираємося зробити для _GET як. І ми збираємося зробити наступне. Отже, давайте подивимося, що станеться, якщо ми введемо просто слово, а потім кажуть, відлуння слово. Ми також збираємося повторити нову лінію просто щоб зробити це трохи ясніше, що відбувається. Отже, давайте подивимося. Це не дає мені які-небудь помилки. І ми будемо закривати це. На нашому сайті ви збираєтеся робити багато, що протягом pset7. Тому ми говоримо, мене звуть Сем. Мій вік 45. Це не. Але він друкує, як і очікувалося, Сем 45. І так ви помітите, що те, що цикл по кожному елементу did-- тут, давайте повернемося до того, що так що до на board-- ми отримуємо _GET як слова. І там були чотири речі в _GET. Але це тільки роздрукувати дві речі. Еогеасп, будучи його інтелект себе, Передбачається, що те, що ми дійсно хотіли були цінності, а не ключі. Але є спосіб, який ми могли б друкувати з ключів, а також, якщо ми хотіли. Якби ми хотіли також знаю, що ці змінні були названі, є спосіб, що ми може отримати доступ до цієї, а також. А шлях до свого роду зробити це, так що ми можемо говорити, дозволяє дійсно розбити його на пар ключ-значення. Отже, давайте подивимося, що відбувається зараз. Отже, ми маємо ключ. У нас є цінність. У нас є ще один новий лінія для зручності читання. І давайте подивимося, що відбувається, коли ми робимо це зараз. Я не знаю, скільки років Джейсон. Джейсон 15. Отже, ми маємо ім'я Джейсон, вік 15. Таким чином, ми змогли отримати доступ до ключа і пари значень цього словника просто кажучи, як ключові моменти до значення. І це Еогеасп синтаксичний цукор, який дозволяє трохи отримати доступ до речі в словнику. Так що сподіваюся, це свого роду підкреслює сила цикл по кожному елементу. Ви можете в значній мірі кидок все, що здається Iterable, як що-небудь, що має кілька елементи, такі як масив, подібно dictionary-- ті дві первинні речі, які ви будете працювати з і в житті, і в PSET 7. Таким чином, ви можете кинути цей матеріал на нього, і він буде з'ясувати те, що ви хочете з ним робити. Це буде казати, добре, я йду, щоб отримати ці речі з даних, які був прийнятий для мене. І це щось, що ви буде використовувати багато в PSET 7. Я збираюся швидкої прокрутки вниз, щоб подивитися, де я в. Є люди, є питання на цей момент? Питання на всіх? Так? АУДИТОРІЯ: Так що з ключем і значенням, Ви могли б назвати це що-небудь ще і це все ще працює? СЛУХАЛИ: Ой. Нічого собі, я повністю видалив всю лінію. Чудова робота. Так, а. Ключ і значення всього лише умовність. Це корисно. Ви б отримати деяку конструкцію очка, можливо, деякі пункти стиль для цього, тому що це дійсно передає намір. Але ми говоримо, що і yarp. АУДИТОРІЯ: Ви не повинні нічого змінити в HTML файл для того, щоб відобразити, що? СЛУХАЛИ: Зовсім ні. АУДИТОРІЯ: А це якраз знає, що через більшу дорівнює than-- СЛУХАЛИ: Так. АУДИТОРІЯ: --that показник того, що that's-- СЛУХАЛИ: Так. Це синтаксис ForEach, але так. АУДИТОРІЯ: Є не типи. Так що, якщо ви хотіли вік, щоб бути тільки номер? Чи є спосіб зробити це? СЛУХАЛИ: Є способи, щоб перевірити, якщо Змінні відповідати певним типам. Отже, PHP просить трохи більше від вас, тому що немає типу в. Деякі способи він просить менше. У деяких відносинах він просить більше. Тому що, якщо у вас є тільки то в змінній, Ви поняття не маєте, який тип це. Але якщо ви розумні про змінних що ви призначити типи в і переконайтеся, що функції тільки return-- вас хочу функції повертати тільки один тип значення, так що ви можете в основному очікувати, що змінної ви отримаєте назад з функції матиме тип що ви думаєте, це буде, в основному. Але є деякі методи за допомогою яких можна перевірити. Я не пам'ятаю, їх з верхньої частини моєї голови. Я чекаю його, щоб включити синій. IsInt? isstr? Є методи вбудований в PHP, який може перевірити тип змінних для вас. Але якщо ви призначаєте змінні жваво, ви не повинні потрібно зробити, що занадто багато в PSET 7. Але ці методи дійсно існують. І це те, що знаходиться в самій мові. І я не пам'ятаю точну синтаксис. Ми могли б навіть дивитися його. Але час від суті. чи є ще хто-небудь є які-небудь питання? Так. АУДИТОРІЯ: у мене є тільки один більше. Таким чином, ви згадали метод GET, але Ви не кажучи вже про метод POST. Невже ми повертатися до цього? СЛУХАЛИ: Так, ми будемо повертатися до цього. Це саме те, що я шукав на моєму телефоні, який зараз заснув, але я знайду його. Просто переконавшись, що ми потрапили всі PHP нот. Так, ні отладочной версією. Так, у нас є ще кілька речей, які ми хочемо зробити зараз в цій точці. Тому говорити про POST, які ви згадали, єдина відмінність між GET і POST є що пам'ятаю, коли ми дивилися за цією адресою, і ми побачили, о, Ім'я дорівнює а і вік дорівнює yarp праві в URL там для нас. ПОСТ трохи більш скритними з проходження інформації. Так що, якщо ви не хочете, щоб користувач знати, приміром, ви не хочу ім'я користувача і пароль людини В даний час увійшли в яке буде відображатися в URL-адреса, який є розумним кроком в URL не хочуть, тому хтось може побачити його. Якщо вони пов'язують когось на сторінку, ви не хочуть, щоб їх URL оштукатурені там, бо дозволить людям увійти в тільки з склеюванні в URL замість фактично заповнивши форму. ПОСТ трохи більш скритними. І тільки те, що ми повинні змінити є цей метод, зміна від дістатися до повідомлення. І тоді всередині HTTP, а не доступу до масиву _GET, ми збираємося відкрити масиву _POST. І ми помітили, що, якщо ми відкриваємо цю спину знову, Джейсон поволі знижується у віці. назвати Джейсона, вік 14. Те ж саме речовина спливає. Але ми йдемо до URL і ці змінні не існує. І те, як цей пост passes-- так що не забудьте як дивитися на джерело сторінки. Ми йдемо до мережі. Ми оновлюємо. І це інша справа, що Повідомлення буде дати вам попередження про. Ви, можливо, бачили коробку, текст коробка, як це у вашому браузері. Ви впевнені, що хочете відправити форму знову? СТОВП Що відправки цих форм. Тому що в основному, якщо Ви відправили дані кредитної картки, щоб хтось, що не збирається показати в URL. Це буде запит POST. Тому, коли ви відновите сторінку, це повторної цей пост запит. Так що тепер ми хочемо, щоб відправити утворюють знову, тому що він не збирається створити дублікати покупок. І ми помітили, що тут, метод ми використовуємо це POST. І це дійсно передати байт. Це передається 401 з них. Програма в досить крихітні. Але немає ніде, що ми бачимо, цінності, які в даний час пройшов. Веб-сторінки самі можете бачити, але ми, як користувачі не можуть бачити, якщо ви не хакер. Якщо ти хороший хакер, ви можете подивитися. Якщо ви знаєте, основна Формат HTML, значення зробить про себе на сторінках. Ви зможете побачити. Значення будуть там, вони трохи менш очевидно для вас доступу, в основному. Чи є у нас більше питання про GET, POST before--, що ми збираємося робити далі насправді дивитися на деякі з коду що ви даєте в PSET 7, говорити про як він використовує деякі з цих понять, і говорити про речі, які ви збираєтеся щоб зробити трохи в PSET 7. Будь-які інші питання до цього? Ще питання ви, хлопці ,? Відмінно. Гаразд, давайте подивимося трохи на PSET 7, немає сумнівів у тому, що ви Всі найбільше хвилює. Я маю на увазі, це те, що Девід йде через небагато. Але ми будемо мати три каталоги на зверху, а також файл конфігурації. Це для баз даних, які ми говорити про приблизно п'ять хвилин. Включає в себе, ви ніколи не повинні шукати в цьому каталозі якщо ви не хочете, щоб але це приємно знаю, що є всякі помічників. Помічники, як корисні функції. І тоді у нас є конфіг, який встановлює деякі речі вгору. Є деякі функції, які має CS50 написано, що в помічника і конфігурації. І деякі з PHP, що вже існує в файлах буде робити багато тим більше роду тупих робота ніг для вас. Подібно до цього, якщо ми йдемо в суспільне login.php, що є що Виставки прямо, коли ви йдете в PSET 7. Ми побачимо, що є це вимагає заяву. І ніби як Різке включають, хештегом включають в себе, якщо ви з нової генерації. Але це в основному каже, що я потрібен доступ для всіх функцій у config.php. А ви могли б мати вимагають для всіх видів інших речей. конфігурації насправді вимагає помічників. Тому, коли вам потрібно конфігурації, ви також в тому числі і не вимагаючи помічників, а також. Так що дає вам доступ до всіх прохолодний функцій, які ми збираємося використовувати, речі, як зробити. Я насправді відбувається, щоб полегшити це вниз небагато. Так функції, то ми збирається йти через перш ніж ми перейдемо до SQL трохи біт функція login.php, просто тому що він використовує деякі з тем, що ми тільки що говорили про в PHP. Ви бачите, перше, що, якщо $ _SERVER. Це ще один глобальна змінна, яка Ви збираєтеся мати справу з. Це як _GET і _POST, але те, що Сервер містить ця може дозволити вам знати, якщо метод запиту був GET чи посади. Як раніше, що ми робили просто в нашому коді, що ми написали, ми були просто змінюється, що це буде отримати і POST залежно від того, що має HTML-. Але є сторінки, які можуть бути Доступ з обома типами запитів. І ви, можливо, захочете зробити різні речі в залежності від типу запиту, Ввійти, як робить. Таким чином, ви можете перевірити, що запит Метод через доступ ключів, через використання ключа та отримання значення чогось у словнику _SERVER. Так що ще один глобальний Мінлива, як _GET і _POST. Якщо це GET, ми хочемо, щоб надавати реєстраційну форму. Рендер це функція, яка в основному просто ставить відповідну HTML і передає йому деякі параметри. Ця назва параметра, що це використовується для відображення, як не дивно, назва сторінки в Питання, річ тут, сказати або привіт в нашому попередньому прикладі. Тепер у нас є інша справа. Інакше, якщо це POST, ми зробити деякі інші речі. Ми використовуємо цю порожню метод. Це не існує, вона порожня. І ми бачили раніше, PHP має достатню кількість вбудованих в методах, що Девід will-- якщо методи, які є корисними для вас, вони будуть попереджені вас в прогулянці по цій Давида дає на початковому огляді, а також корисні біти Zamyla в. Вона повернулася кожен. Ми всі можемо радіти. вибачитися є влучно назвав функція що тільки в основному друкує деякі повідомлення про помилки, бо CS50 дуже важливий. А тепер це, це складно, тому що це трохи де ми запитів до бази даних. Тепер ми не говорили про бази даних. І ми збираємося в наступному п'ять хвилин або близько того, максимальний. Але це функція що CS50 написав щоб отримати таблицю в основному з бази даних що ми працюємо з в PSET 7. Я дійсно погано з моїм нульовий індексації сьогодні. Але так, це 7. Так запит він збирається повертати Масив, в основному це ключ небагато. І тому, що ці речі не мають набравши, таким чином рядків масив масивів. Тому що, коли ми думаємо про стіл, що ми збираємося зробити є, як ви дізналися в psets як гра 15, так чи інакше де ви були використовувати подвійний масив, ми в основному є ряд інших масиви робить таблицю. І у вас є рядки і стовпці. І тоді ви можете отримати до них доступ, як [0] [1], ви отримаєте [0] [1]. Основні речі, як, що. Отже, що ми робимо тут, у цій функції, ми просимо бази даних якщо користувач це намагаючись увійти в, що буде відправлено за допомогою методу POST. Ми побачимо, ми отримуємо ім'я користувача, від _POST. Вони були відправлені, користувачеві або ви, пошле значення через форму через пост, бо це ім'я користувача та пароль матеріал. Ми перевіряємо ім'я користувача щоб бачити, це в таблиці? Тому що, якщо користувач входу в, то їх ім'я користувача слід зберігати в таблиці користувачі, які існують для цього сайту. Так в основному, якщо користувач знаходиться в базі даних, запит збирається повертатися що ряд, який являє собою масив. Але хитрість в тому, що якщо навіть якщо подвійний масив тільки з одного рядка, навіть якщо це один рядок array-- як ви отримали basically-- якщо у вас є один масив розміру що тримає інший масив, Ви дійсно маємо справу з однією колонкою. Але він як і раніше розглядається як подвійний масив. І це, де це може іноді привести складно, тому що у нас тут рядків. Наша змінна рядків. І тоді ми створюємо нова змінна називається ряд і, поклавши її рівною перший рядок з рядків. І ви помітите, що коментар каже, що це перша і єдина рядок. Так що це складно частину, де тепер працює може повернутися масиви дуже легко. Там не mallocs. Ви не побачите mallocs. Таким чином, ви не будете бачити SEG недоліки. Але функції раніше буде проходити навколо масивів і даних в групах. І ви повинні бути обережні чого саме ваші функції будуть повертати. І навіть якщо це один колонка, як це, запитувати як і раніше буде повертати подвійний масив. Таким чином, щоб доступ, що column-- або можу думати про все це, як перевернута так як ми говоримо про рядках. Але отримати доступ до цієї одного рядка, Ви не можете просто сказати рядків. Навіть якщо це один рядок, ви повинні у rowsrows [0], щоб виключити роду це Зовнішня біт масиву і є тільки ваше один рядок. У деяких інших речей. Там це функція називається password_verify що перевіряє пароль, який був розміщений. І тоді ми бачимо ще один глобальний Мінлива тут, _SESSION. В основному ідентифікатор сесії як вам відстежувати з якщо хтось увійшли в систему чи ні. Так що зараз з login.php, ми входу користувача в. Отже, що ми хочемо зробити, це ми хочемо кажуть, що ідентифікатор сесії дорівнює поспіль ID, який тільки має сенс, оскільки кожен рядок матиме інший ідентифікатор Кількість в складі таблиці. Ми увійдемо до SQL в По-друге, так що якщо який-небудь з цього Здається, небагато, як-бла, то все проясниться. Але ми збираємося встановити ідентифікатор, рівний правильну справу, увійшовши користувача в. Вибачаюсь, якщо щось піде не так. І це логіни мета життя, як професор Маланії б сказав. Так що було login.php. І багато з PHP коду ви пишете в PSET 7, вони будуть небагато. Не забудьте CHMOD для належні дозволи. Там буде трохи про що на початку специфікації. Але PHP, що ви написання буде робити речі, які схожі на це. Ви будете доступу деякі речі, які дані вам в глобальні змінні PHP, що маємо справу з поточною увійшов в систему користувача, чи є Були запити, відправлені на цей сторінка, різні речі, як, що. І це також буде потенційно переборі рядків цієї речі. В іншому функції, запиту робить повернення цієї подвійної масив. А якщо є більш ніж один рядків в ній, якщо are-- да, якщо є більше одного ряду в ньому, то це буде таблиця. І ви, можливо, захочете повторювати через ряди цього масиву, використовуючи цикл по кожному елементу, що ми описали. Так що, якщо ви Еогеасп на подвійному Масив, що буде в word-- тут, Я насправді писати це. Я напишу це швидко тут. Якщо у нас є Еогеасп рядків а поспіль, що тип рядки? Хто-небудь знає? Ти зрозумів? Так рядків подвійний масив. Так що Еогеасп збирається вивести що ми хочемо від цієї подвійної масив якщо ми ітерації над ним? Ми можемо припустити, що в основному це буде або елементи, або рядків або стовпців, в основному. І так рядків і стовпців ми може трактувати як те ж саме. В основному те, що цикл по кожному елементу буде зробити це збирається повертати рядка. рядок буде типу підряд, в той час як рядків подвійний масив. Так що, якщо ви даєте Еогеасп подвійний масив, це не збирається повторювати більше, ніж один рівень. Який є в основному, щоб сказати, якщо є восьмій клітин в цей table-- 1,2, 3, 4, 5, 6, 7, 8-- цикл по кожному елементом не збираюся пройти через кожен з цих клітин. Що цикл по кожному елементу робитиме був він піде через цей ряд, дати вам всю цю рядок. А потім піду через цей ряд. Так це тільки перебір один рівень глибокий. Якщо додати вкладений цикл по кожному елементу, то ви може відноситися до кожного рядка, повернутої з Рядки, ви Еогеасп ряд як елемент, скажімо. І тоді ви могли б повторити цей елемент. Так ось короткий трохи про те, як перепідготовка ви могли б використовувати Еогеасп петлі в контексті запиту. Є які-небудь питання по PHP? Все, що завгодно, перш ніж ми перейти до говоримо про SQL і весело бази даних? Почуваюсь добре? Почуваюсь добре. Добре. Давайте рухатися далі назад до PowerPoint, які ви, ймовірно, пропустіть. SQL, яй. Люди, які знаходяться в моїй секції, як правило, знатиме, що підзаголовки скорочень завжди тільки перші слова Я думаю, що з цього матчу, що algorithm-- що абревіатуру. Це не алгоритм. Так SQL являє собою базу даних. Це мова, яка працює з базами даних. І всі бази даних є столи, принаймні, в тому, як що SQL представляє їх. Ще один спосіб думати про базах даних Бази даних являють собою набір ключів і значень в основному. Ви можете думати про базу даних, як словник, а також у вигляді таблиці. В основному це спосіб зв'язати різні дані з іншими даними, часто через рядків і стовпців. І це шлях це SQL працює найкраще. Таким чином, це один із прикладів таблиці. У мене кілька прикладів люди в моїй секції, яка У мене не було часу, щоб змінити. Але у нас є такі речі, як ID, ім'я, наддержава, і рідний. Я не знаю, де хто-небудь від в моєму розділі, так що я просто хочу, щоб припустити, все це з Нью-Йорка Місто, тому що я висока статистична ймовірність того правильно. SQL автоматично зробить піклуватися про колонці ID для Вас. Якщо вставити новий рядок в базу даних SQL, це буде збільшувати, що Ідентифікаційний номер і просто в основному дотримуватися як п'ять імен, наддержавою, рідне місто, хто на кінці цієї таблиці. Так ідентифікатор стовпця ви ніколи не доведеться турбуватися. Але, як і у випадку з login.php, коли ми були одержувати ідентифікатор сеансу з таблиці і лише за допомогою ID, ID спосіб для унікальної ідентифікації елемент бази даних. Так що, якщо у нас було два Sams, обидва який учив CS50, і обидва хто були з Мілуокі, ті б ще мають різні ідентифікаційні номери і, таким чином відрізняються за контекст таблиці. Так що це те, що має справу SQL с, працюють з в задній частині. Тепер ці чотири команди що вам потрібно для роботи з SQL. І я кинув їх все на одному слайді. Але ми збираємося пройти через їх все окремо. Перша команда UPDATE, який робить те, що ви могли б очікувати. Скажімо, у вас є деякі дані в таблиця, застарів. Як, якщо ви тримати трек імена людей і вік, якщо хтось вік збільшується, то Ви будете хотіти, щоб піти і оновити вік тільки, що людини. Як приклад, який працює з нашої першої table-- не хвилюйтеся про написання всіх ці команди в той же час. Але якщо у вас є оновлення вниз, що буде добре для цієї частини, тому що ми збираємося, щоб повернутися до столу. Так що, якщо ми повернемося до столу, давайте щось сказати, що відбулося був там був землетрус або лінія розлому, що розділити безпосередньо через Нью-Йорк. І ми хотіли, щоб оновити всі який жив у Нью-Йорку. Всі вони були змушені переїхати в штат Пенсільванія. Це не рідне місто. Всі вони були змушені переїхати в Нью-Хейвені. Там ми йдемо. Таким чином, кожен в Нью-Йорку рухається в Нью-Гейвен. І так ось те, що це редагування три ряди в цій таблиці. Але в SQL, ви можете зробити що тільки в одній заяві. Таким чином, ми повернемося, щоб оновити. Дозвольте мені швидко стерти цю плату знову. Коли ми говоримо про оновлення, є кілька частин синтаксису, які є ключовими. Ну, все, синтаксису є ключовим. Але речі в зелений є обов'язковим. Білий потрібно, як зумовлені імена. І блакитний речі які змінюються залежно від таблиці. Так що те, що відбувається з колірна схема тут, там. Так що, якщо ми хочемо, щоб оновити лише ті рядки, людей, які живуть в Нью-Йорку, так що ми будемо робити, якщо ми говорили оновлення? Так таблиця, де ми ставимо Назва нашої таблиці. Давайте просто скажемо, ім'я нашій таблиці табличний. Тому ми хочемо, щоб оновити таблицю один. І ми хочемо, щоб set-- те, що ми хочемо, щоб встановити? Ну, ми хочемо сказати, так column-- PHP лікує рядків, унікальних ідентифікаторів. А потім колонки різні поля з тих елементів бази даних. Так перший елемент бази даних має ім'я Сема, наддержави CS50, і рідне місто Мілуокі. Так що, якщо ми сказали встановлений, давайте подивимося на параметри ще раз, що безліч дублів. У нас є стовпець дорівнює вартості. Таким чином, ми хочемо сказати, деякі column-- які пам'ятають є field-- ми хочемо, щоб побачити поле, рівне чомусь новому. Так що, якщо ми тільки що сказали, оновлення Таблиця 1, встановіть ім'я дорівнює Елліот. Отримати деякі людей з Новий розділ на цьому. Але якщо ми тільки що зробили оновлення таблиці 1 Ім'я набору дорівнює Елліот, що б таблиця виглядати після цього? Люди мають жодного уявлення? Так. АУДИТОРІЯ: Все, що ряд стане Елліот. СЛУХАЛИ: Все в якому ряду? АУДИТОРІЯ: У першому ряду. СПІКЕР: У першому ряду? Чому перший рядок? Я не маю на увазі, щоб забрати тебе. АУДИТОРІЯ: Може бути, все Для всієї таблиці? СЛУХАЛИ: Все в вся таблиця, так. І це абсолютно вірно, я because-- просто допомагаючи вам трохи there--, тому що ми опущений додатковий Інеко. Якщо ви не маєте WHERE Пропозиція, що ця команда буде робити це буде працювати з кожним однорядні в таблиці. Ім'я кожної людини буде стати Елліотт, в основному, який Елліот дуже радий. Або Янні, один з двох. Але ім'я кожного зміниться. Так як ми використовуємо ДЕ clause-- і це відноситься до всіх Wheres які знаходяться в кожній з ці різні речі. Таким чином, ви помітите, що SET має рівну цінність стовпця. І так само, ДЕ. Але вони відрізняються типи висловлювань. Таким чином, колона дорівнює вартості в комплекті в завданні. Як ми говоримо, ми хочемо встановити ім'я, що збігається з Еліотом. Але в WHERE статей, Ці заяви рівності. Так що давайте говорити, що ми тільки хотіли змінити ім'я людини до Еллиоту якщо їх ім'я було Райан, скажімо так. Тому коли ми говоримо ДЕ ім'я дорівнює Райан, що буде успішно тільки зміна name-- це тільки змінити ім'я поля в рядках де поле Назва дорівнює Райан. Так що, якщо у нас було кілька людей, ім'я Райан, всі їхні імена зміниться на Еллиоту. Це схоже на прикладі від того, якщо лінія розлому розщеплюється Нью-Йорк і кожен повинен переїхати в Нью-Хейвені, шлях від нас залежне, зробити це в один оператор UPDATE table1 SET рідне місто Нью-Хейвен = де рідне місто дорівнює Нью-Йорк. Це сила Це оновлення заяві. Ми можемо вибрати будь-яку кількість Рядки через істинних тверджень про полях в тих рядках. Ми не можемо сказати, UPDATE table1 набір Ім'я = Елліот ДЕ ряд = 1, крім того, що ми можемо, якщо ми скажемо ID = 1. Отже, ми збираємося, щоб бути працює з рівністю полів, рівність стовпців. Але, використовуючи поле ID є спосіб вибрати окремі рядки зокрема, бо поле ID є унікальним Ідентифікатор в базі даних SQL. Так як оновлення рядок один, ID дорівнює 1. Оновлення рядки два, просто змінити цю ідентифікаційний номер. Але сила ДЕ заяву, що ми можна оновити речі на підставі яких їх Поточні значення певних речей. Та Елліот? АУДИТОРІЯ: А що, якщо ви хочете, метою яких знову ж таки, це інше питання. Але моє перше питання був, де це відбувається? Де я оновлюю це? Це в коді PHP? СПІКЕР: Де ви оновити, так. Ми збираємося говорити про те, де все це відбувається свого роду один раз ми йдемо через всі команди. Але те, що вам потрібно знаю, на даний момент є в основному що бази даних SQL існує як щось щоб отримати доступ в запиті функція, яка визначає CS50. Так що, якщо ви використовуєте функцію запиту, Ви можете отримати доступ до цієї таблиці. Таким чином, ви будете відправляти ці команди до вашого столу в PHP файлів через функцію запиту. Ви також можете пограти з вашого столу відразу. І це кращий спосіб перевірити ці види команд. І ми підемо через точно, як зробити це в тільки трохи. Так от команда UPDATE. А решта команд будуть свого роду схожі, працює на подібні речі. Вставку на, ймовірно, найбільш відрізняється від UPDATE. Я збираюся залишити це там для тільки трохи і робота тут. Так вставити в, ви побачите ця таблиця раніше те ж саме. Ви хочете вставити в. Капіталізація, SQL не чутливий до регістру. Таким чином, ви не повинні заробити ці речі. За угодою, слова в білому капіталізуються. Але я також кольором їх. Єдина причина, що ви вигоду ті, коли ви друкуєте їх просто, щоб підкреслити що ті є константами. І так ви можете подивитися на капіталізація або той факт, що я їх по-різному забарвлені. Отже, ми отримали INSERT INTO, давайте зробимо table1 знову. Це все в одному рядку. Я просто відокремлюючи його від різні заяви. Так що не турбуйтеся про те, що таблица1 зробив це на другій лінії. Тому ми хочемо, щоб вставити НА table1 деякі значення. І ви помітите, додатковий небагато, що я отримаю в секунду. Отже, ми отримали значний. Так що давайте говорити, що ми хочемо, щоб додати Andi до нашого столу, тому що ми пропускаємо Енді. Енді хворий. Так давайте додамо Енді до нашого столу. Пам'ятайте, що ідентифікаційний номер оновлюється автоматично. Таким чином, тільки поля ми потрібно турбуватися про є ім'я, наддержава, і рідний. І так як, що ми робимо, що дивлячись на синтаксисі, це ми в тільки що отримав дужки, з комою розділення цінності, кожен з яких це значення. Так що, якщо ми хотіли, щоб вставити Енді в наш стіл, все, що ми повинні зробити, це вірно Анді. Що наддержавою Анді, люди в розділі Анді? Вона, як політ, або як швидкість, або щось. Що у нас вже є там? У нас є CS50, політ, Швидкість і сила. АУДИТОРІЯ: Подорож у часі. СЛУХАЛИ: Подорож у часі, дивно. Отже, ми отримали Енді, час подорожі, і її рідне місто. Це дійсно гарне питання. Нью-Йорк, якщо хтось не знає. Все це з Нью-Йорка є Урок забрати з сьогоднішнього дня. Так цю заяву вставити, як п'ятого рядка, з подорожами в часі наддержави і рідне місто Нью-Йорк. Але додаткове поле є головним чином точно вказати, які стовпці Ви хочете вставити речі в. Таким чином, що ми робимо це зараз, Енді, час у дорозі, Нью-Йорк, йде в точному порядку нашого table-- ім'я, наддержава, рідне місто. І якщо ви хотіли зробити щось інше, ніж, як, скажімо, ви не знаєте, хтось супердержавою, як, як я не знав, Анді наддержавою на початку. Таким чином, все, що я знав її ім'я та її рідне місто. Що я міг зробити, це я міг do-- я стерти це швидко. Я хочу, щоб оновити лише стовпці. І це, де додатковий Список стовпців вступає в гру. Я тільки хочу, щоб оновити ім'я та рідне місто. І тоді я скажу цінності. Я зроблю Енді і Нью-Йорку. Якби я опустив список стовпців і просто зробити ці дві речі, де б Нью-Йорк пішли? Які колона Нью-Йорк Місто були поміщені в? Люди мають жодного уявлення? Наддержава, точно. Так що це буде просто йти в порядку. І як тільки вона досягає в кінці Список, це буде просто зупинити заповнення речі в. І цінності, які вона буде дотримуватися в всі стовпці буде просто значення NULL. Так, тому що ми вказано Ім'я та рідний, ми збираємося, щоб мати ID 5, назвати Енді, наддержави NULL. Так наддержава неініціалізованої значення. Ви не обов'язково отримаєте ж помилки, valgrind, якщо ви намагаєтеся і доступ до нього. Все буде добре обнуляється з, бо NULL є значення в SQL. Це константа. І тоді рідне місто буде в Нью-Йорку. Так от INSERT INTO команди. Перш ніж ми перейдемо, є більше дві команди. Є люди, є які-небудь питання з приводу ОНОВЛЕННЯ, про INSERT INTO, про SQL як правило, перш ніж ми перейдемо на наших кінцевих біт? Люди почувають себе добре, здорово. Любов це. Отже, давайте поговоримо про SELECT. Перехід канаву UPDATE сюди. І ВИБІР буде дуже схожі. Мета SELECT, Мета вибрати в житті щоб дати вам купу стовпців які задовольняють певним умовам. І коли я кажу задовольнити певні умови, Ваш розум може негайно повернутися до того, що Інеко які прийшли в UPDATE. І, що застереження саме там в SELECT. Якщо ми не поставити WHERE пункт, і ми говоримо ВИБІР ім'я, hometown-- пишеться, що трохи wrong-- ім'я, рідне місто ВІД table1. Якщо ми просто скажемо, що, те, що ВИБІР збирається дати нам, це збирається дати нам double-- таблицю, а. Подвійний масив, якщо ми думати про в PHP почуває. Але це тільки збирається дати нам подвійний масив з двох columns-- ім'я, і рідний. І він буде ігнорувати ID. І він буде ігнорувати наддержавою. І це буде просто дати нам кожен один ряд цієї таблиці. Так що, якщо ми тільки що вставили Енді, ми повинні Анді. І ми будемо мати оригінальну чотири. Якщо вони були оновлені, що буде відображення, і так далі, і так далі. Так це тому, що ми не використовуйте статтю, де. Але ми можемо використовувати його в точності так само, як ми використовували його в UPDATE. Якщо ми хочемо таблицю імен і супер сили людей, що живуть в Нью-Йорку, ми можемо виконати інструкцію як SELECT, ім'я, superpower-- Я просто хочу, щоб залишити that-- ВІД table1 ДЕ рідне місто = Нью-Йорк. Так що це йде, щоб показати, що ви можете отримати зовсім різні стовпці, а потім покласти стовпці, які ви не навіть повертаючись в пункті WHERE. Ми навіть не хочемо рідне місто кожного. Але ми хочемо, щоб ім'я і наддержава людей чий рідне місто Нью-Йорк. Так що те, що ми можна зробити з WHERE обмовка ми можемо мати справу з колонами що ми не обов'язково хочуть повернутися. Таким же чином в UPDATE, ми можемо мати справу з колонами, що ми не обов'язково хочете оновити. Ми можемо оновити місто всіх хто звуть Сем, наприклад. Ми можемо оновити місто кожен, чиї ідентифікаційний номер 2. Так що просто оновити місто другого ряду де ми не повинні мати справу з необхідності загальне питання. І видаляти, як ви б очікувати, DELETE FROM table1. І тоді у нас є ще один пункт, де. Таким чином, ми можемо сказати, де ID = 1. Видалити перший рядок. І ВИДАЛЕННЯ завжди буде видалити рядок, або це буде видалити деяку кількість рядків. DELETE FROM таблиця, в якій рідне місто = Нью-Йорк видалить всі в Нью-Йорку. От якби був Раптове трагічне чума і ви просто хотіли, щоб видалити всі з-за столу, які жили в одному місті що потрапив чуми. Нехай вони спочивають з миром. Ці чотири команди SQL що ви повинні будете використовувати. Ви можете навіть не потрібно використовувати їх все. Але це чотири що вас чекає CS50 щоб бути зручним з виходом в та вікторини 1, а також pset7 і pset8. Там просто ця таблиця ще раз. У цьому, наддержава Роя є оновлений до лазерних променів, які приклад я не використав. Я не знаю, який Рой воліє, але сила. Рой має наддержави сили. Кетрін не зробити це сьогодні. Це сумно. Але вона має супер швидкість. Ну, що було PHP. Перш ніж говорити про MVC, робить Хто-небудь є питання про PHP? Тепер SQL або PHP, якщо ви раптом придумати питання про PHP? Відмінно. Гаразд, ми всі встановлений, то. Тому говорити трохи про вигляді моделі контролерів, давайте повернемося до деяких частина матеріалу в pset7. Так що вигляд моделі Контролер is-- Я не збирається врятувати мої зміни для входу тому що я повністю забиті його. Але в основному у нас є два окремі речі відбувається. У нас є громадськості Каталог, який містить код, який буде виконуватися і веб-сторінки, які будуть відвідані. І у нас також є цей каталог погляди. І погляди містить шаблони. Це те, що функція render-- ми побачили надати Функція в купу коду PHP в що CS50 вже написана для вас, що бере в певних параметрів. Те, що це робить код це відбувається в уявлення, які є набори, як заздалегідь написані HTML код, і це вставки значення в деяких місцях. Це як, коли вам перейти в CS50 фінансів, те ж саме заголовок на кожній сторінці. Те ж саме колонтитул на кожній сторінці. Це тому, що шляхи які роблять роботи це буду автоматично виправити в заголовку і той Глядач, який ви можете знайти в уявленнях. Ми насправді може перейти в заголовку, і дивіться, що це HTML-файл з головою. Він отримав кілька стилів. Вам не потрібно дивитися на CSS для pset7, якщо ви не хочете, щоб. Але ви можете змінити їм, якщо ви хочете, щоб Ваш Фінанси виглядати трохи інакше. Він отримав деякі PHP в заголовок трохи, щоб побачити якщо є інша назва він повинен поставити в цьому заголовку. Але тільки деякі інші сценарії, і посилання, та інші. Глава закінчується, організм починає, і ой, у нас є цей дивний маленький кінець небагато. І є DIV, як безформний вид елемента що має уявлення про центр. А потім, коли ми бачимо, нижній колонтитул, у нас є кінець справ. Ми маємо підставу, яка де текст колонтитула. Кінець DIV, кінця тіла, кінець HTML. Так що рендер робите надати зразок з латання заголовок, інший файл PHP, що буде містити фактичні речі, які Ви дивитися, як ваш стіл запасів якщо ви купуєте або продаєте акції. А потім будемо додавати в підвалі. І вигляд моделі Контролер ідея, що ми хочу, щоб відокремити, як речі виглядають з коду. Це ми хочемо, щоб відокремити зовнішній інтерфейс і базова, де інтерфейс є речі, які бачить користувач, симпатична visuals-- HTML, CSS, такі речі, як, що, зображення, і так далі. І бекенда PHP. Це код, який ви пишете. Це де код це робить фактичні операції. Це коли ви додаєте акції до вашого столу, коли ви купуєте і продажу, це базова. І ми можемо, як ви бачили, в тому числі PHP прямо в HTML. Так що ми могли б зробити для це призначення тільки що HTML-файл для кожної сторінки, як логін. А потім на цій сторінці, просто був величезний блок коду PHP, у тому числі весь код, який ця сторінка спеціально буде потрібно. І тоді ми могли б мати зробити, що для портфеля. Ми могли б зробити всі покупки і продажу в окремих сторінок. Але так як ми надання окремо від того, де ми пишемо бекенд Код, ми можемо легко змінити, як виглядають речі, які не зміна кожен файл. Ми робимо такі речі, як просто додати нова справ до нижньої of-- Привіт я змінив колонтитули. Ви можете просто зробити такі речі, як, що. Але також, ви можете змінити вся візуальна компоновка не зачіпаючи що відбувається в інтерфейсі. І ви можете змінити Вся базова і досі Тобто це виглядають як це було раніше. Це Є ідея вигляду моделі контролера. І це насправді нав'язане парадигма в деяких мовах програмування Ви можете використовувати для кінцевих проектів. Якщо ви розвиток IOS, вони мають вигляд, що те, що ви бачите на iPhone, і то, як бакенду як окремий предмет. Ви можете думати про небагато. Там багато подвійних зірок в інформатика, що смішно, тому що все це в двійковій системі. Я не планував це. Це був каламбур ненавмисне. Так, гра слів не призначена. Але, як і .h файлів і файлів .c, є багато поділу речей, які ми можливо, не потрібно. Таким чином, ми можемо просто відредагувати ч файли, або хтось може просто побачити .h файл і знати, рівно ті функції, які в .c файл не обов'язково знаючи їх реалізація. Ця ідея поділу компонентів які залежать один від одного але можете сортувати доступ один до одного через різні канали, проходження змінних, тільки включають в себе заяви, речі так, цей принцип допомагає створювати додатки які можуть бути більш легко редагував кількома людьми, може бути більш легко змінено або зміни у великому масштабі, і легше налагоджувати у багатьох відношеннях. Дійсно швидко, у мене є кілька порад для pset7, які я буду робити повний екран, таким чином ви не просто дивлячись на the-- РАДА Tippee. Є не так багато порад. Але я вже говорив PHP складно налагодити. Подвійна і потрійна перевірити його. Якщо ваш код просто не з'являється на сторінці, це, ймовірно, помилка PHP, вибачте. Ви ніколи не повинні дивитися на CSS, якщо ви не хочете, щоб. Але як тільки ви закінчите, це може бути миленький кумедна річ, щоб просто піти в і зв'язуватися з параметрами CSS. CSS і HTML є прикладом моделі вид контролера стиль, що теж, вірно? Ви могли б теги стиль всередині HTML елементів. Але якщо ви начебто аутсорсинг їх CSS, вони легше редагувати, і гра навколо с, і весело провести час з. Лікувати CS50 помічника функціонує як чорні ящики. Ви не повинні знати, саме те, що робить рендер, але повірте це робити завжди право що залежно від того, що ви передаєте його, такі речі, як це. І я б порекомендував дивитися проходження Давида, переживає все речі, а не тільки Todos, але ви дійсно можете лікувати ці, як чорні ящики. Не ходіть в них Функції шукаєте помилок. І вітаємо повернення нашої повелитель Zamyla. Відмінно. Чи є якісь кінцеві питання перед ми начебто відмов протягом дня? Я все ще живу? Відмінно. Привіт пряма людина. Відмінно. Є більше запитань? Немає? І тоді я думаю, що ми добре йти на сьогоднішній день. Я буду дотримуватися навколо небагато потім, якщо люди були питання вони боялися запитати на потік. Але в іншому випадку, є хороший день.