SAM LEVATICH: Witamy Sekcja na ten tydzień. Nie jestem Andi. Andi zachorował ten dzień, a ja zostały rodzaju nazywa się w ostatniej chwili do przejęcia. To sezon grypowy, więc upewnij się, że przebywają czyste, mycie rąk, i zdrowe jedzenie, tak aby ty też nie jesteś przykuty do łóżka. Ale bez dalszego ado, zaczynajmy. Dziś będziemy mówić o PHP trochę bit-- jak PHP dotyczy HTML, jak go dotyczy CSS, a niektóre z żeberek rzeczy zrobiłeś ostatniego zadania. Zamierzamy porozmawiać Trochę o SQL i jak można pracować z bazami danych, który jest dość istotnym elementem P ustawić 8-- P zestaw 7. P zestaw 7. A potem będziemy rozmawiać trochę nieco o tym, jak działa widok kontrolerów i dlaczego to jest filozofia, za niektórymi nowoczesne strony internetowe i inna konstrukcja. Prawie wiele rodzajów aplikacji i aplikacje można wysyłać używania tego modelu, Widok sterownik ramy, , że będzie za pomocą w P zestaw 7, więc będę powiedzieć trochę o tym, dlaczego to się stać popularne, dlaczego jest to ważne i miłe. A potem w końcu przenieść się do kilka porad na temat przeciwdziałania P zestaw 7. A jeśli mamy czas pozostały na końcu, faktycznie możemy zrobić kilka pracować nad tym razem. Więc, PHP. W rzeczywistości, można zauważyć this-- tak naprawdę nie mają do nurkowania w it-- ale P set 6 miał jakiś PHP Kod, który się dzieje. A ponieważ PHP jest C-jak język PHP, w przeciwieństwie do HTML i CSS, to język programowania, podczas gdy HTML i CSS są statyczne. Są języki znaczników zajmujące o stylu i układu wzrokowego. PHP jest real deal. PHP ma pętli, ma conditions-- wszystkie rzeczy, że to zabawa o C Jest kilka rzeczy, które są trochę nieco lepiej niż C, co zobaczymy, ale myślę, że to najprostszy sposób, aby porozmawiać o PHP jest po prostu zanurzyć się. Więc mam zamiar iść w prawo w IDE w tym punkcie. Pierwszą rzeczą, którą będziemy zrobić, to rzeczywiście wygląda trochę na niektóre Kod PHP, który był w P zestaw 6. Więc sposób, że robimy that-- przed, w ten sposób, że my biegaliśmy serwer dla urządzenia było to, że musielibyśmy type-- albo wykorzystać realizacji lub wdrożenie personelu Wykonawcy z server.c przechodząc do katalogu i działa server.c z albo nie arguments-- tak właśnie nazywają to na hosta lokalnego, co jest, co prawdopodobnie zrobiłem większość time-- a następnie wprowadzenie go directory-- z które używać jako nasady gdzie strona będzie będzie działać, w zasadzie. Ten tydzień dla P zestaw 7, jak wielki jak nasz kod do server.c to, że są ludzie, którzy mają już napisane te drobne rzeczy, na co CS50 które mają trochę więcej funkcji, program serwera, który jest w stanie radzenia sobie z nieco bardziej zawiłości, że będziesz zobaczyć zarówno P zestaw 7 i P zestaw 8. A sposób, że po uruchomieniu Serwer jest poprzez wpisanie "apache50." I zanim zrobisz cokolwiek, chcesz się upewnić, że Apache 50 nie jest już działa, jak to jest na moim komputerze, co zrobiłem, aby go przetestować. I to zrobić dzwoniąc apache50. Zatrzymaj, a zobaczysz, że to zatrzymanie serwer WWW, czy można tam zajrzeć w dolnej części okna zaciskowej. A potem po prostu zacząć, jesteśmy zamiar zadzwonić, "apache50 zacząć." A potem idziemy żeby go nakarmić katalogu. Teraz, ponieważ chcemy wyglądać na niektóre P ustaw 6 kod że mieliśmy wdrożone, tak naprawdę kopiowane trochę P ustaw 6 kod do własnego folderu, które można zobaczyć na tam w lewo. To się nazywa "SeCtIoN8" wielkimi literami bo jestem tak podekscytowany, być transmitowane na żywo dziś. Więc jeśli prowadzimy tego, jak powinno wszystko działa bardzo skutecznie. To mówi, OK, nasza strona jest teraz dostępna pod adresem IDE, w zasadzie, co jest, co uzywasz dokładnie tak, jak to było w P ustawić 7-- P zestaw 6. Wszystkie moje dziś indeksy są jednym indeksu. Tak więc możemy przejść do adres, jeśli będziesz pamiętać, klikając przycisk ten mały przycisk w prawym górnym rogu. A ty sobie przypomnieć ten kod, który stało się, gdy wszedł do hello.php. A co do kodu jest przeznaczony do zrobić, to po wpisaniu nazwy here-- jeśli powiesz Sam bo to moja name-- i kliknij przywitać, gdy poszliśmy do następnej strony, nazwa miała być wyświetlane. To powiedzieć: "Cześć, Sam" lub "Witaj", bez względu na nazwę, umieścić w nim chociaż udaliśmy do zupełnie nowej strony internetowej. I to jest coś takiego że PHP może zrobić dla Ciebie. PHP jest w stanie przekazać dane między dwoma stron internetowych. To jest zupełnie inna strona. Zobaczysz, tytuł jest "cześć" tutaj. Faktycznie, mają taki sam tytuł, ale Obiecujemy, że są różne internetowej strony, jeśli spojrzymy na źródła. I można przekazać dane, które jest wprowadzone w tym polu tekstowym, go przesłać do następnego Strona, która jest jest powołany, a następnie, że dane są w stanie być tam w jego obecnej formie. Teraz jeszcze nie zrealizowane to sami, które jest to, co mamy zamiar zrobić już teraz, aby Sortuj uzyskać smak dla jak PHP działa, ale klucz pomysłem jest to, że PHP-- można rodzaj myśleć o tym, jak funkcja. Coś, że PHP może pozwolić ci nie jest to może przyjmować parametry , że wybierzemy się na stronie HTML dzięki zastosowaniu PHP i form i to może przekazać te jako parametry do następnej strony, że ładuje się. W tym przypadku mamy do załadunku to Strona przyciskiem "Say hello". Ale teraz, tak naprawdę usunięte niektóre z tym kodem w hello.php który był prowadzony że faktycznie wyświetlając "cześć, świat "albo" cześć, Sam "lub "hello", co było tylko wejście. Więc na razie, jesteśmy zamiar to zrobić, po prostu. Zamierzamy odtworzyć, że i również dodać trochę więcej funkcji, zrobić trochę więcej z nim, patrz PHP, co jest naprawdę zdolny. Więc po pierwsze, porozmawiajmy o tym ten plik, hello.php. Jeśli więc przybliżyć w sposób Trochę bit-- a teraz jestem jakby próbując przejść wszystkie sposób around-- tam idziemy. Zobaczysz, to się nazywa hello.php, ale składnia to wygląda pliku HTML. Dzieje się tak dlatego Rzeczywista PHP w pliku wszystko jest utknął między nimi question mark-bloki daszka. Wszystko tutaj uważany jest za kod PHP. I można zauważyć, że kiedy nie komentarz, zobaczysz znajomy dwa ukośniki. A jeśli będziesz sobie przypomnieć, w HTML, jeśli wpisz komentarz, wygląda na coś bliżej to, co jest komentarz w języku HTML. Tak naprawdę wszystko pomiędzy te dwa nawiasy jest kod PHP, który odzwierciedla fakt że ten mały komentarz symbol zamienia się w komentarzu. Dlatego za każdym razem piszesz kod PHP, nawet jeśli nie ma kodu HTML poza nim, to zawsze będzie zamknięty w tych nawiasach kątowych ze znakami zapytania. Jakby można pomyśleć o it-- jak wszystkie kodu, który biegł w programach C został ujęty w int main, pustki, nawias klamrowy, koniec kręcone stwierdzenie nawiasów. I zobaczysz, nawiasy klamrowe w PHP, też, ale to jest coś w rodzaju jak główny metody PHP. Tak teraz, jak możemy nic zrobić w PHP? Teraz PHP jest programowanie język, który jest bardzo podobny do C, ale to działa w internecie. Więc jedna rzecz, która będziesz immediately-- jednego z pierwszych rzeczy, które naprawdę się C można wydrukować rzeczy, prawda? Więc w C to zrobiliśmy z funkcją printf. Daliśmy mu ciąg, Prawdopodobnie z nowej linii, a następnie zakończone to średnikiem. Tak więc sposób, w jaki mamy zamiar zrobić w PHP-- ponieważ nie dość printf. To trochę inną składnią. Sposób, w jaki możemy drukować rzeczy w PHP jest powiedzieć, "echo hello" lub "echo" dowolne słowo. I to ma wpływ na ten printf sznurkiem, "hello". I dodaje nową linię do niego. Więc teraz, aby sure-- Będę pomniejszyć trochę bit-- upewnijmy się, że że kod działa bo nie może bardzo dobrze być błąd w tym kodzie że będziemy mieli do rozwiązania. Więc serwer jest już uruchomiony. Jeśli więc przejść z powrotem do dołu, yup, serwer nadal działa. Więc jeśli po prostu dotknij tego Trochę w prawo here-- welcome-- powinniśmy get-- świetnie. Wciąż przynoszą zna "Przywitaj się" dialog, ale po wpisaniu w "cześć", zobaczymy że tekst "hello" był rzeczywiście drukowane, które jest dokładnie tak, jak spodziewaliśmy, ponieważ echo w PHP jest jak instrukcji printf. Wracając do kodu, jak w P set 6 zrobił kod dystrybucji to są zrobić to tak, że PHP będzie Wyjście rzecz, która cię wpisany na poprzednim ekranie? I rodzaj badania dlaczego tak się dzieje, że jesteśmy zamiaru iść do index.html, który jest oryginalny plik, plik, który pokazuje się na ekranie za pomocą przycisku "Say hello". Można zauważyć, że istnieje wszystkie klasyczne rzeczy mamy oczekują od HTML tak jak te rzeczy, te znaczniki zamknięty w nawiasach ostrych, takich jak PHP ale bez znaków zapytania, co wskazuje na specjalne rzeczy do HTML. Mamy tytuł, który jest "cześć". I można zauważyć, że jak widzieliśmy, tytuł jest "cześć" w obu przypadkach. Zmieńmy ten jeden do "powiedzenia" tak więc można odróżnić się, gdzie jesteśmy. Ale mamy ciało. A potem interesujące bitowa, bit, który pojawia się w kodzie HTML, Jest to element formularza. I tak mamy formę. I to jest klucz. W ten sposób pracy z PHP. Parametr działanie Formularz mówi, że hello.php jest to, co mamy zamiar wysłać wartości w tej formie do. To jest, gdy przekazujemy parametry, że tak powiem. Zauważysz coś innego tutaj jest to, że metoda ta jest "się". Istnieją dwa podstawowe metody, które będą za pomocą PHP do przekazywania danych między websites-- stron internetowych, rather-- się tego zadania. A te metody są "get" i "post." Istnieją pewne subtelne Różnice pomiędzy get i post że będziemy mieli into-- mamy będzie "dostać" się, jeśli będzie. Ale dla wszystkich zamiarów i cele, get i post znajdują się w odległości sposoby można przekazać parametry z nieco różnych wykonaniach. Na razie mamy zamiar używać dostać, ponieważ dostać to, co było pierwotnie używane w pliku PHP P zestaw 6. I rzeczywiście, jeśli mamy iść i szukać zanim cokolwiek innego były edytowane, Idę się przywitać to-- jak masz na imię? PUBLICZNOŚCI: Elliot. SAM LEVATICH: O, Boże. Nie wiem, jak się pisze, że. Czy mógłby Pan pisze to dla mnie? PUBLICZNOŚCI: E-L-L-I-O-T. SAM LEVATICH: I-O-T? PUBLICZNOŚCI: Tak. SAM LEVATICH: Perfect. OK. Myślę, że nie wiem, jak się pisze, że. Przepraszam za to. Ale jeśli mówimy "przywitać," to nie jest to nie będzie pojawiać się na ekranie ale dlatego, że zmodyfikowana kod trochę. Ale jeśli mamy "Say hello" - OK, więc "cześć" jest tutaj. Ale jeśli weźmiemy bliżej spojrzeć na samego adresu URL, zobaczymy, że to się skończy Nazwa z hello.php? = Elliot. Tak więc, jest to droga komunikacji do następnej strony WWW parametry, które mamy minął. Powiedzieliśmy name = Elliot. I to jest w końcu, jak P zestaw 6 obejrzano zmienną, że przeszedł w przez formę. I to jest coś, co jest charakterystyczne dla żądania GET. Żądanie GET sprawia, że ​​parametry znany w adresie URL strony internetowej. I będziesz przypomnieć też, w P zestaw 6, który Ciebie miałem napisać funkcję która zajmuje się faktem że ten ciąg kwerendy może istnieć po pliku. Nie może być Pytajnik o zasadniczo dowolnej liczby znaków. I to jest dokładnie to, co się tutaj dzieje. A powód trzeba było analizować, że w realizacji server.c w P zestaw 6 jest tak, że można powiedzieć, kod PHP, który nazwać = Elliot. Potrzebne do móc analizowania, że ​​z adresu URL tak, że plik PHP w pytaniu wiedział, co to do czynienia. Więc mam nadzieję, że to daje motywacja do server.c teraz, że idziemy na poza C do PHP. Więc właściwie skupić się na temat dostępu do rzeczy przechodzi przez zamówienie Pobierz teraz w tym momencie. Mam zamiar zapisać to. Nie zmienia niczego. Wygląda na to, że mamy pole wprowadzania. Jesteśmy także ustawić właściwości, jak możemy zrobić HTML. Są to proste rzeczy. Nie potrzebujemy ich. Ale mamy autouzupełnianie off, które zasadniczo says-- wiesz, po wpisaniu rzeczy w internecie, czasami stara się wypełnić, że dla Ciebie. Tak więc jest to miła rzecz. Chcemy, aby go wyłączyć na ten cel. To była decyzja CS50. Więc możemy usuwać, że gdybyśmy chcieli. Autofokus prostu przykleja kursor w prawej formularza na początku. Ponownie, nie jest zbyt ważne. Ale name = "nazwa" - to trochę trudne, ponieważ jest to imię i nazwisko. Ale możemy się zmieniłam to coś innego. A w rzeczywistości, to co zrobimy teraz. Powiemy, "osoba", która to coś w rodzaju nazwy jeżeli osoba jest określony przez ich nazwy. Więc zamknąć tego, ponownie otworzyć się na naszej stronie internetowej ponieważ nasz serwer nadal działa Apache 50, a my powiedzieć, cześć, tu jest Elliot ponownie. Dlaczego nie? Halo. A jeśli idziemy tutaj, zobaczymy to zamiast nazwy = Elliot, mówi osoba = Elliot. I to jest bezpośrednim wynikiem faktu, że po prostu zmienił name = "osoba". Zatem w elemencie wejściowym formularz HTML, w polu Nazwa jest identyfikatorem dla Parametr, który jest jej podjęcia. To jak, jeśli tworzysz funkcję "dodatek", która odbyła się w dwóch liczb całkowitych i powiedział int a, int b. To byłaby nazwa a, a jeśli chcesz inną formę, która możemy to zrobić tylko przez kopiowanie i wklejanie, musielibyśmy nazwisko b. Teraz będziemy mieli dwa parametry które są przekazywane za pośrednictwem dostać się do następnego website-- następna strona, hello.php. I rzeczywiście możemy zobaczyć to jeszcze raz, jeśli chcemy. Jest to najprostszy sposób na radzenie sobie z kod internetowej w IDE, w zasadzie. Uruchomieniu serwera, rozumiem uruchomiony, a następnie za każdym razem kiedy wprowadzić pewne zmiany, tak blisko że plik dla pewności. Naciśnięcie przycisku Wstecz jest trochę trudne ponieważ może załadować wcześniejszy wersja, nie najbardziej uaktualnionych. A potem po prostu kliknij żądany przycisk ponownie, pop prawo up-- oh, a teraz istnieją dwie formy. I tak, jeśli wpisać jedno w siebie jedno- "Jason Hirshhorn" dla instance-- możemy przywitać. Patrzymy na naszych parametrów. Wygląda na to, że mamy, jak Oczekuje, a = b = Jason i Hirshhorn, co stanowi dwa parametry które przeszły do ​​tej funkcji. Więc teraz niech rzeczywiście dostać się do realizacji tej funkcjonalności, które miał w P zestaw 6. Więc teraz jesteśmy po prostu echo cześć. I nie jest to bardzo przydatne. Chcemy echo jakąś zmienną który został przekazany do nas. I wiemy, że nazwę tej zmiennej. Mamy i mamy b. Więc możemy zdecydować się echo jedn. Ale w jaki sposób z niego korzystać? Cóż, są pewne zmienne globalne w PHP. I mam zamiar napisać je w komentarzach tutaj. Dwa najważniejsze to get i dodawać do naszych celów w tej chwili. Są to tablice lub, Technicznie, słowniki gdzie nasze zmienne, że jesteśmy przejściu do następnej strony WWW Live. A wkrótce zobaczymy jak z nich korzystać. Kolejna krótka notatka na temat kodu PHP i niektóre specyfiki it-- w C, zadeklarować zmienną lub używać zmiennych, najpierw musiał je zadeklarować. I to, co trzeba było zrobić, gdy oświadczył im było powiedzieć char int a lub b. Trzeba było zadeklarować typy tych zmiennych przed ich stworzył. PHP-- nie trzeba robić żadnej z tych rzeczy. PHP nie poprosić o typ zmiennej. A sposób, że cię stworzyć zmienna-- raczej nie mówiąc int, char, string-- co jest naprawdę char *, jak know-- zamiast robić wszystko że ponieważ wszystko jest tego samego typu, typeless, możemy po prostu wykorzystywać jeden znak, który jest znak dolara. A zobaczysz, że już pojawiały w górę, trochę autouzupełniania rzeczy. I to mówiąc, że _GET i _POST Są dwie opcje, które mam dostępne dla mnie. Niektóre z tych rzeczy są inne inne zmienne globalne w PHP że będziesz używać na przebieg P zestaw 7. Na razie będziemy skupić się na get i post. Ale to jest pomocne rzeczą, że IDE robi gdzie po wpisaniu w tym znak dolara, będzie ona rozpocząć wypełnianie zmiennych globalnych lub zmienne już zdefiniowane. Więc jeśli chcesz, aby zdefiniować zmienna o nazwie "string" można po prostu ustawić go równa "cześć". I to w zasadzie tak proste. A potem możemy zrobić coś w stylu "echo $ string." IDE należy rzucać niektóre błędy, jeśli robię coś nie tak, więc mam nadzieję, że wszystko robię dobrze. Ale błędy zawsze się pojawiają. Innym trudne rzeczą PHP jest to, że to nie jest skompilowany. Więc z programów w C, zrobiłbyś codzienność of-- zasadzie, chcesz wprowadzić zmiany do Twój kod, można go zapisać, i wtedy będzie sprawiają, że, w przypadku gdy jest to krok, który nazywa kompilator, Clang, aby kod, ten tekst pliku, do pliku wykonywalnego. PHP jest C-jak, ale jest wykonywana w locie przez przeglądarkę internetową. Więc nie ma sposobu, aby wiedzieć. Sprawdź, rzucał tych Liczba osób błędy, prawda? To tak, jakby, ciebie nie deklarują tej zmiennej przed próbował go użyć. Zrobiłeś to wszystko złe stuff-- segfault, wysypać, wszystkie tego rodzaju zabawy razy który przyszedł z marki. PHP jest miecz obosieczny bo nie dostaniesz tych błędów, ale to oznacza również, że nie będziesz wiedział naprawdę to, co się stało z programem jeśli po prostu uruchom go i to nie działa. Ale debugger należy podkreślić, niektóre z nadzieją pomocna małe rzeczy składniowo, które można naprawić. Więc teraz, jeśli mamy iść na to-- powiedzieć, niech zamknąć to. Otworzyć na nowo. I jesteśmy z powrotem tutaj. Więc mamy zmienną i zmiennej b. A to nie będzie ostatecznie znaczenia. Zadzwonimy im h i g bez powodu. A my przywitać. Teraz wygląda na to, naszego łańcucha "hi" jest rzeczywiście drukowanie. Stworzyliśmy zmienną "ciąg" ustawiony jest równa "cześć". Zauważ, że nie musisz zrobić, malloc lub zrobić tablicę znaków. W PHP, ponieważ zmiennych są typeless, ciąg jest takie samo jak dla char wszystkich zamiarów i celów. To może być "cześć". Może to być po prostu postać k. Może to być liczba 1. I to nie obchodzi. PHP nie obchodzi typ zmiennej. Albo, że nie obchodzi. Dba podczas próby i robić rzeczy z nim, ale to nie obchodzi, w krok oświadczenie. I tak jak można w C, można Oświadczam, łańcuchy na stosie jak ten choć mówiąc "stos" jest trochę nieco potencjalnego mylące, gdy mówimy o PHP. Ale nie musimy się o to martwić. Więc dostaliśmy ciąg "cześć", a echo ciąg. Więc teraz mamy omówione zmienne. Więc teraz musimy mówić o GET i pisać i wykonywać ostateczną rzeczą, która jest potrzebne do naprawdę to z powrotem w górę w stosunku do funkcji P zestaw 6. Więc teraz jesteśmy echo ciąg, ale mają się te zmienne i post. A ponieważ używamy sposób uzyskać, to wydaje się naturalne, że nasza zmienna jesteśmy zainteresowani, A i B, znajdzie się w tablicy lub słownika, technicznie dostać. Jeśli więc ustawić się tak z groups-- Nacisnąłem wejść i to nie podoba it-- ale tutaj mamy dostać. I tak się już istnieje. Tak więc możemy już zacząć dostępu niektóre z elementów get. Jeśli rozumiesz, to składnia tablice w PHP jest bardzo C-jak. Mamy dwa nawiasy kwadratowe. Więc jeśli mówimy dostać w normalnym tablica, możemy uzyskać dostęp do indeks zerowego, pierwszy indeks. PHP jest wskaźnik zera. Można powiedzieć, zero, jeden, two-- rzeczy tak. A mówiłem, że się jest technicznie słownik. Więc co robi PHP pod maską, która jest trochę ładniejszy niż C, Jest to już daje ci pewne Słownik funkcjonalność, która Stoły naprawdę jest hash, lub stara się, podobno. Albo, technicznie to może być spróbować również. Ale PHP realizuje tabeli mieszania, która tworzy skuteczną słownika. I tak wiemy, nazwę naszej zmiennej, prawda? To są przekazywane w ciąg kwerendy na PHP. Mamy = H i B = g, gdzie aib są nazwy zmiennych. Tak więc sposób możemy uzyskać dostęp do wartość, która odpowiada kluczowi w naszym słowniku jest po prostu mówiąc _GET_GET ["a"]. Więc teraz mamy _GET ["a"]. A jeśli po prostu wymienić wewnątrz nasz echa, jeśli echo _GET_GET ["a"] - i zobaczymy, czy debugger wyrzuca żadnych błędów o this-- że będziemy zapisać i zamknąć to. Go otworzyć. Więc jesteśmy po prostu robi prawo teraz, więc nie powinno mieć znaczenia, b. "jej" i "go" - "szum." "jej" i "buczenie". Brzmi dobrze. I to wydrukowane "jej", który jest szalony. Ale to właśnie dzieje się w P zestaw 6. Zasadniczo, co P zestaw 6 był doing-- echo hello, name-- gdzie miał nazwa zmiennej i po prostu prosi, aby pisać w tym trochę tekstu. Nie było również niektóre Dodatkowy kod gdzie wliczone w przypadku stwierdzenia, które możemy teraz zrobić. Można powiedzieć, jeśli istnieje, które Jest to funkcjonalność w ramach PHP, _GET Z podkreśleniem, "nazwa" - która jest w zasadzie mówiąc: "jeśli nazwa została wypełniona", ponieważ mogliśmy po prostu kliknięciu przycisku przesłać formularz bez wpisywania do tej dziedzinie. A my zawinąć, że w naszym Przyjazne nawiasy klamrowe. Możemy mieć oświadczenie innego. I to wszystko w kąt PHP Uchwyt, znak zapytania, kątownik, Jeśli będziesz. A teraz zobaczymy, czy to działa. Wciąż czeka na niego do debugowania i srać na mnie, w zasadzie, ale nie ma jeszcze. Może to będzie teraz bo rozmawialiśmy. Tak. To nie w rzeczywistości. Więc nic nie jest wyświetlane. To dlatego, że coś złego że napisałem w kodzie PHP. I wspomniałem debugowanie jest trudne, ponieważ w PHP, możemy nie skompilować go wcześniej i kompilator nie podoba, oto gdzie błędy są. Ale co możemy zrobić, jest-- ludzie pamiętają jak szukać w innej sieci domaga się, aby PHP-- lub że na stronach internetowych wysłać? [? Malin?] Zrobił to w wykład raz lub dwa razy. Pamiętasz, gdzie go znaleźć różne długi i 200 OKS, wszystkie te kody, które są wysyłane za pośrednictwem protokołu HTTP od strony do strony internetowej? Czy ktoś pamięta gdzie idziemy, aby to zrobić? PUBLICZNOŚCI: Źródło strony. SAM LEVATICH: źródło Page. Dokładnie. Jeśli pójdziesz do strony Source-- Perfect. Tak Źródło strony ciągnie się inspektor. I używam Safari. Wielu z was będzie prawdopodobnie się za pomocą Chrome lub Firefox. Ale tak długo, jak jesteś w każdym nowoczesnym browser-- i zachęcamy do naśladowania razem, jeśli chcesz. Można wpisać ten kod lub po prostu zajrzeć do zbioru P 6 katalog z jakiegoś podobnego materiału. hello.php jest to, co jesteśmy Obecnie pracuje nad emulacji. Tak więc istnieje wiele kart. Możemy spojrzeć na wszystkich zasobów. Możemy zobaczyć kod źródłowy. Tak więc wygląda na to, że nie ominąć ciało w końcu. Stwierdzono błąd w PHP i nim zatrzymał ładowania całej strony internetowej. My nawet nie mieć końca tag HTML, czy cokolwiek. A jeśli spojrzymy na sieć, możemy zobaczyć, że jesteśmy wysyłane żądanie. To jest domena. To jest adres. Jest to dokument. Używamy metody GET. I to jest czerwony. Albo, że był czerwony, kiedy nie wybierając go. Jak mogę odznaczyć go? Cóż, to był czerwony. Pozwól mi odświeżyć. Tutaj jest. Teraz jest czerwony. Więc to jest czerwony, co oznacza, nie udało, co jest złe. Warto więc zbadać, dlaczego zawiódł. Więc wszystko, co strony źródłowej można w zasadzie powiedzieć, to twoja sprawa nie działa, które możemy już zobaczyć. Więc najlepiej nie będzie być bardziej przydatne narzędzia. I są pewne rozszerzenia przeglądarki które pozwala na debugowanie PHP, ale my nie zamierzamy pisać mnóstwo PHP, tak, to chyba po prostu najlepsza patrzeć przez kod ostrożnie i tylko upewnić się, że nie robi nic innego. Zobaczmy więc, czy format tego if jest, gdzie jest problem. Chcę, aby załadować, że z powrotem tutaj. Cześć. Więc nie jest to problem istnieje. Więc dla poprawnej składni PHP, PHP będzie być jak w C, które zobaczysz pętle. Zobaczysz, czy sprawozdania. Zobaczysz wszystkie te znajomych że już zaznajomić w ciągu tego semestru CS50. Jednak najlepszym sposobem, aby dowiedzieć się, jak zrobić coś w PHP jest to Google lub spojrzeć na kilka przykładów kodu PHP bo wiesz funkcjonalności. Wiesz, co się da zrobić z programu. Możesz pętli. Pętla tyle razy, ile chcesz, możesz. Możesz pętli w ogóle rodzaje sposobów. Możesz tworzyć funkcje. Możesz tworzyć funkcje wywołać inne funkcje, funkcje które nazywają siebie. I masz nazwy dla tych pojęć. Masz rekurencji, pętle, jeśli inne strumienie kontroli. I tak Google jest twoim najlepszym przyjacielem. Nawet powiedzieć, "PHP, jeśli Stwierdzenie "i nie będziesz jest mnóstwo postów z Odpowiedzi na innych ludzi który miałem podobne pytania do Ciebie, którzy dopiero zaczynają się w PHP i są ciekawi rzeczy składni. Ponieważ mamy luksus bycia w stanie spojrzeć na kod w P zestaw 6, faktycznie pociągnąć do góry i zobaczyć, że OK, tu jest coś ciekawego. Więc to jest to, co go rzeczywiście wyglądał jak w P zestaw 6. Jeśli więc przejść przez to, widzimy, że mamy ale kilka z nich trochę Bity PHP-jak znak zapytania. I nie są nawiasy klamrowe. Istnieje dwukropki. I są kręcone szelki w PHP, ale to Jest to format i sposób prowadzenia PHP, który działa dobrze z HTML bo jak zobaczysz, mamy do zamknięcia od tych PHP bits-- elses oraz IFS i cały that-- i jesteśmy przeplatając HTML wewnątrz nich podczas gdy jeszcze w następstwie przepływ sterowania określone przez PHP. Więc jestem po prostu będzie szybki spacer przez to bo to dużo to samo koncepcje, które robiliśmy wcześniej. Mamy, jeśli nie jest pusta, nawiasy, _GET_GET ["name"]. To wszystko jest takie same rzeczy. Używamy słownika _GET, że PHP wysyła na żądanie form, Ponieważ jest to parametry akcji, a metoda jest uzyskać. A potem, że kończy się to. Dwukropek jest znaczącym po prostu to zrobić jeśli if wartość true. To jak nawias klamrowy. A w rzeczywistości, jest to nawias klamrowy w innych językach, takich jak Python, które mogą wystąpić, jeśli tylko zrobić dla ostatecznego projektu. A potem ta linia, cześć. Następnie mamy tę dziwną rzecz. Mamy wsporników. Nie ma HTTP there-- lub PHP, przepraszam. Ale jest znak równości. A potem mamy funkcję, htmlspecialchars (_GEThtmlspecialchars (_GET ["nazwa"]). To jest coś w rodzaju bardziej zaawansowana wersja echo. Jak mieliśmy echo jako sposób wydrukować rzeczy w PHP. Jest to funkcja, która jest zdefiniowane w PHP, który zajmie się trochę więcej paskudne znaków i wartości bajtów że można ją przejść. To zawsze najbezpieczniej używać. Ale echo będzie wykonać zadanie dobrze, jeśli nie jesteśmy do czynienia z czymś zbyt paskudny. A więc ten ma taką samą Efekt w zasadzie, te rzeczy między pytanie Znaki jest oceniany przez PHP. htmlspecialchars zwraca piękny HTML drukowane wartość _GET_GET ["name"], to znaczy cokolwiek wpisane w formularzu. A potem to się przywitać, przecinek przestrzeń, a następnie, że. Że cała sprawa między nawiasy ostre zostanie zastąpiony przez co htmlspecialchars gasi. Więc to jest w zasadzie podobna do tego, co robimy. I mamy oświadczenie innego, który jest hello world, która ma sens. A teraz wróćmy do naszego Kod i zobaczyć exactly-- och. Powiedziałem istnieje, co nie jest coś, co chcieliśmy zrobić. Chcieliśmy powiedzieć, nie jest pusta. I tak to powinno działać trochę nieco lepiej, a nie pusta _GET_GET ["name"]. I że nawias klamrowy odpowiada, że ​​nawias klamrowy. Mamy nasze nawiasy klamrowe tutaj. echo hello _GET ["name"]. Zobaczymy, czy to działa trochę lepiej. Nadal działa nasz serwer. Witam Jason. Witam Jason. I udało się tym razem. A więc to jest dowód że można rzeczywiście używać nawiasów klamrowych, że znamy i kochamy w kodzie PHP w HTML. Kod PHP przekazane jesteś w pset 6-- pset 6-- zapewnia inny sposób robi to samo. Więc teraz mamy moc. Mamy funkcjonalności do wdrożenia kod PHP, który widzieliśmy w pset 6 przez siebie, w zasadzie. Zanim przejdę dalej, jakie są jednymi z pytania, które masz w tym momencie? Tak [niesłyszalne]. PUBLICZNOŚCI: Więc w wersji pset6, gdy go uruchomić, nie ma miejsca. I widzę, gdzie przestrzeń jest po przecinku. [Niesłyszalne] początek otwarty uchwyt. Jak można włączyć przestrzeń w tak, jak napisał własne kody? GŁOŚNIK: To jest dobre pytanie. A więc niech to postać, która obecnie. Więc to jest bardzo dobre pytanie a jeden, że nie uważają. Ale zróbmy to razem. Tak więc przede wszystkim, co Robię z echa Wtedy po prostu echo witam, wyprowadza komentarzy. Jeśli echo teraz to dostać się na oddzielnym Linia, zbadajmy, co się dzieje. Więc kliknij w tym. Trzymamy mówiąc hi Jason. Więc jeszcze raz, że nie mamy tego miejsca. A to dlatego, że w PHP, gdy mamy echo, nie ma znaczenia ile spaces-- nope, nie V-- bez względu na to, ile miejsca możemy umieścić w here-- jeśli teraz załadować, że ponownie, hi Jason. Tak, widać, wszystkie te przestrzenie został zjedzony. I to jest coś, co funkcja echo robi. Tak więc zadbać o tej przestrzeni, co jest jeden z powodów dlaczego nie użyć echo i używasz htmlspecialchars zamiast. Jestem ciekaw, co by stanie, jeśli to zrobił gdzie zamknięta przestrzeń w łańcuchu. Szczerze mówiąc, nie jestem pewien, co będzie się działo, kiedy to zrobić. Więc to jest jeden sposób. To jest jeden sposób, aby się tym zająć. Jeśli owinąć miejsce w ciąg, to przestrzeń będzie wyjście ładnie przez echo. Najbezpieczniejszym rozwiązaniem jest zrobić htmlspecialchars. To zawsze bezpieczny zakład. Ale teraz mamy sposób to zrobić to echo, jeśli to konieczne. I w podobny sposób, możemy echo nowych linii, tym rodzaju rzeczy znasz robi w PHP. Ktoś jeszcze, jakie są bardziej Pytania, które inni ludzie mają w tym momencie o PHP? Jeśli ludzie pojawili się trochę późno, Jestem szczęśliwy z pobytu po odrobinie i porozmawiać o niektórych początku. I to również wszystkich livestreamed, i archiwizowane, co jest szalone. W każdym razie, więc teraz zróbmy pewne bardziej zaawansowane rzeczy z PHP. I jedna z pierwszych rzeczy, które zostały wprowadzone w C był dla pętli. I PHP ma mocniejszy dla pętli zwanej pętli foreach. I wygląda na to this-- dla każdego puste jako puste, kręcone nawiasach, zrobić coś. Więc to jest po prostu skrótem. Zobacz, do pętli w postaci składniowej konstrukcji został opracowany w C i montażu język i rzeczy lubią. Opracowany w C, właśnie, jako skrót dla wielu rodzajów pętli że ludzie nie zobaczy. Jak wtedy, kiedy napisał pętlę, nie często etap inicjalizacji wykonywane na samym początku, a Stan, w którym pętla będzie stop-- i to jest funkcja to tylko w pętli while, lub, że gdy ma dokładnie tylko, że feature-- a następnie etap inkrementacji na końcu. I tak, że często można znaleźć się pisania kodu jak poniżej. Mam zamiar usunąć niektóre z tych. Ale jeśli mamy iteracji znaki w tablicy, na przykład, jak mamy dostał tablicę znaków. Niestety, aby przywrócić C. Wiem, Ci się, że zostały wykonane. Ale to tylko w celu nauki PHP, obiecuję. Więc jeśli masz str char o długości 8, i niech powiedzieć, że mówi Hellooo z pustym spływu. Świetnie, więc to nasz łańcuch. I wtedy mieliśmy pętli for. Mamy int i jest równa 0. I chcemy, aby wyjść, gdy Str o ja nie równa równa null, bo wyjść, gdy jest równa NULL. A potem robimy i ++ na siebie Temperatura w pętli for. Uprawiając z ul z i. Tak więc podstawowy wzór był, mieliśmy tę tablicę, że chciał traktować jako oddzielne elementy. Ale to, co musieliśmy zrobić, to musieliśmy w zasadzie utworzyć osobne całkowitą zmienną, że liczy się każdy razem udaliśmy się przez pętlę. A potem trzeba by następnie zadzwonić strstr [i], kiedy to, co naprawdę chciał zrobić jest po prostu pójść charakter po znaku, prawda? Nie chcemy, aby zwiększyć całkowitą, a następnie użyć tej liczby całkowitej aby uzyskać dostęp do każdego znaku z osobna. Naprawdę chcemy znak po znaku. I tak dla każdego inteligentnie oblicza, że ​​dla nas. Jeśli mamy tablicę, która możemy zadeklarować w PHP jak just-- jeśli mamy zmienną nazywa, nazwijmy to tablica. Cuda bez pisania, to podobnie jak każdej innej zmiennej. To tylko tablicą. I mamy trochę [niesłyszalne] jak 1, 2, 3, tylko pewnego rodzaju zainicjowany tablicy. To jest OK, to nie podoba mi foreach. Ale jeśli mamy foreach-- rzeczywistości Napisałem, że trochę źle. Istnieją dwa sposoby wykonywania pętli foreach. Jest w składni, jak i składni. A my zamierzamy zrobić w pierwszej składni, nie tak. To mój błąd. Więc foreach num w tablicy, echo num. I PHP jest krzyczeć na mnie z jakiegoś powodu. To znalezieniem nieoczekiwane w czymś, co jest trochę niepokoić. Ale dowiemy się dlatego, że jest w jednej chwili. Więc nie tak. Spróbujmy za pomocą tak. To preferuje jak składnia wydaje. Więc zróbmy foreach tablicy jako num. Więc trochę wyjaśnienie z tego, co się stało Składnia jest, jak dobrze jest saying-- pierwszy, spójrzmy na to, co wypisuje. Więc otwieramy nasze IDE. Chodziliśmy tam. Mówimy: Witam Jason. I to nie 123, które były zawartość tablicy, że stworzył się szczyt. Więc nurkowanie w tej pętli foreach, mamy zmienną o nazwie tablicy która jest tablica z trzech liczb. A potem robimy foreach Tablica jak num, num echa. I to jest więcej intuicyjne niż dla lop. Mówimy, traktując każdy z rzeczy w tablicy jako num, Chcę, żebyś dał mi num. I to jest dokładnie to, co robi. PHP jest obliczenie, że kiedy mówisz tablicy foreach, i masz do czynienia z tablicy, co będziesz chciał iteracyjnego to postacie w tej tablicy, jest int w tej tablicy, to elementy w tej tablicy. I to co pozwala przechowywać te zmienne jak num, a potem po prostu wyjście num od razu, a nie mówiąc, Mam zmienną i, i Następnie chcę wyjściowego strstr [i]. I tak, że pozwala nam robić fajne rzeczy. Podobnie jak w zasadzie nie musimy tworzyć te zmienne, takie jak ja i zrobić wszystko to inkrementacja rzeczy na końcu. PHP dba o wszystko to dla Ciebie. Więc teraz porozmawiajmy o foreach jako ma ona zastosowanie do naszego słownika _GET. Więc będziemy komentować tego szybko. Więc mamy naszą tablicę _GET. Mamy tę zmienną. I jest tam kilka rzeczy w nim. W tej chwili mamy tylko jedną zmienną są przekazywane do tego, co jest nazwa. Ale jeśli klawisz Enter, teraz możemy mieć dwie zmienne. Możemy mieć imię i wiek, na przykład, jeśli chcemy, aby wiek, a także nazwisko osoby, na tyle zabawnie. Więc teraz _GET jest będzie słownik z dwoma elementami dwie pary wartości klucza. I pierwszy key-- Zamierzam napisać ten jeden się na płycie też. Mamy w naszym słowniku jest _GET. Niestety, to jest trochę trudne do zobaczenia. Ale wewnątrz naszego słownika mamy Nazwa, która ma być czymś że mamy podane. I będziemy mieli wiek, który jest również będzie coś, co nam dano. I to jest całość naszego słownika. Więc to ma dwa elementy w nim. I tak, bo foreach Pętle są inteligentne, mamy może myśleć, i poprawnie mogą pomyśleć, że foreach może iterację to Słownik, drukowanie wartości podane przez imię i wiek. Więc w rzeczywistości nie tylko to. Miejmy budowy pętli foreach. I mamy zamiar zrobić dla _GET jak. I mamy zamiar wykonać następujące czynności. Zobaczmy więc, co się stanie, jeśli typ tylko słowo, a potem mówią echo słowa. Mamy również zamiar echo nową linię po prostu zrobić to trochę jaśniejsze, co się dzieje. Więc zobaczymy. To nie daje mi żadnych błędów. A my zamknąć to. Na naszej stronie masz zamiar robić dużo, że w trakcie pset7. Tak więc możemy powiedzieć, nazywam się Sam. Mój wiek to 45. To nie jest. Ale to wypisuje, jak oczekiwano, Sam 45. I tak, można zauważyć, że Pętla foreach did-- co tu wróćmy do tego, więc jest to na board-- mamy _GET jako słowa. I były cztery rzeczy w _GET. Ale to tylko wydrukować dwie rzeczy. foreach, będąc jego inteligencji siebie, Zakłada się, że to, co naprawdę chciał to wartości, a nie klucze. Ale jest na to sposób, że możemy drukować z klawiszy, a także, jeśli chcieliśmy. Gdybyśmy chcieli także wiedzieć, co zmienne te były nazywane, istnieje sposób, że Można uzyskać dostęp do tego również. A droga do rodzaju tego zrobić, więc można, powiedzieć, pozwala naprawdę podzielić go na par wartości kluczowych. Zobaczmy więc, co się dzieje teraz. Tak więc mamy klucza. Mamy wartość. Mamy kolejny nowy Linia dla czytelności. I zobaczmy, co się stanie, kiedy to zrobić teraz. Nie wiem, jak stary Jason. Jason 15. Mamy więc imię Jason, lat 15. Więc byliśmy w stanie uzyskać dostęp do klucza i pary wartości tego słownika po prostu mówiąc, jako kluczowych punktów do wartości. I to jest składniowym foreach nieco cukru, który umożliwia dostęp do rzeczy w słowniku. Więc mam nadzieję, że tego rodzaju podkreśla, moc pętli foreach. Można prawie rzut coś, co wydaje iterable, jak nic, że ma wielokrotność Elementy takie jak tablica, jak dictionary-- to są dwa podstawowe rzeczy będziesz pracujących z zarówno w życiu, jak iw pset 7. Tak więc można rzucać takie rzeczy na to, i będzie dowiedzieć się, co chcesz z nim zrobić. To będzie powiedzieć, OK, będę się te rzeczy z danych, które został przekazany do mnie. I to jest coś, że jesteś zamiar używać dużo w pset 7. Idę do szybkiego przewijania w dół, by zobaczyć, gdzie jestem. Czy ludzie mają pytania w tym momencie? Pytania w ogóle? Tak? PUBLICZNOŚCI: Więc z klucza i wartości, można to nazwać coś innego i to jeszcze działa? GŁOŚNIK: Ups. Wow, całkowicie usunięte całej linii. Świetna robota. Tak więc, a. Klucz i wartość jest tylko konwencja. Jest to pomocne. Można by trochę projekt punktów, może kilka punktów stylu za to, że z powodu tego naprawdę oddaje intencję. Ale mówimy i yarp. PUBLICZNOŚCI: Nie musisz się zmienić coś w pliku HTML w celu odzwierciedlenia, że? GŁOŚNIK: Wcale nie. PUBLICZNOŚCI: I to po prostu wie, że ze względu na równe większą than-- GŁOŚNIK: Tak. PUBLICZNOŚCI: --that wskaźnik, który that's-- GŁOŚNIK: Tak. To składni foreach, ale tak. PUBLICZNOŚCI: Nie są typy. Więc co, jeśli chcesz wiek będzie tylko numer? Czy istnieje sposób to zrobić? GŁOŚNIK: Istnieją sposoby, aby sprawdzić, czy Zmienne spełniać pewne typy. Więc PHP pyta trochę więcej od Ci, bo nie ma żadnych typów w. Niektóre sposoby prosi mniej. W pewnym sensie to pyta dalej. Bo jeśli masz tylko coś w zmiennej, nie masz pojęcia, jakiego rodzaju to jest. Ale jeśli jesteś mądry o zmiennych że przypisanie typów do i upewnić się, który funkcjonuje tylko return-- was chcą tylko powrotu do funkcji jeden rodzaj wartości, tak że można w zasadzie Spodziewam się, że zmienna wrócisz z funkcji będzie od rodzaju , że myślisz, że to będzie, w zasadzie. Ale jest kilka sposobów przez które można sprawdzić. Ja ich nie pamiętam przy mojej głowie. Czekam na to, aby włączyć niebieskie. isint? isstr? Istnieją metody wbudowane w PHP, które mogą sprawdzić typ zmiennych dla Ciebie. Ale jeśli przypisać zmienne elegancko, nie należy trzeba zrobić zbyt wiele w pset 7. Ale istnieją te metody. I to jest coś, co w tym samym języku. A ja nie pamiętam dokładnej składni. Możemy jeszcze sprawdzić. Ale czas jest najważniejszy. Czy mam nikogo masz więcej pytań? Tak. PUBLICZNOŚCI: Mam tylko jeden. Więc wymienione metody GET, ale nie wspomniałeś metody POST. Czy my wracamy do tego? GŁOŚNIK: Tak, będziemy wrócimy do tego. To jest dokładnie to, czego szukałem w moim telefonie, który teraz zasnął, ale będę go znaleźć. Wystarczy upewnić się, że uderzył wszystkie notatki PHP. Tak, nie ma wersji debugowania. Tak, mamy jeszcze kilka rzeczy, które chcemy teraz zrobić w tym momencie. Więc mówisz POST których wspomniałeś, jedyna różnica między GET i POST jest że pamiętam, kiedy patrzyliśmy pod tym adresem URL i widzieliśmy, oh, Nazwa równa ai wiek wynosi yarp w samym URL tam na nas. POST jest trochę bardziej skryty z upływem informacji. Więc jeśli nie chce użytkownika wiedzieć, na przykład, nie chciał nazwę użytkownika i hasło osoby aktualnie zalogowany, aby być wyświetlane w URL, co jest uzasadnione, co Nie chcą, aby w adresie URL, dlatego, że ktoś może go zobaczyć. Jeśli odwołuje się kogoś do stronie nie chcę ich URL otynkowany tam, dlatego, że pozwalają ludziom się zalogować tylko z wklejenia adresu URL zamiast faktycznie wypełnienie formularza. POST jest trochę bardziej tajemniczy. I tylko rzeczy, które będziemy musieli zmienić to ta metoda, zmiana z dostać się pisać. A następnie wewnątrz HTTP, zamiast uzyskiwania dostępu do _GET tablicy, mamy zamiar otworzyć _POST tablicy. A my zauważyć, że jeśli otwieramy to z powrotem się ponownie, Jason powoli zmniejsza się z wiekiem. imię Jason, wiek 14. Ten sam materiał wyskakuje. Ale idziemy do adresu URL i te zmienne nie są tam. A sposób, że POST passes-- więc pamiętać, jak patrzeć na źródła strony. Idziemy do sieci. Mamy odświeżyć. I to jest inna sprawa, że POST daje ostrzeżenia o. Być może już okno, tekst box jak to w przeglądarce. Jesteś pewny że chcesz aby wysłać formularz ponownie? POST to co się wysyłanie tych formularzy. Bo w zasadzie, jeśli wysłałeś dane karty kredytowej do kogoś, że nie będzie pojawiać się w adresie URL. To będzie żądanie POST. Więc kiedy odśwież stronę, to ponownie wysłać ten wniosek post. Więc teraz my chcemy wysłać tworzą ponownie, ponieważ to nie będzie tworzyć żadnych duplikatów zakupów. A my zauważyć, że tu na dole, metoda używamy jest POST. I rzeczywiście przenieść bajtów. Przekazywało 401 z nich. Program jest dość mały. Ale nie ma nigdzie, że możemy zobaczyć wartości, które są przekazywane. Strony internetowe sami widzą, ale my jako użytkownicy nie są w stanie zobaczyć, chyba że jesteś hakerem. Jeśli jesteś dobrym hackerem, można spojrzeć. Jeśli znasz podstawowe Format HTML, wartości będzie ujawnią się stron. Będziesz mógł zobaczyć. Wartości będzie tam, że są tylko trochę mniej oczywiste dla Ciebie dostępu, w zasadzie. Czy mamy więcej pytania o GET, POST before-- co będziemy robić dalej jest rzeczywiście spojrzeć na niektóre z kodem że dajesz w pset 7, mówić o w jaki sposób wykorzystuje niektóre z tych pojęć, i mówić o rzeczy, które masz zamiar musiał zrobić trochę w pset 7. Więcej pytań wcześniej? Więcej pytań macie? Wielki. Dobrze, spójrzmy trochę na pset 7, nie ma wątpliwości, kim jesteś wszystkie najbardziej podekscytowani. To znaczy, to jest coś, David przechodzi trochę. Ale mamy trzy katalogi w góry, jak również plik konfiguracyjny. To dla baz danych, które będziesz rozmawiać na około pięć minut. Zawiera, nigdy nie trzeba szukać w katalogu jeśli nie chcesz, ale to miło wiem, że są różnego rodzaju pomocników. Pomocnicy jest jak przydatnych funkcji. A potem mamy config, która określa pewne rzeczy się. Istnieje kilka funkcji, które CS50 ma napisane, że są w pomocnika i config. A niektóre z PHP, które już istnieje w plikach będzie zrobić wiele z bardziej rodzaju Noga z rozwarty pracy dla Ciebie. Podobnie jak w przypadku idziemy do publicznej wiadomości login.php, która jest co pokazuje się w prawo, gdy idziesz do pset 7. Zobaczymy, że nie wymaga to oświadczenie. A to coś w rodzaju ostre obejmują, hashtag to jeśli jesteś z nowszej generacji. Ale to w zasadzie mówi, że muszę dostęp do wszystkich funkcji w config.php. I można mieć wymagają dla wszelkiego rodzaju inne rzeczy. config rzeczywiście wymaga pomocników. Jeśli więc wymagają config, jesteś również w tym lub wymagających, jak również pomocników. Tak, że daje dostęp do wszystkich fajne funkcje, które mamy zamiar używać, rzeczy, jak czynią. Jestem rzeczywiście zamierza złagodzić to w dół trochę. Więc funkcji czym jesteśmy zamiar przejść przez zanim przejdziemy do SQL trochę bit jest funkcja login.php, po prostu ponieważ wykorzystuje niektóre z tematów że po prostu mówi się w PHP. Widzisz pierwszą rzeczą jest, jeśli $ _SERVER. Jest to kolejna zmienna globalna, że idziesz do czynienia. To jak _GET i _POST, ale co Serwer zawiera się to może niech cię wiedzieć, czy metoda żądania Był to GET lub POST. Podobnie jak wcześniej, co robimy jest tylko w naszym kodzie, które pisaliśmy, my właśnie to się zmienia i GET POST w zależności od tego, co HTML ma. Ale są strony, które mogą być dostępne z obu rodzajów wniosków. A może chcesz zrobić różne rzeczy w zależności od typu żądania, tak jak robi login. Więc można sprawdzić ten wniosek Metoda dostępu za pośrednictwem klawiszy, za pomocą klucza i uzyskiwanie wartość czegoś w słowniku _SERWER. Tak to już inna globalna Zmienna jak _GET i _POST. Jeśli to GET, chcemy renderowanie formularza logowania. Czynią to funkcja, która w zasadzie po prostu umieszcza się odpowiedni kod HTML i przekazuje mu pewne parametry. Ten tytuł to parametr, który jest stosowane w wyświetlaniu, co dziwne, tytuł strony w Pytanie, rzecz się tutaj, powiedzieć lub komentarzy w naszym poprzednim przykładzie. Teraz mamy inną rzecz. Else if to POST, możemy zrobić kilka innych rzeczy. Używamy tego pustą metodę. To nie istnieje, to jest puste. I widzieliśmy wcześniej, PHP ma sporo zbudowany w metodach, że David will-- jeśli istnieje to metody, które są przydatne dla Ciebie, będą powiadamiani o Ciebie na spacer po tym Dawida Przegląd daje na początku, a także osób bitów Zamyla jest. Wróciła każdy. Wszyscy możemy się radować. Przepraszamy jest trafnie nazwany funkcji że tak w zasadzie drukuje Niektóre komunikaty o błędach, bo CS50 jest bardzo uprzejmy. A teraz, że jest to trudne nieco bo to gdzie jesteśmy, przeglądając bazę danych. Teraz nie rozmawiałem na temat baz danych. I będziemy w następnym pięć minut lub tak, maksymalna. Jest to jednak czynność że CS50 napisał aby dostać stolik w zasadzie z bazy danych że pracujesz w pset 7. Jestem naprawdę źle z moim Indeksowanie zera dziś. Ale tak, to jest 7. Więc zapytanie to będzie zwracać liczbę tablica, w zasadzie jest kluczem nieco. A ponieważ te rzeczy nie mają pisania, więc wierszy jest tablicą tablic. Bo kiedy myślimy o stół, co będziemy robić jest, jak dowiedzieliśmy się w psets jak w grze z 15, w każdym razie gdzie trzeba było użyć podwójna tablica, w zasadzie mają szereg innych tablice sprawia, że ​​stół. I masz wiersze i kolumny. I wtedy można z nich korzystać, jak [0] [1], pojawi się [0] [1]. Podstawowe rzeczy w tym stylu. Więc co robimy tutaj, w tej funkcji, pytamy bazy danych jeżeli użytkownik to próby logowania, które będą wysłane za pomocą metody POST. Zobaczymy, jesteśmy coraz nazwa użytkownika z _POST. Oni Wysłano użytkownik lub, wyśle ​​wartość za pośrednictwem formularza przez POST, ponieważ to nazwa użytkownika i hasło rzeczy. Sprawdzamy nazwę użytkownika zobaczyć, czy to w tabeli? Bo jeśli użytkownik loguje w, a następnie jego nazwę powinien być przechowywany w tabeli użytkowników, które istnieją w tym miejscu. Więc w zasadzie wtedy, gdy użytkownik znajduje się w bazie danych, zapytanie będzie chciał wrócić że wiersz, który jest tablicą. Ale trudne jest to, że jeśli nawet jeśli podwójna tablica jest tylko jeden wiersz, nawet jeśli jest to jeden wiersz array-- jak masz basically-- jeśli masz rozmiar jednej tablicy że trzyma kolejną tablicę, jesteś naprawdę do czynienia z jednej kolumnie. Ale to wciąż traktowane jak podwójne tablicy. I to jest, gdzie może czasami trudne, bo mamy wiersze tutaj. Nasza zmienna jest wierszy. A następnie tworzymy zmienna nazywa się nowy wiersz i ustawienie go równa pierwszy wiersz wiersze. A zauważysz, że komentarz mówi, że to pierwszy i jedyny wiersz. Więc jest to trudne części, w której obecnie działa może powrócić tablice bardzo łatwo. Nie ma mallocs. Nie zobaczysz mallocs. Tak więc nie będzie widać SEG usterek. Ale funkcjonuje nadal będzie przejściu wokół tablic i danych w grupach. I trzeba uważać na to, co dokładnie swoje funkcje powróci. I nawet jeśli jest to jeden kolumny tak, zapytania jest jeszcze wrócić podwójną tablicę. Tak, aby uzyskać dostęp do column-- lub można myśleć o tym wszystkim, jak odwrócony ponieważ mówimy o wierszach. Ale aby uzyskać dostęp do jednego wiersza, nie można po prostu powiedzieć, wiersze. Mimo, że jest to jeden wiersz, trzeba nie rowsrows [0], aby wyeliminować tego rodzaju zewnętrzna nieco tablicy i mamy tylko swój jeden wiersz. Zrobić kilka innych rzeczy. Jest to funkcja nazywa password_verify które weryfikuje hasło, że został wysłany. A potem widzimy kolejny globalny Zmienna tutaj, _SESSION. Zasadniczo Session ID sposób można śledzić od tego, czy ktoś jest zalogowany, czy nie. Więc teraz z login.php, jesteśmy zalogowaniu użytkownika w. Więc to, co chcemy zrobić, to chcemy twierdzą, że identyfikator sesji wynosi rzędu id, która po prostu ma sens, ponieważ każdy wiersz będzie miał inny identyfikator ilość w części tabeli. Zajmiemy się SQL w sekund, więc jeśli to Wygląda trochę jak bla, wtedy wszystko się wyjaśni. Ale mamy zamiar ustawić identyfikator równy właściwą rzeczą, zalogowaniu użytkownika w. Przepraszam, jeśli coś pójdzie nie tak. I to jest loginy celem w życie jako profesor Malan powie. Tak to było login.php. I wiele kodu PHP piszesz w pset 7, będą trochę. Nie zapomnij chmod do odpowiednie prawa. Będzie trochę o że na początku spec. Ale PHP, który jesteś pisanie będzie robi rzeczy, który jest podobny do tego. Będziesz się dostępu do pewnych rzeczy, które są wam dane w zmienne globalne PHP, które do czynienia z prądem zalogowany użytkownik, czy istnieje zostały żądań wysyłanych do tego Strona, różne takie rzeczy. I będzie potencjalnie iteracja rzędami tej rzeczy. W innej funkcji, zapytania nie zwraca tę podwójną tablicę. A jeśli nie są niż jednego wierszy w nim, Jeśli nie are-- tak, jeśli istnieją więcej niż jeden rzędy w nim to będzie stół. A może chcesz iteracji przez rzędy tej tablicy przy użyciu pętli foreach, które opisaliśmy. Więc jeśli nie foreach na podwójne tablica, co będzie się word-- tutaj, Ja właściwie pisać. Ja to napisać szybkie tutaj. Jeśli mamy foreach wierszy w rzędzie, co rodzaj wiersza? Czy ktoś wie? Masz to? Więc wierszy jest podwójna tablica. Więc co jest foreach będzie wnioskować że chcemy z tego podwójnego tablicy jeśli mamy iteracji nad nim? Możemy po prostu założyć, że to będzie być albo elementy, lub wiersze lub kolumny, w zasadzie. I tak wierszy i kolumn my można traktować jako samo. Zasadniczo co pętli foreach będzie zrobić, to to będzie zwracać wierszy. wiersz będzie typu rzędu, natomiast wierszy jest podwójna tablica. Więc jeśli dasz foreach podwójna tablica, to nie będzie iteracji więcej niż jeden poziom głębokości. Która jest w zasadzie powiedzieć, czy istnieje osiem komórek w tym table-- 1,2, 3 4, 5, 6, 7, 8-- Pętla foreach nie jest zamiar przejść przez każdy z tych komórek. Co pętla foreach zrobi został on będzie przejść przez ten rząd, daje ten cały rząd. A następnie będzie ona przejść przez ten rząd. Więc to tylko iteracje jeden poziom głęboki. Jeśli dodać zagnieżdżone Pętla foreach, to może traktować każdy wiersz zwrócony z wiersze, zrobić foreach wiersz jako elementu, powiedzmy. A potem można echo elementu. Więc to jest krótka trochę odświeżające, w jaki sposób być może używasz foreach pętli w kontekście zapytania. Czy są jakieś pytania dotyczące PHP? Cokolwiek, zanim przejść do rozmowy o SQL i zabawy z bazy danych? Czuję się dobrze? Czuję się dobrze. W porządku. Przejdźmy z powrotem do PowerPoint, które prawdopodobnie przegapić. SQL, yay. Ludzie, którzy są w moim dziale zwykle będzie wiedział, że Podpozycje akronimów zawsze są tylko pierwsze słowa Myślę, że tego meczu, który algorithm-- ten skrót. To nie jest algorytm. Więc jest to baza danych SQL. Jest to język, w którym współpracuje z bazami danych. I wszystkie bazy danych są to tabele, przynajmniej w drodze że SQL reprezentuje je. Inny sposób myślenia o bazach danych jest Bazy danych to zestaw kluczy i wartości gruntownie. Możesz pomyśleć o bazie danych jako słownikiem, a także w tabeli. Zasadniczo jest to sposób skojarzyć różne dane z innymi danymi, Często przez rzędy i kolumny. I to jest sposób to SQL działa najlepiej. Więc to jest jeden z przykładów tabeli. Mam kilka przykładów ludzie w mojej sekcji, która Nie miałem czasu na zmianę. Ale mamy takie rzeczy jak ID, Nazwa, supermocarstwem i rodzinnym. Nie wiem, gdzie każdy jest ze w moim dziale, tak, jestem po prostu założyć, każdy jest z Nowego Jorku Miasto, ponieważ mam wysoki statystyczna prawdopodobieństwo jest prawidłowe. SQL automatycznie zrobi obchodzi kolumny ID dla Ciebie. Jeśli wstawić nowy wiersz do bazy danych SQL, że będzie zwiększać Numer ID i po prostu w zasadzie trzymać jak pięć nazwisk, supermocarstwem, rodzinnym, kto na końcu tabeli. Tak Identyfikator jest kolumna będziesz Nigdy nie musisz się martwić. Jednak, podobnie jak w przypadku z login.php, kiedy były coraz ID sesji z tabeli i tylko przy użyciu identyfikatora, ID jest sposobem jednoznacznej identyfikacji element bazy danych. Więc jeśli mieliśmy dwa Sams, obie który nauczył CS50, a obie kto były z Milwaukee, tym będzie wciąż mają różne numery identyfikacyjne a tym samym być różne w kontekst tabeli. Więc to jest to, co SQL zajmuje w, pracy z na tylnym końcu. Teraz są to cztery polecenia że trzeba pracować z SQL. I wrzuciłem je wszystkie na jednym slajdzie. Ale mamy zamiar przejść przez je indywidualnie. Pierwsza komenda UPDATE która robi to, co można się spodziewać. Powiedzmy, że masz jakieś dane w stół to nieaktualne. Jak jeśli utrzymanie utwór nazwisk ludzi i wieku, jeśli ktoś jest Wzrost wieku, a następnie będziesz chciał iść i Wystarczy, że aktualizować wiek osoby. Na przykład, który pracuje z naszym pierwszym table-- nie martw się o pisanie wszystkich te polecenia w tym samym czasie. Ale jeśli masz aktualizacji dół, to będzie dobre dla tej części, bo mamy zamiar wrócić do stołu. Tak więc, jeśli wrócimy do stołu, powiedzmy, że coś, co się stało było nie było trzęsienie ziemi lub wina, że ​​linia podziału bezpośrednio przez New York City. I chcieliśmy aktualizacji wszystkich który mieszkał w Nowym Jorku. Wszyscy mieli przenieść się do Pensylwanii. To nie jest miasto rodzinne. Wszyscy mieli przenieść się do New Haven. No to jedziemy. Więc wszyscy w Nowym Jorku przenosi się do New Haven. A więc to jest coś, co jest edycji trzy wiersze w tabeli. Ale w SQL, można to zrobić że tylko w jednym oświadczeniu. Więc wracamy do aktualizacji. Pozwól mi szybkie usunąć tę płytę ponownie. Gdy mówimy o aktualizowanie istnieją kilka części składni, które są kluczowe. Cóż, składni jest kluczem. Ale rzeczy w kolorze zielonym jest opcjonalne. Białe są wymagane, jak predefiniowane nazwy. I niebieski są rzeczy które różnią się w zależności od stołu. Więc to, co się dzieje z program tutaj, tam kolor. Więc jeśli chcesz zaktualizować tylko te wiersze ludzi, którzy mieszkają w Nowym Jorku, więc co byśmy zrobili, gdybyśmy powiedział UPDATE? Więc tabela jest gdzie umieścić nazwa naszej tabeli. Powiedzmy, nazwę naszej tabeli jest tabela jeden. Dlatego chcemy, aby zaktualizować tabelę jeden. I chcemy set-- co chcemy ustawić? Cóż chcemy powiedzieć, więc column-- PHP Traktuje wiersze jako niepowtarzalne identyfikatory. A następnie kolumny są różne pola z tych elementów danych. Tak więc pierwszym elementem bazy danych ma imię Sam, supermocarstwa CS50, i rodzinnym mieście Milwaukee. Jeśli więc wspomniany zestaw, spójrzmy na parametry jeszcze, że zestaw ma. Mamy kolumny jest równa wartości. Dlatego chcemy, aby powiedzieć, niektóre column-- które pamiętam jest field-- chcemy zobaczyć pola równa czegoś nowego. Jeśli więc tylko, że aktualizacja tabela 1, nazwa zestawu równa Elliot. Trochę ludzi z Nowa sekcja w tej sprawie. Ale jeśli po prostu nie aktualizacji tabeli 1 nazwa zestawu równa Elliot, co by wygląd tabeli, jak po tym? Osób ma jakiś pomysł? Tak. PUBLICZNOŚCI: Wszystko w które Rząd stałby się Elliot. GŁOŚNIK: Wszystko w którym wiersz? AUDIENCE W pierwszym rzędzie. GŁOŚNIK: W pierwszym rzędzie? Dlaczego pierwszy wiersz? Nie chcę, aby wybrać się na Ciebie. PUBLICZNOŚCI: Może wszystko w całej tabeli? GŁOŚNIK: Wszystko w cały stół, tak. I to jest dokładnie tuż because-- I po prostu pomaga się trochę there-- ponieważ pominięte opcjonalny WHERE. Jeśli nie masz WHERE Klauzula, co to polecenie zrobi jest to będzie działać z każdym Pojedynczy wiersz w tabeli. Nazwa każdego z nas będzie stać Elliott, w zasadzie, które Elliot jest bardzo zadowolony. Lub Yanni, jeden z tych dwóch. Ale nazwa każdego z nas zmieni. Więc sposób używamy GDZIE clause-- i dotyczy to wszystkich wheres które są w każdym z te różne rzeczy. Tak więc można zauważyć, że SET ma kolumny równą wartość. I tak nie gdzie. Ale to są różne rodzaje sprawozdań. Więc kolumna jest równa wartości w komplecie znajduje się w zadania. Jak mówimy chcemy aby ustawić nazwę równą Elliot. Ale w klauzulach WHERE, są to stwierdzenia równości. Więc powiedzmy, że tylko chciał zmienić nazwisko osoby do Elliot jeśli ich nazwa była Ryan, powiedzmy. Więc, gdy mówimy, WHERE nazwa równa Ryan, które Jedyną zmianą będzie sukcesem name--, że będzie tylko zmienić pole nazwy w wierszach gdzie pole Nazwa jest równa Ryan. Więc jeśli mieliśmy wielu ludzi imieniem Ryan, wszystkie ich nazw zmieni się Elliot. Jest to podobne do przykładu od tego, czy linia wina dzieli Nowy Jork i każdy ma do przenieść się do New Haven, sposób możemy zrobić to w jednej instrukcji UPDATE tabela1 SET rodzinnym = New Haven gdzie rodzinnym równa Nowy Jork. To zasilanie UPDATE. Możemy wybrać dowolną liczbę wiersze przez prawdziwych zdań o pól w tych wierszach. Nie możemy powiedzieć, zestaw UPDATE Table1 name = Elliot GDZIE wiersz = 1, oprócz tego, że możemy jeśli powiemy ID = 1. Tak więc mamy zamiar być pracy z równości pól, równość kolumn. Ale korzystając z pola ID jest sposobem na wybrać poszczególne wiersze specjalnie, ponieważ pole ID jest unikalnym identyfikator w bazie danych SQL. Więc jak aktualizacja wiersz jeden, ID wynosi 1. Aktualizacja wiersz dwa, po prostu zmienić ten numer. Ale moc WHERE jest to, że może aktualizować rzeczy w oparciu o to, co ich bieżące wartości niektórych rzeczy są. Tak Elliot? PUBLICZNOŚCI: A co, jeśli chcesz to-- jeszcze raz, to jest inna sprawa. Ale moim pierwszym pytaniem było, gdzie tak się dzieje? Gdzie jestem aktualizację tego? Czy to w kodzie PHP? GŁOŚNIK: Gdzie można aktualizować, tak. Mamy zamiar rozmawiać o tym, gdzie wszystko dzieje się jakby po raz idziemy przez wszystkie polecenia. Ale to, co trzeba wiem, na razie jest w zasadzie że bazy danych SQL istnieje jako coś być dostępne dla zapytania Funkcja, która CS50 definiuje. Więc jeśli używasz funkcji zapytania, można uzyskać dostęp do tej tabeli. Więc będzie przesłanie tych Polecenia do stolika w plikach PHP poprzez funkcję zapytania. Możesz też bawić z tabeli bezpośrednio. I to jest najlepszy sposób na przetestować tego rodzaju poleceń. A my przejść dokładnie jak to zrobić w tylko trochę. Więc to polecenie UPDATE. A reszta poleceń będą jakby podobna, działa na podobnych rzeczy. Wkładki do prawdopodobnie najbardziej różni się od aktualizacji. Mam zamiar wyjechać, że się tam tylko trochę i pracy tutaj. Więc INSERT INTO, zobaczysz że stół jest wciąż ten sam. Chcesz wstawić. Kapitalizacja SQL nie uwzględnia wielkości liter. Więc nie musisz się wykorzystać te rzeczy. Zgodnie z konwencją, słowa w bieli są kapitalizowane. Ale też kolorami im. Jedynym powodem, aby wykorzystać tych, kiedy ich wpisywania jest po prostu podkreślić, że są stałymi. I tak można albo spojrzeć na kapitalizacja lub fakt że mam kolorowe je inaczej. Więc mamy INSERT INTO, niech jeszcze raz zrobić tabela1. To wszystko jest w jednej linii. Mówię tylko, oddzielając go od różne wypowiedzi. Więc nie martw się o tym, że tabela1 trafił na drugiej linii. Dlatego chcemy, aby INSERT DO Table1 pewne wartości. A zauważysz opcjonalny nieco, co dostanę w sekundę. Mamy więc wartości. Więc powiedzmy, że chcemy dodać Andi do naszego stolika, ponieważ brakuje nam Andi. Andi jest chory. Warto więc dodać Andi do naszego stolika. Pamiętaj, że numer ID jest aktualizowany automatycznie. Tak niewielu dziedzinach możemy trzeba się martwić o to nazwa, supermocarstwem i rodzinnym. I tak droga, że ​​to zrobimy, patrząc na naszej składni, to mamy Właśnie dostałem nawiasów, z przecinkami Oddzielone wartości, z których każda jest wartością. Więc jeśli chcemy wstawić Andi do naszego stół, wszystko co musisz zrobić, to prawda Andi. Co znajduje się supermocarstwem Andi, ludzie w sekcji Andi? Lubi lot, lub jak prędkość, czy coś. Co mamy już tam? Mamy CS50, lot, szybkość i siłę. PUBLICZNOŚCI: Podróże w czasie. GŁOŚNIK: Podróże w czasie, niesamowite. Więc mamy Andi, czas podróże, a jej rodzinnym mieście. To bardzo dobre pytanie. Nowy Jork, chyba że ktoś wie. Wszyscy z Nowego Jorku jest Lekcja na wynos od dzisiaj. Więc to oświadczenie będzie włóż, jako piątego rzędu, z podróży w czasie supermocarstwa i rodzinnym Nowym Jorku. Ale pole opcjonalne to sposób które kolumny dokładnie określić chcesz wstawić rzeczy. Sposób, w jaki robimy to teraz, Andi, podróże w czasie, Nowy Jork, będzie w takiej kolejności naszego table-- nazwa, supermocarstwo, rodzinnym. A jeśli chcesz zrobić coś innego niż to, jak powiedzieć, że nie wiedział, czyjaś supermocarstwem, jak, jak nie wiedziałem, Andi supermocarstwem na początku. Więc wszystko, co wiedziałem, to jej nazwa i jej rodzinnym mieście. Co mogłem zrobić, to mogłem do-- będę usunąć to szybko. Chcę tylko zaktualizować kolumny. I to jest, gdy opcja Lista kolumn wchodzi w grę. Chcę tylko, aby uaktualnić nazwę i rodzinnym. I wtedy powiem wartości. Zrobię Andi i Nowy Jork. Gdybym pominięte listę kolumn i po prostu zrobić te dwie rzeczy, gdzie Nowy Jork poszły? Która kolumna będzie Nowy Jork Miasto zostało umieszczone w? Osób ma jakiś pomysł? Supermocarstwem, dokładnie. Więc będzie to po prostu pójść w porządku. A kiedy osiągnie koniec czasu lista, to będzie po prostu przestać napełniania rzeczy. I wartości, że będzie to trzymać w wszystkie kolumny będzie tylko NULL. Więc dlatego, że podano nazwa i rodzinnym, będziemy mieć identyfikator 5, wymienić Andi, supermocarstwa NULL. Więc supermocarstwem jest wartością odinicjowany. Nie muszą uzyskać same błędy Valgrind Jeśli spróbujesz i uzyskać do niego dostęp. Wszystko będzie dobrze wyzerowany się, ponieważ NULL jest wartością w SQL. Jest to stała. A potem rodzinnym mieście będzie Nowy Jork. Więc to jest INSERT INTO polecenia. Zanim przejdziemy, nie dwa kolejne polecenia. Czy ludzie mają jakieś pytania dotyczące UPDATE o INSERT INTO, o SQL ogólnie zanim przejdziemy na naszych ostatnich bitów? Ludzie czują się dobrze, świetnie. Kocham to. Więc porozmawiajmy o SELECT. Idąc rów UPDATE tutaj. I wybierz będzie bardzo podobna. Celem SELECT, Celem SELECT w życiu jest, aby dać Ci kilka kolumn że spełniają określone warunki. I kiedy mówię zaspokoić pewne warunki, twój umysł może zaraz wrócić do klauzuli WHERE które pojawiły się w aktualizacji. I że klauzula jest dokładnie tam w SELECT. Jeśli nie umieścić WHERE Klauzula i mówimy SELECT nazwisko, hometown-- napisane, że trochę wrong-- nazwa, rodzinnym Z tabela1. Jeśli tylko powiedzieć, że to, co SELECT ma dać nam to, że to da nam double-- stół, raczej. Podwójna tablica czy jesteśmy myśląc o w PHP wyczuwa. Ale to tylko zamiar dać nam podwójna tablica z dwóch columns-- nazwy, i rodzinnym. I będzie ignorować ID. I będzie ignorować supermocarstwa. A ja po prostu dać nam każdego Pojedynczy wiersz tej tabeli. Więc jeśli tylko włożona Andi, musimy Andi. I będziemy mieć oryginalny cztery. Czy zostały zaktualizowane, że będzie odbicie, et cetera, et cetera. Tak to jest, bo my nie korzystać z klauzuli WHERE. Ale możemy używać go w dokładnie sam sposób wykorzystaliśmy go w aktualizacji. Jeśli chcemy tylko spis nazwisk i super moce ludzi żyjących w Nowym Jorku, możemy wykonać instrukcję jak SELECT nazwisko, superpower-- Idę do opuszczenia that-- Z tabela1 GDZIE rodzinnym = Nowy Jork. Więc to pokazuje, że można uzyskać zupełnie inne kolumny, a następnie umieścić kolumny, że nie jesteś nawet powrót w klauzuli WHERE. My nawet nie chcemy, rodzinnym każdego. Ale chcemy, nazwę i supermocarstwo ludzi których rodzinnym miastem jest Nowy Jork. Więc to jest coś, czego można zrobić z WHERE Klauzula jest może mamy do czynienia z kolumnami że nie zawsze chcą z powrotem. W ten sam sposób w aktualizacji, może mamy do czynienia z kolumnami, które nie koniecznie chcesz zaktualizować. Możemy aktualizować miasto każdego kto na imię Sam, na przykład. Możemy aktualizować miasto każdy, którego ID numer jest 2. Więc po prostu zaktualizować miasto w drugim rzędzie gdzie nie mamy do czynienia z konieczne częste pytanie. I usuwać to, jak to, że spodziewać, DELETE FROM Tabela1. A potem mamy kolejną klauzulę WHERE. Można więc powiedzieć, gdzie id = 1. Usuń pierwszy wiersz. I DELETE zawsze usunąć wiersz, lub usunie trochę liczbę wierszy. DELETE FROM tabela WHERE Miasto = Nowy Jork spowoduje usunięcie wszystkich w Nowym Jorku. To, czy istnieje Nagle tragiczna plaga i po prostu chciałem, aby usunąć każdy z tabeli, która żył w pewnym mieście że został potrącony przez zarazy. Niech odpoczywają w pokoju. Są to cztery SQL polecenia że będziesz musiał użyć. Możesz nawet nie trzeba używać ich wszystkich. Ale to są cztery że CS50 oczekuje was być wygodne z wchodząc zarówno Quiz 1, a także pset7 i pset8. Nie tylko że znów tabeli. W tym jednym, supermocarstwem Roy ma została zaktualizowana do wiązek laserowych, które Jest to przykład nie korzystać. Nie wiem, który z nich Roy woli, ale siła. Roy ma supermocarstwa siły. Katherine nie zrobić to dzisiaj. To niefortunne. Ale ona ma super-szybkość. Dobrze, że był w PHP. Przed mówimy o MVC, robi ktoś ma pytania dotyczące PHP? Teraz SQL, lub PHP, jeśli nagle wystąpienia z pytaniem o PHP? Wielki. W porządku, mamy wszystko ustawione wtedy. Tak rozmawiając trochę o modelu widoku kontrolerów, wróćmy do niektórych z rzeczy w pset7. Więc jaki model view Kontroler jest-- nie jestem uratuje moje zmiany, aby zalogować się bo całkowicie zmasakrowany go. Ale w zasadzie mamy dwa różne rzeczy się dzieje. Mamy do publicznej wiadomości katalog, który zawiera kod, który będzie wykonywany i strony internetowe, które będą odwiedzane. I mamy też ten katalog poglądów. I widoki zawiera szablony. To, co funkcja render-- widzieliśmy tynku Funkcja w kilka kodu PHP że CS50 napisał już dla ciebie, że ma w niektórych parametrów. Co to jest kod robi jest to jedzie do widoków, które to zestawy jak prewritten Kod HTML, i to wstawienie wartości w niektórych miejscach. W ten sposób, gdy przejść do CS50 Finansów, Nagłówek jest taki sam na każdej stronie. Stopka jest taki sam na każdej stronie. To dlatego, że sposób które czynią prace jest to będziesz automatycznie dodaje w tym nagłówku i Widz, który można znaleźć w widokach. My rzeczywiście może przejść do nagłówka, i wygląda, że ​​jest to plik HTML z głową. Jest tam kilka arkuszy stylów. Nie musisz patrzeć na CSS dla pset7 jeśli nie chcesz. Ale można modyfikować je, jeśli chcesz, aby Twoje Finanse wyglądać nieco inaczej. Jest tam niektóre PHP w nagłówek nieco zobaczyć jeśli jest inny tytuł należy umieścić w tym cel. Ale tylko niektóre inne skrypty, oraz linki i inne rzeczy. Szef kończy, organizm zaczyna i ups, mamy to dziwne trochę koniec trochę. I jest div, podobnie jak bezładem rodzaj elementu że ma pomysł na środku. A potem, kiedy widzimy, stopki, mamy koniec div. Mamy dno, które jest gdzie tekst stopka jest. Koniec div, koniec ciała, koniec HTML. Więc to, co czyni to robi się uczynić to rodzaj od łatanie heder, inny plik PHP, który będzie zawierać rzeczywiste rzeczy, które będziesz zobaczyć, jak spisie zapasów jeśli kupujesz lub sprzedaży akcji. A potem dodamy w stopce. I widok modelu Kontroler pomysłem jest to, że chcą oddzielić, jak wszystko wygląda od kodu. To chcemy oddzielić frontend i zaplecza, w którym nakładka jest rzeczy, które widzi użytkownik, ładne visuals-- HTML, CSS, takie rzeczy, obrazy, et cetera. I backend jest w PHP. Jest to kod, który piszesz. To gdzie kod to robi rzeczywiste operacje. To jest, gdy dodajesz stado do stolika, gdy kupujesz i sprzedaży, to backend. I możemy, jak widzieliście, w tym PHP bezpośrednio w HTML. Więc to, co mogliśmy zrobić dla to zadanie jest po prostu miał plik HTML dla każdej strony, jak login. A następnie na tej stronie, po prostu miał ogromny blok kodu PHP, w tym cały kod, który że strona specjalnie musiałby. I wtedy możemy mieć zrobić, że dla portfela. Mogliśmy zrobić wszystko kupna i sprzedaży w ramach poszczególnych stron. Ale ponieważ jesteśmy renderowania oddzielnie skąd piszemy backend Kod, możemy łatwo zmienić, jak sprawy wyglądają bez zmienia się każdego pojedynczego pliku. Robimy takie rzeczy po prostu dodaj nowa div do dołu of-- Witam zmodyfikowany stopkę. Możesz po prostu zrobić takie rzeczy. Ale również, możesz zmienić cały układ wizualny bez wpływu na to, co jest dzieje w backend. I można zmienić Cały zaplecza i nadal mają wyglądać tak jak to miało miejsce wcześniej. To Jest idea modelu widoku kontrolera. I to jest rzeczywiście nałożone paradygmat W niektórych z języków programowania Może chcesz używać dla projektów końcowych. Jeśli zrobisz rozwoju iOS, mają poglądy, co jest, co można zobaczyć na iPhone, i następnie backend tak jak oddzielny rzeczy. Możesz myśleć o tym trochę. Jest wiele plików binarnych w informatyka, który jest zabawny, bo wszystko jest w formacie binarnym. Nie planowałem tego. To gra słów niezamierzona była. Tak, gra słów nie przeznaczonych. Ale jak .h plików i plików .c, nie wiele rzeczy, które oddzielających nas może nie trzeba. Więc może po prostu edytować pliki H lub ktoś może po prostu zobaczyć .h plik i wiedzieć dokładnie te funkcje, które są w plik .c niekoniecznie wiedząc, ich realizacja. Ta idea elementów rozdzielających które są od siebie zależne ale może rodzaj dostępu sobą poprzez różne kanały, przechodzącej zmiennych, po prostu obejmują oświadczenia, rzeczy tak, ta zasada przyczynia się do tworzenia aplikacji które mogą być łatwiej edytowany przez wielu ludzi, można łatwiej zmieniane lub zmian na wielką skalę, i są łatwiejsze debugować na wiele sposobów. Bardzo szybkie, mam kilka porad dla pset7, które zrobię pełnego ekranu, więc nie patrząc na the-- Porada Porada Tippee. Nie ma zbyt wielu wskazówek. Ale wspomniałem PHP jest trudne do debugowania. Podwójne i potrójne sprawdzić. Jeżeli kod nie jest tylko wyświetlane na stronie, to chyba błąd PHP, przepraszam. Nie musisz patrzeć na CSS, jeśli nie chcesz. Ale kiedy skończysz, to może być ładny mały zabawne rzeczy po prostu pójść w i bałagan z parametrów CSS. CSS i HTML są przykładem modelu Widok sterownik styl rzeczy, prawda? Można mieć tagów stylu wewnątrz elementów HTML. Ale jeśli coś w rodzaju zlecanie ich do CSS, są łatwiejsze do edycji i odtwarzania wokół z, i zabawy z. Traktuj CS50 pomocnika funkcjonuje jako czarnych skrzynek. Nie musisz wiedzieć dokładnie, co renderowania robi, ale uwierzcie go zawsze prawo rzecz, w zależności od tego, co je przekazać, takie rzeczy. A ja polecam oglądanie instruktażu Dawida, Przejście wszystkich rzeczy, nie tylko todos, ale naprawdę można traktować te, jak czarne skrzynki. Nie idź do nich Funkcje szuka błędów. I zapraszamy do zwrotu naszego overlord Zamyla. Wielki. Czy są jakieś ostateczne pytania przed my rodzaju odbić na dzień? Ja nadal żyje? Wielki. Hi LiveStream ludzie. Wielki. Czy są już pytania? Nie? I wtedy myślę, że jesteśmy dobry, aby przejść na dzisiaj. Będę trzymać się trochę potem, gdy ludzie mieli pytania bali się zapytać w strumieniu. Ale poza tym, mam dobry dzień.