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. Отлично. Есть ли какие-конечные вопросы перед мы вроде отказов в течение дня? Я все еще живу? Отлично. Привет прямая человек. Отлично. Есть больше вопросов? Нет? И тогда я думаю, что мы хорошо идти на сегодняшний день. Я буду придерживаться вокруг немного потом, если люди были вопросы они боялись спросить на поток. Но в противном случае, есть хороший день.