[Powered by Google Translate] [Problem Walkthrough Set 7] [Zamyla Chan] [Harvard University] [To jest CS50] [CS50.TV] Witam wszystkich i zapraszamy do Walkthrough 7, CS50 Finansów. Teraz oficjalnie zrobić z wszystkich psets w CS50, a my tylko jeden z lewej, który będzie realizacja zabawa strony internetowej, na której użytkownicy mogą zalogować się na CS50 Finansów i kupować i sprzedawać akcje. Dziś będziemy mieć kilka narzędzi do naszej dyspozycji. Będziemy mówić o uprawnieniach. Gdy masz folder WWW, masz zamiar chcesz pozwolić użytkownikom na wykonanie niektórych plików ale także po prostu czytać pozostałych, więc zajmiemy się uprawnieniami i jak można ustawić te. Potem będziemy patrzeć w PHP, HTML, i kod SQL. Po pierwsze, uprawnienia. Kiedy jesteś w panelu w danym katalogu, to co chcesz zrobić, to chcesz uruchomić polecenie chmod. Który jest następnie albo liter lub cyfr odpowiadający co w zasadzie chcesz, aby świat zobaczyć, sam zobaczyć, itp. Na przykład, gdy masz folder, to chcesz tego folderu na wykonywalny przez wszystkich, że to widzi, więc co można zrobić, to można uruchomić polecenia chmod + x a nazwa folderu. Kiedy masz plik np. pliki CSS lub plików graficznych - jak JPEG i bitmapy, takie rzeczy, lub dowolny kod JavaScript - chcesz, być czytelny przez wszystkich, tak, to co możesz zrobić, to można użyć symboli wieloznacznych - które jest gwiazdką - w zasadzie wskazać w folderze CSS - wszystko w tym folderze -  I powiem, że będzie czytelny dla wszystkich. Z uprawnieniami, gdy używamy litery, możemy także używać liczb zamiast. Więc widzisz, że ostatecznie, kiedy chcesz coś na wykonywalny - , który jest reprezentowany przez liczbę 1 - coś być czytelny jest numer 4, a następnie - zapisu jest numer 2 - i tak w istocie, kiedy chcesz kombinacji tych, a następnie je dodać. Jeśli chcesz coś, aby być czytelne, zapisu, a plik wykonywalny, wtedy można dodać maksymalnie 4, 2 i 1, i że daje 7, wtedy, gdy masz folder, który będzie wykonywany przez wszystkich - oraz odczytu i zapisu - wtedy sprawiają, że 7, 1, 1. To byłoby 7 dla Ciebie, to 1 dla innych ludzi. Kiedy masz specyfikację, będzie to rzeczywiście określić, które foldery i pliki, które muszą być specjalnie chmod-ED. Na przykład, kiedy masz foldery - to 7-1-1 - jeśli masz zdjęcia lub HTML, CSS, JavaScript, Następnie te będą 6, 0, 4 - lub 6, 4, 4 - a następnie pliki PHP będą 6, 0, 0. Ideą jest to, że użytkownicy nie powinni rzeczywiście zobaczyć swój kod PHP, ale po prostu być w stanie zobaczyć wyjście. Great! Przeprowadzka do PHP. Po prostu, kiedy chcesz plik PHP, przyrostek pliku jest. Php. Można również mieszać HTML z kodu PHP. Jeśli masz plik HTML, na przykład, następnie można umieścić ją w lewym kącie, znak zapytania, PHP - umieścić swój kod php - a potem blisko, że z innym znakiem zapytania i kątem. Zmienne w PHP są dużo łatwiejsze do zwalczenia niż zmiennych w C Każda zmienna po prostu zaczyna się znak dolara przed nim, a oni słabo wpisane. To oznacza, że ​​nie musisz się martwić o ustawienie czegoś równy ciąg lub liczba całkowita. Można po prostu powiedzieć, że to jest moja nazwa zmiennej i to jest jego wartość, więc to będzie łatwiejsze do czynienia z tam. Inną rzeczą jest to, że PHP pozwala na użycie tablic asocjacyjnych. Można po prostu zdefiniować tablicę jak chcesz w C mówiąc dollar sign-nazwa tablicy, równych, a następnie w nawiasach kwadratowych mają w zasadzie tylko wykaz wartości wszystkich elementów tablicy. Ale, w PHP, co można również zrobić to podać w zasadzie - to jest coś w rodzaju funkcji mieszania. Można określić indeks - co masz zamiar to nazwać - , a następnie, że wartość odpowiada. Jeśli rzeczywiście przekazać w = 1, b = 2, c = 3, wówczas tablicy o indeksie nie daje 1. Ten zbior rozgrzeje Cię z jakimś PHP w sekcji pytań, a potem zanurkować CS50 Finansów. Mamy kilka - mamy pewne funkcje, w zasadzie, wdrożyć na tej stronie. Chcemy, aby użytkownicy mogli zarejestrować się w naszym serwisie, podając nazwę użytkownika i hasło. Chcemy, aby mogli wyszukać ofertę, i wtedy możemy wydrukować nazwę tego cytatem, jak również aktualną cenę, że jest to w. Chcemy, aby mogli zobaczyć portfela wszystkie akcje, że nabyli dotychczas. Chcemy również, aby mogły kupować akcje, jak je sprzedać. I w końcu, chcemy, aby umożliwić im zobaczyć historię od wszystkich transakcji, które zrobili. Następnie, w końcu, po tym, jak wdrożyć to wszystko, wtedy jesteś wolny, aby wdrożyć jedną dodatkową funkcję. Pójdziemy do nich. Te mogą być użytkownicy pozwalające uzyskać dodatkową gotówkę przez złożenie dodatkowej gotówki, lub można pozwolić im zmienić swoje hasło, czy coś takiego, Wysłać im otrzymanie przy zakupie lub sprzedaży akcji. Jest ograniczona lista funkcji, które można realizują samodzielnie, więc to ostatni tam. Ponieważ jest to strona internetowa, wy też dużo swobody, aby dostosować go. Mamy dostarczyć trochę kodu CSS, ale jesteś zdecydowanie swobodnie dostosować go, sprawiają, że wygląda ładniej, ale bazowego jest podstawowa funkcjonalność więc zawsze można znaleźć w specyfikacji o tym, co rzeczywiście trzeba to tam. Po specyfikacji, będziemy się przy użyciu urządzenia, jak również na serwerze. To będzie gospodarzem naszej strony dla nas, na serwerze lokalnym. Jeśli zastosujemy się do tych instrukcji i rozpakuj Pset 7 dystrybucji kodu do wirtualnego hosta / local folderze przyjmującym  Następnie można po prostu odwiedzić http://localhost/ w Google Chrome w urządzenie, i wtedy można dotrzeć do kodu, w którym napisałeś Pset 7. Pset 7 pochodzi z bandą kodu dystrybucyjnego, i miejmy nadzieję, że weszliśmy - przez wszystkie psets przed tym - przyzwyczaiła nas do czytania kodu dystrybucyjnego, zrozumienie, jakie funkcje są już przewidziane, i jak możemy być w stanie wykorzystać te i inne funkcje, które mamy zamiar się realizacji. W tym przypadku, mamy 3 foldery. Mamy HTML folderu zawierającego folder i folder szablonów. Co będziemy robić z tego zbior jest rodzaju oddzielenie myślenia - myślenie programowania - z kodu PHP z rzeczywistym aspekcie wizualnym. Będziemy mieć jeden plik PHP, który nie wszystkie myśli, czyta do bazy danych, wypisuje rzeczy, ma if - rzeczy tak - , a następnie, że będziemy przekazywać dane do naszego pliku szablonu - lub pliku template.php. Co to będzie zrobić, to odczytać danych, a następnie będzie go wydrukować. Możemy traktować jako szablony "głupi" w tym tak naprawdę nie chcę ich się robić dużo pracy przy obliczaniu rzeczy. Chcemy, aby nasi kontrolerzy to zrobić. Trochę na ten temat - rzućmy okiem na niektóre z kodu dystrybucyjnego. Tutaj mamy plik index.html, i to jest całkiem pusty. Zasadniczo to, co robi - mówi, dobrze, będę wymagać pliku configuration.php. Nie widzimy, że właśnie tam, ale to po prostu wywołanie pliku configuration.php, i wykonanie tego. Po to robi, to się oddać portfel. Rendering jest funkcją, więc kiedy jesteśmy w kontrolerze, nazwijmy render, dajemy plik, a następnie dane, które mamy przechodzące w, tak, że będzie ona wezwać portfolio.php--rodzaju przełęczy tych danych tak, że portfolio może sobie z tym poradzić. A teraz, tutaj, mamy login.php formularz.  Jest to kontroler, który w zasadzie zajmuje się zalogowaniu Tutaj, to sprawdza, czy formularz został złożony do tego pliku i zajmuje walidacji zgłoszenia. Przyjrzymy się tej funkcji przeprosić. Gdy chcemy wydrukować komunikat o błędzie, używamy przeprosić i będzie przekierować użytkownika do określonej strony że będzie wydrukować konkretny komunikat o błędzie, że wskazania. Kontynuując, to zapytanie do bazy danych - we'll dostać się więcej o tym później. Wtedy zobaczysz, że tu na dole, jeśli formularz nie został złożony, to renderuje formularza. Oznacza to, że idzie do login_form.php, więc spójrzmy na to. Login.php jest faktycznie gdzie widzimy HTML do czynienia z rzeczywistą aspekt wizualny. Tutaj mamy tag wejściowy dla nazwy użytkownika, wejście na hasło, jak również jako przycisk Prześlij. To właściwie gdzie aspekt wizualny i formularz HTML ma być przechowywane. Tu jest napisane, że to będzie składać pewnej metodzie, zwanej post. Zajmiemy się różnic między metodami - zakładać kontra dostać, jest również coś, co nazywa położyć - zajmiemy się tymi metodami później, ale na interesie tego PSET, Gorąco zachęcamy do korzystania z post. Wiemy, że w zasadzie po to formularz jest składany - od login_form.php-- następnie będzie przejść do działania - login.php-- zasadniczo przechodzą w tych wszystkich parametrów z tych form w login.php. Wyniki tej postaci są zawarte w tym poście asocjacyjnej. Indeksy z różnych elementów w tablicy postu to dokładnie to, co można określić tutaj. Można powiedzieć, że nazwa tego wejścia jest nazwa użytkownika. Nazwa tego jednego jest hasło. Podobnie, zobaczysz nick jako indeks tablicy asocjacyjnej tam. Jeśli idziemy do folderu zawierającego mamy ten plik funkcji, które będzie bardzo przydatne. Wszystkie te funkcje są realizowane dla Ciebie. Nie trzeba się specjalnie realizacji któregokolwiek z tych siebie, ale oni będą bardzo przydatne. Mamy przepraszać, który jak już wcześniej powiedziałem, zasadniczo będzie wydrukować komunikat o błędzie dla Ciebie na konkretnej stronie - apology.php. Następnie mamy wysypisko, więc jeśli wystarczy zadzwonić zrzutu, a następnie przekazać w zmiennej, następnie zaprowadzi Cię do strony, która wyświetli tej zmiennej dla Ciebie. Następnie mamy wylogowania, który w zasadzie kończy pewną sesję użytkownika. Lookup będzie przydatna. Ponieważ mamy do czynienia z cytatów i zapasów, będziemy w stanie - i to jest w zasadzie w czasie rzeczywistym. Musimy wiedzieć, co te wartości akcji są, mamy więc funkcja wyszukiwania, która zajmuje się dokumentacją Yahoo zapasów. Gdy spojrzeć pewien symbol ręki, powróci do was giełdowy jak również nazwy i bieżącą ceną tego stada. To jest funkcja wyszukiwania. To mamy do czynienia z MySQL, więc mamy zamiar być chcąc wykonać pewne zapytania na naszej bazie danych SQL. Mamy zapytanie do czynienia - do rodzaju streszczenie niektóre z tym obecnie. Zamierzamy być przechodzącą w cały ciąg naszego zapytania SQL - i wszystkie zmienne, które go w nim - i co to robi, to faktycznie wykonuje to za nas. Zamiast pisać to wszystko z każdej chwili, którą chcesz zapytać - uzyskując wszystkie wyniki z tego zapytania - to możesz po prostu zadzwonić do zapytania funkcję i będzie to powrót do Ciebie - w zależności od tego, co używasz w zapytaniu - Prawdopodobnie rząd wszystkich wyników, które pasują do zapytania lub podobne. Więcej o tym później jednak. Wreszcie mamy przekierowanie, które, jak sama nazwa wskazuje, przekierowuje do innej strony. A potem mamy render, który zamierzamy być wywołanie kilka razy. Kiedy jesteś w kontrolerze, zadzwoń do renderowania strony szablonu a następnie przekazać w wartości, że szablon będzie zajmować. Wartości te są prawdopodobnie będzie mieć do czynienia z typem produkcji, który chcesz być wyświetlane na stronie szablonu. Okay. Są to funkcje, a tam jest dużo więcej do tego kodu dystrybucyjnego. Zachęcam was, aby przejść przez to i zbadać go samodzielnie. Również specyfikacja prawdopodobnie Cię przez niektórych innych elementów kodu dystrybucyjnego. Oto podsumowanie funkcji znalezionych w functions.php. Okay. Pierwszym zadaniem jest, aby użytkownicy mogli zarejestrować się na stronie internetowej. Teraz, nie ma formularza logowania na stronie internetowej, i to są w kilku użytkowników z hasłami. Możesz używać tych nazw użytkownika i zaloguj się, ale chcesz, aby umożliwić ludziom dokonywania własnych nazw użytkowników i dodaj się na stronie internetowej. Układ do rejestracji jest bardzo podobny do formularza logowania, z wyjątkiem nazwy użytkownika nie jest wcześniejsza, i użytkownik musi również dostarczyć nowe hasło, i zazwyczaj mamy potwierdzenie hasła. Gdy użytkownik wprowadzi wszystkie z tych informacji, chcemy, aby dodać je do naszej bazy danych użytkowników. Będziemy mieć bazy danych - bazy danych SQL - że będziemy odwoływać. W tej bazie będziemy mieć tabelę z wszystkich użytkowników zawierający jego nazwę, swoje hasło, a także ile pieniędzy mają. W rejestrze, chcemy umożliwić im takie informacje. Chcemy wyświetlić tego formularza. Chcemy się upewnić, że ich hasła - że wszedł w jednego, a potem również, że hasła pasujące po wprowadzeniu go dwukrotnie. Po tym wszystkim, że jest wykonywana - przy założeniu, że te błędy są sprawdzone - następnie chcemy dodać tych użytkowników do naszej bazy danych. Wreszcie, po zarejestrowaniu, to dość wygodne, jeśli nie musisz zalogować się ponownie po zarejestrowaniu, więc mamy zamiar zarejestrować je na stronie internetowej, jeśli już zarejestrowany pomyślnie. Pierwszym zadaniem jest, aby wyświetlić formularz, a jest to rzeczywiście będzie - cały ten proces rejestracji zostanie dość ściśle wzorowany po zalogowaniu chyba zamiast login.php możesz mieć register.php. Zamiast login_form.php--co jest szablon - musisz zarejestrować formularz. Będziemy chcieli, aby dodać jeszcze jedno pole - pole Potwierdzenie hasła - zamiast tylko jednej nazwy użytkownika i jednego hasła. Dalej, chcemy sprawdzić, czy hasła pasują lub są puste. Mamy kontroler - register.php--który zamierza zająć się robi te kontrole. Po wysłaniu formularza metodą post, to wszystko z tych zmiennych zawarte są w tablicy POST. Chcesz, aby upewnić się, że wartość array post na hasło indeksu dopasowuje element potwierdzający. Chcesz się upewnić, że nie są puste, i chcesz się upewnić, że są one takie same. Jeden wygodny rzeczą PHP jest to, że nie trzeba używać znaków porównać anymore. Możemy użyć równa-operatora równości  aby sprawdzić, czy ciągi są sobie równe. Obsługi błędów, będziesz chciał przeprosić. Przepraszać, wystarczy wywołać funkcję  a następnie określić rodzaj wiadomości, które chcesz wyjście. Następnie chcesz dodać użytkownika do bazy danych. Do tej pory wszystko robiliśmy to tylko transakcje lokalnie z wynikami formularza. Teraz naprawdę chcemy, aby dodać je do naszej bazy danych. W tym celu, najpierw chcę się upewnić, że nazwa nie jest pusta. Zrozum, że na stronie internetowej, że nie można mieć wielu użytkowników z tej samej nazwy użytkownika, więc będziemy chcieli, aby upewnić się, że po włożeniu coś do bazy danych - wstawić nowego użytkownika - to nie dostaniesz kolizji pomiędzy nazwą użytkownika wcześniej i nazwa użytkownika, który użytkownik próbuje przedstawić. W tym celu, po wykonaniu kwerendy - wstawienie jakiegoś użytkownika z ich hasło i początkowej ilości gotówki - raz zadzwonić, że zapytanie, wtedy mySQL rzeczywiście zwróci false jeśli nie. Struktura użytkowników jest taka, że ​​użytkownika jest unikalną wartością, więc nie może mieć więcej niż jeden. Podczas próby i wstawić nowy wiersz z nazwą użytkownika, które już istnieje, że zamierza powrócić false - jak Boolean wartość false. Tricky rzeczą jest to, że będziemy chcieli sprawdzić, czy wynik jest wynikiem zapytania. Jeśli się nie uda, to będziemy chcieli, aby sprawdzić z triple-równa operatora. To się naprawdę dzieje, aby sprawdzić, czy nie jest porażką, czy nie, mając na uwadze, tylko prosty równa-taniej, to byłoby prawdziwe, jeśli wiersz był pusty. Wynikiem awarii, jeśli nie jest zderzenie nazw użytkowników jest rzeczywista wartość false. Oto jak można wstawić do bazy danych. Oto zapytanie, które będziemy uruchamiać wyłącznie w języku SQL. Jedną rzeczą jest to, że rzeczywiście można przejść do witryny internetowej, który zarządza bazy danych SQL i bawić się tam, wprowadzając ręcznie albo wartości lub wiersze. Będzie wysyłać co SQL wyjście. Można także uruchamiać polecenia SQL w Twojej bazie danych  a następnie sprawdzić, co składnia może być, a następnie przetłumaczyć na zapytania funkcji, które mamy w Pset 7, który będzie bardzo podobny do zapytań, które rzeczywiście działają. Jeśli chciałem wstawić nowy wiersz do mojej tabeli użytkowników, następnie chciałbym określić wkładkę do użytkowników, którym jest nazwa mojego stolika. Następnie chciałbym określić nazwy kolumn. Następnie chciałbym dostarczenia wartości wraz z moim hasłem. Hasła w naszej tabeli użytkowników nie są przechowywane tylko jako ciąg. Są one przechowywane w zaszyfrowanej wersji więc będziemy chcieli, aby uruchomić funkcję krypty na rzeczywistej hasło i to daje właściwy rodzaj pamięci dla tablicy użytkowników. Bieganie to będzie wstawić nowy wiersz do tabeli users. Aby poradzić sobie z kwerendy funkcji przed w C użyliśmy znaku procentu jako symbol zastępczy. Podobnie samo pojęcie zastępczego odnosi się tutaj. Z kwerendy, można określić całe zapytanie, z wyjątkiem, gdy ma się do czynienia ze zmiennymi jako wkład do zapytania, wówczas zamiast faktycznie umieszczenie ich w środku - jak wtedy, gdy mieliśmy printf w C. Chcemy umieścić napis i wtedy zastępczy tam, a następnie po każdym przecinek, określić, które zmienne mieliśmy. Tutaj mamy zamiar użyć znaku ze znakiem zapytania w naszym zastępczym a następnie przejść w każdej zmiennej, odpowiednio, w celu, dla zastępczych - gdzie te zmienne powinny iść. Więc tutaj, pierwszy znak zapytania będzie zastąpiony przez rzeczywistą nazwę użytkownika potem drugi znak zapytania przez hasło. Wreszcie, po zarejestrowaniu ich i dodaje je do bazy danych, następnie chcesz zarejestrować je na stronie internetowej. Mamy coś w rodzaju super-zmiennej globalnej sesji nazywa. Sesja trwa pewien identyfikator, i że id odpowiada użytkownik, który jest aktualnie zalogowany Co będziemy chcieli zrobić, to znaleźć co ich id użytkownika jest a następnie ustawić ten identyfikator sesji jako tego konkretnego użytkownika id. Funkcja, która będziemy chcieli używać jest polecenia SQL że będzie odzyskać ostatnio wstawiony numer id z tabeli. Następnie wiersze będą dzwonić - it'll wywołać id - it'll przypisać nazwę do numeru, który wraca. To będzie wywoływać ten identyfikator. Teraz skończyliśmy rejestracji i możemy przejść do zacytowania. Cytat pozwala użytkownikowi na wejście nazwę pewnej ręki, i wtedy zwróci cechy tego stada. Co będziesz chciał zrobić o to masz kontroler i kilka szablonów. W tym przypadku będziemy mieć kontroler, który ma zamiar zrobić wszystko, z myślenia za nas. To będzie patrzeć na symbol, a następnie przekazać w wartości do szablonów, które zostaną wydrukowane. Będziemy mieć 2 szablony tutaj. Będziemy mieć 1 szablon udostępnia formularz, w którym użytkownicy mają zamiar Wejście nazwa magazynie - nazwa akcji. Wtedy jesteśmy również będzie chciał kolejny szablon, który wyświetla te wartości. Możesz zajrzeć do logowania na przykład, jak można mieć formę, która akceptuje dane wejściowe, wyjątkiem tutaj, chcemy tylko 1 pole. Nie chcemy, nazwę użytkownika i pole hasła. Chcemy tylko 1 tekst pole, które pozwala użytkownikowi na wejście nazwę pewnej ręki. Potem chcesz wysłać te dane - gdy tylko spojrzał to stado - do quote_form.php. Lookup powróci symbol zapasów, nazwę i cenę. Te, które są zawarte w tablicy asocjacyjnej. Spójrz w górę funkcję odnośnika wewnątrz functions.php więcej informacji w sprawie rodzajów powrotów tych. Great! Więc w końcu, będziemy chcieli, aby wyświetlić informacje o akcji. Będziemy chcieli, aby wyświetlić prawdopodobnie - you'll chcesz uzyskać dostęp do tych zmiennych. Gdy już masz cenę w zmiennej - jak również nazwy i symbol - Następnie będziemy chcieli, aby wyświetlić te na swojej stronie szablonu. Że szablon strony można nazwać show_quote.php czy coś. Twoja strona quote.php czyniłoby cytat pokazu, a następnie przekazać do wszystkich tych wartości. Następnie w stronę PHP, to faktycznie można wydrukować te wartości do HTML aspekcie stronie. Wystarczy skorzystać z funkcji drukowania i przekazać w cenie. Istnieją 2 sposoby - możesz łączyć ją z operatorem punktową, lub użyć zastępczy. Użytkownikom ostatecznie będą kupna i sprzedaży akcji. Chcemy umożliwić im trochę sposób patrzenia na wszystkich zasobów, które obecnie mają. Będziemy dzwonić że ich portfolio. Portfolio będzie, prawdopodobnie dla każdego użytkownika, zawiera kilka rzędów wymieniając rodzaj akcji, że mają i to jak wielu z tych, co mają. Nasza istniejąca tabela - teraz mamy tabeli użytkowników w bazie danych. , Który zawiera nazwy użytkownika, jak również ich hasło i ile pieniędzy mają. Nie ma prawdziwego sposób przechowywania wszystkich swoich zasobów w ramach tego. To nie tak, możemy wstawić nowe kolumny dla każdego magazynu. To byłoby bardzo, bardzo długi wiersz, ponieważ mamy nieskończoną ilość rodzajów zapasów, które mogą mieć. Tak więc, zamiast tego, co będziemy robić to w tej samej bazie danych, będziemy mieć tabeli użytkowników, ale będziemy również mieć tabeli portfelem. Stół portfolio będzie zdecydowanie związana z tabeli użytkowników, lecz struktura tabeli portfolio będą mieć informacje o akcjach, ile akcji z tego zasobu, użytkownik ma jak również użytkownika szczególności numer id. Masz tabeli użytkowników, który ma identyfikator, a także nazwę użytkownika, Hash - co jest hasło zaszyfrowane hasło - i ilość środków pieniężnych mają. Numer id byłby połączony z numerem id z portfela. Portfolio po prostu mają symbol ręki, jak również akcji - liczba akcji tego stada, które użytkownik posiada. W tej tabeli portfela trzeba będzie zasadniczo wszystkich akcji posiadanych przez wszystkich użytkowników w Twojej witrynie. Później, do określenia tylko niektórych użytkowników w akcji - tylko ich portfolio - chcesz pobrać wartości z Twojego portfela tabeli takie, że numer id jest specyficzne dla danego użytkownika. Podczas wyświetlania portfela, warto zgłosić każdy z zasobów w portfelu użytkownika. Będziemy chcieli, aby o liczbie akcji i bieżącej wartości tych akcji. Że obecna wartość tych akcji nie jest przechowywany w tabeli portfelem bo to będzie aktualizacji - co najmniej - codziennie przez Yahoo. Aby uzyskać te informacje, nie można odwołać, że z zapytania SQL. Jaką funkcję udostępnia nam do tego? Jaką funkcję będzie uzyskać cenę? To wyszukiwanie, więc korzystanie z odnośnika na konkretnym symbolu da ci wiele informacji. To da ci 3 części informacji - nazwę, symbol, a także cena. Po lookup pewien symbol, a następnie można uzyskać cenę, a następnie można wykorzystywać ceny mają być wyświetlane w Twoim portfelu. Portfolio należy również wyświetlić użytkownikowi bieżące saldo gotówki. To pole jest przechowywany w tabeli users. Więc pamiętając jak jesteśmy w zasadzie konieczności - jemy różne rodzaje plików PHP. Będziemy mieć kontrolera, które w zasadzie nie wszystkie myślenie dla ciebie. A potem mamy szablon, w którym zajmuje się szablon danych transmitują. Musisz myśleć o tym, co zmienne, kontroler będzie musiał wziąć w. Jeśli mamy do czynienia z portfela, które wyprowadza każdą nazwę, symbol i numer akcji, jak również aktualna cena akcji, Następnie będziemy chcieli, aby znaleźć sposób na zasadzie przekazując - można przekazać w postaci tablicy wartości, które odpowiadają tym. Chodźmy do przykładu jak można pobrać wszystkie akcje własnością określonego użytkownika. To nie ma do czynienia - jeszcze - z ceną akcji. Co by to zrobić, to uruchomić kwerendę. Byłoby uzyskać symbol, jak również akcje od - Dzwonię z tej tabeli, ale w tym przypadku to, co by to było? Co znajduje się nazwa tabeli, że mamy do czynienia z, który ma symbol i akcji dla konkretnego użytkownika? To użytkownicy lub portfolio. Portfolio. Co by to zrobić, jest zapytanie portfolio dla symboli i akcji dla konkretnego użytkownika. Tutaj, mówię, (symbol SELECT, akcje ZE TBL - ale zamiast z tabeli, masz zamiar wymienić, że w portfelu. "Gdzie jest w zasadzie mój stan. Mówię, tylko chcę, aby te tablice asocjacyjne, które odpowiadają  do tego następujący warunek - id równa.  Następnie Kładę zastępczy tam i id sesji. Co by to zrobić, to znaczy dla każdego wiersza w rzędach. Jest to świetny sposób, zamiast faktycznie konieczności ustanawiania dla pętli że iteruje wszystkie indeksy, a następnie w PHP można mieć for-each pętli. Jeśli masz danej tablicy, wówczas można powiedzieć, mam zamiar zadzwonić każdy kolejny element - Mam zamiar zadzwonić każdy element to nazwa. Tak więc, dla każdego z tych elementów, będę ich nazywać tym, to mogę to zrobić. W tym dla siebie, masz wiersze jak aktualnej tablicy, a każdy wiersz, który zamierzasz wywołać wiersz. Za każdym razem wykonuje ciało, to pójdzie w górę i będzie aktualizować wiersza do następnego elementu w rzędach. Teraz, jeśli chodzi o kupowanie akcji, co chcemy zrobić, to stada, które użytkownik chce kupić i ilość akcji, które użytkownik chce kupić, a następnie - jeśli chcą - dodać, że czas do ich portfela. Oczywiście, jeśli kupujesz coś, to się dzieje, aby zmniejszyć ilość pieniędzy, że mają tak, że zamierza zmniejszyć ich gotówki. Będziemy mieć do czynienia z aktualizacji portfela, jak również tabeli użytkowników, który zawiera gotówkę. Ale najpierw trzeba uzyskać rzeczywisty czas i ilość akcji, które użytkownik chce. Do tego, trzeba formularz HTML, który poprosi o symbolu ręki które chcesz kupić, a także liczbę akcji. Następnie będziemy chcieli dodać. Będziemy chcieli, aby wybrać określone wartości. Przeszliśmy przez to nieco mało już, ale gdy próbujesz uzyskać niektóre wiersze - odzyskać niektóre wiersze z tabeli SQL, jest następująca składnia. Masz wybrać, a następnie, jeśli określisz gwiazdę, że będzie w zasadzie zwrotu całości, cały wiersz dla Ciebie. Potem znowu, masz stan, w którym, a następnie określenia - Chcę tylko nazwa użytkownika równa mail-in, więc będzie pobierać tylko wiersz w użytkownikach odpowiadający mail-in. Gdy użytkownik chce dodać akcje do portfela, trzeba sprawdzić na kilka błędów. Chcesz się upewnić, że użytkownik może sobie pozwolić na akcje, więc będziemy chcieli, aby sprawdzić ich gotówki. Przed użyliśmy gwiazdę odzyskać cały wiersz z tabeli SQL. Ale tutaj rzeczywiście możemy tylko określić, że chcę tylko 1 wartość - Chcę tylko gotówkę. Więc, to zwróci pieniądze dla użytkownika o numerze ID 1. Jeśli użytkownik już kupił jakiegoś czas, ale potem kupuje więcej z tego stada, Następnie w swoim portfolio - nie chcesz osobnej linii, inny wiersz, który zawiera tę nową transakcję. Rzeczywiście chcesz zaktualizować kwoty. Wszystko to się zmienia naprawdę to ilość akcji, że użytkownik jest właścicielem. Jeśli używasz wkładki do zapytania - tak to po prostu wstawić do portfela wszystkich tych wartości - użytkownika numer id oraz symbol ręki, że kupujesz i akcji, to będziesz także chcesz określić, dobrze, jeśli napotkasz duplikatu klucza - w tym przypadku, duplikat klucz jest nie tylko identyfikator użytkownika, ale także symbol magazynie - bo można mieć tylko - nasze założenie jest, że można mieć tylko 1 wiersz  1, który odpowiada określonej symbolem. Tak więc, na duplikacie klucza - jeśli napotkasz kolizji tam - jesteś po prostu zamiar zaktualizować akcji do nowej wartości. Udziałów wynosi co mieliśmy przed oraz liczby akcji, że użytkownik kupuje. Teraz, gdy już aktualizacja tabeli portfelem będziemy chcieli zaktualizować użytkownika gotówki. To jest w tabeli użytkowników, więc mamy zamiar być odjęcie pewnej kwoty od środków pieniężnych. Przypuszczalnie będzie pieniężne równa minus gotówka - a następnie pewna ilość. Aby zaktualizować gotówki, byś - gdybym chciał zabrać pieniądze z mail-in, to chciałbym uruchomić tę kwerendę - "Użytkownicy aktualizacja", a następnie ustawić kolumny gotówki do gotówki - Chciałbym usunąć 9.999 dolarów tylko wtedy, gdy nazwa użytkownika jest równa mail-in. Ale w tym przypadku, że nie chcemy, aby odjąć 9.999 specjalnie. Chcemy określić, cóż, chcemy odjąć bieżącą cenę akcji pomnożonej przez liczbę akcji, że kupujesz. Teraz mamy pozwolił im zobaczyć wszystkich zasobów, które mają, jak kupić więcej akcji. Mamy również wcześniej pozwolił im zajrzeć do bieżącej ceny w stadzie. Tutaj chcemy pozwolić im je sprzedać. Najpierw chcemy wyświetlić w zasadzie - chcemy pozwolić im zobaczyć wszystkie akcje, które mają, więc chcemy wyświetlić wszystkie wiersze z portfela. Jeśli zdecydują się sprzedać pewną akcje, wtedy będziemy zakładać, że chcą sprzedać wszystko. Nie są one po prostu się sprzedać 50% swoich akcji, że będziemy sprzedawać w 100% to. Możemy po prostu usunąć cały wiersz z portfela. Możemy usunąć dany użytkownik w akcji pewnego symbolu. Jest składnia do tego. Następnie chcemy zaktualizować gotówki. Mamy zamiar być dodanie w gotówce w wysokości równej liczbie akcji, które sprzedajesz pomnożona przez bieżącą cenę akcji - nie cena, za którą kupił ją, ale cena, po której są one - cena prądu, gdy są one sprzedaży. Aby odwołać się do bieżącej ceny w stadzie, można użyć odnośnika, który da Ci cena akcji w chwili obecnej. Teraz pozostaje nam z historii, które chcesz zezwolić użytkownikowi na śledzenie wszystkich swoich transakcji - chce zobaczyć, gdy sprzedali coś, gdy kupili akcje. Chcemy, aby określić czas, w którym to zrobili, jak również ile kupili i co stanie było. Czy mamy jakikolwiek prąd, istniejącą strukturę, która określa, że? Cóż, mamy portfel, który wyświetla zapasy numer, który użytkownik musi dla danej akcji. Ale jesteśmy struktury portfela w sposób, że powiadomienia, kiedy możemy kupić wiele, natomiast historia powinna - jeśli kupisz jabłko, 10 akcji, a następnie później sprzedania 5, następnie, co chcesz zobaczyć te oddzielnie jako odrębne działania, wiersze oddzielne. Mając na uwadze, że działania mające na celu uzmysłowić, że w naszej tabeli portfelem będzie tylko aktualizacja do danego rzędu  więc pewnie będzie chciał innej tabeli. W naszej bazie danych mamy tabelę użytkowników, mamy tabelę portfelem i teraz będziemy prawdopodobnie ma tabeli historii. Tabela ta historia może śledzić bieżącej daty, jak również szczególny symbol obrazów, jak również ile akcji, a jakie działania jest - czy kupowały te akcje czy byłeś ich sprzedaży. Do czynienia z informacjami, istnieje kilka sposobów, że można to zrobić. PHP ma sposób na śledzenie daty, które można sprawdzić samodzielnie. W SQL można również korzystać teraz albo znacznik czasu. To zależy od Ciebie. Wystarczy upewnić się, że za każdym razem użytkownik kupuje lub sprzedaje, będziesz uaktualniania ich pieniądze w tabeli użytkowników, będziesz aktualizacji wierszy w tabeli, portfeli, będziesz również aktualizowanie historii, więc nie będą 3 oddzielne zapytania SQL, że będziesz nazywając tam. Mamy kilka funkcjonalności teraz. Wystarczy kilka przypomnień, że w pliku indeksu, będziesz chciał połączyć przynajmniej twoje - ale ty chcesz pozwolić użytkownikowi na link do buy.php stronie. To się dzieje, aby umożliwić użytkownikowi - buy.php jest kontroler, więc to będzie albo posyłam cię do - że zamierza wysłać do formularza, który pozwala spojrzeć rzeczy. Mamy historię. Mamy wylogowanie, coraz ofertę, a następnie sprzedaży. To są na minimum, co chcesz pokazać. W zakresie portfela, portfel jest rzeczywiście pokazany na stronie indeksu. Jeśli idziemy do indeksu, tutaj widzimy, że to czyni portfolio.php i przechodzi w tablicy asocjacyjnej - zasadniczo tytułem jest portfel. Tak więc, jest to sterownik. Jeśli idziemy do szablonu portfolio.php, to wszystko ma to - w zasadzie wyświetla obraz, który mówi, och, ta strona jest w budowie. Później, gdy przejdziesz się - you'll być przekazując informacje w zasadzie bardziej szczegółowym. A nie tylko tytuł, prawdopodobnie będziesz przekazując więcej rzeczy. Gdy już masz te wartości, a następnie portfolio.php może zajmować się tymi wartościami i drukowanie ich w jakiejkolwiek kolejności. Po realizacji wszystkich tych, trzeba także wdrożyć 1 więcej funkcji. Może to być albo umożliwiając użytkownikowi zmianę hasła, aby zresetować swoje hasło gdy go zapomnisz - tak do resetowania hasła, następnie prawdopodobnie będziesz także chcesz edytować rejestr tak, że pozwala im na określenie e-mail, więc jeśli zapomnisz swojego hasła, a następnie mogą odebrać. Mogą prawdopodobnie wejdzie w ich nazwy użytkownika, a następnie e-mail zostanie wysłane do nich z linkiem, aby móc zresetować swoje hasło. Możesz mieć coś, co pozwala użytkownikom na wpływy każdym razem, gdy coś kupić lub sprzedać, i wreszcie, pozwolić im dodawać środki na swoje stronie internetowej. Wystarczy wrócić do koncepcji kontrolerów i szablonów trochę. Będziesz miał coś takiego - więc masz kontroler tutaj. Właśnie teraz, szukamy w login.php przykład. Kiedy mamy kontroler, w zasadzie to zajmie 2 przypadki. Kiedy mamy kontrolerów, jesteśmy w tym kawałku, że jesteśmy również do czynienia z rodzajem kiedy mamy formy, jak również. Kontroler będzie w zasadzie mają oddzielne działania - jeden, jeśli formularz został już złożony, a następnie dwa, jeśli użytkownik zbliża się do tej strony po raz pierwszy, a nadal wymaga wejścia tej formie. Będę skakać do tej sprawy zanim będzie do pierwszego przypadku mającej postać w. Tutaj możemy powiedzieć, czy formularz został złożony z urzędu metody - Nie przejmuj się, że trochę. Nie przejmuj się, że za dużo, ale rozumiem, że w zasadzie ta funkcja dotyczy czy formularz został złożony, czy nie. Ten warunek jest spełniony, jeśli użytkownik złożył formularz. Jeśli nie, to będziemy chcieli zadzwonić login_form.php renderowania, a następnie przekazać w tytule. Ten tytuł jest po prostu w zasadzie będzie się pojawiać w nagłówku. Co to znaczy w zasadzie mówi, w porządku - dobrze, jeżeli użytkownik przejdzie do login.php i faktycznie nie zalogujesz, to chcę, aby wysłać je do strony, która ma tę formę co pozwala im, aby wprowadzić nazwę użytkownika i hasło. Potem idę do login_form, a następnie, że ma faktyczną formę. Następnie, gdy użytkownik twierdzi, że formularz, idą do przedstawienia go do login.php z metody POST. Wtedy jestem naprawdę zamiar wprowadzić tę część mojej pętli if-else. Wtedy to jest tutaj, że mamy do czynienia z wartości wprowadzonych w formularzu. To tutaj, że mamy do czynienia z tymi. Następnie raz masz do czynienia z tych wartości - jeżeli masz do czynienia z - powiedzieć, że mamy do czynienia ze stroną quote.php gdzie ktoś może wejść do akcji, które chcą patrzeć, a potem zobaczyć, że wyświetlacz - że trochę podobny tutaj. Tutaj mamy formularz logowania - you'd prawdopodobnie formę cytuję - , ale następnie, gdy użytkownik rzeczywistości złożony, że informacje, a następnie będziemy chcieli przekazać kontroler do innego szablonu który pokaże im, że aktualne informacje. Więc tuż tutaj, a następnie będziesz prawdopodobnie - wokół końca swojej choroby tu - jeśli metoda równa post - wtedy prawdopodobnie będziesz chciał uczynić kolejną stronę - cytuję show - która wysyła cię do tej strony - show_quote.php-- a następnie w tym pliku będzie odwoływać tych wartości. Czy to ma sens? Mamy kontroler, który w zasadzie zajmuje się 2 przypadkach - czy wpisałeś formularz w lub nie. Jeśli nie wprowadzono formularz, to będzie przekierowanie do tej postaci, które następnie można umieścić z powrotem do tej strony. Potem, gdy już informacje w sterowniku, że ciało będzie sobie z tym poradzić niezbędnych informacji - albo patrząc w górę wartości zapasów, , a następnie po jego wzrok tych wartości i ma je w tablicy ładnie sformatowany, następnie może przekazać tę tablicę do strony szablonu  , która zajmuje się wyprowadzanie tę informację. Ponownie, ponieważ jego sieci, to będzie zabawa. Jesteśmy poza C, więc nie jesteś ograniczony do ASCII i że wyjście terminala tak bawić z tym. Można zrobić to tak wizualny, jak chcesz. Można zezwolić użytkownikom na miliony dolarów wejściowych naraz, lub ograniczyć ich i być naprawdę oznacza i pozwoli je tylko wprowadzić 1 grosza na raz lub coś w tym stylu. Zdecydowanie należy bawić się z tym. Kod PHP jest nieco prostsza, że ​​jest to nieco łatwiejsze do mapy swoje Pseudokod do faktycznego wdrożenia. Tak, na pewno dobrze bawić się z tym, bo to jest rzeczywiście nasz ostatni kawałek w CS50. Z tym, to był Walkthrough 7. Po zakończeniu oglądania solucję i zakończeniu PSET, następnie te były również psets, a teraz jesteśmy na końcowego produktu - po otrzymaniu przez quizu 1. Potem mam nadzieję, że można korzystać z narzędzi, które zostały wyciągnięte z psets - nie tylko składnia, ale bardziej abstrakcyjne pojęcia, jak zabrać pewne - lubię, chcę, aby to zrobić, a następnie faktycznie wykonywania tego. Dowiedz się, jak walczyć z składni i kod dystrybucji. Czytanie kodu innych ludzi, a następnie interpretacji, że przy użyciu wcześniej istniejących funkcji. Więc, powodzenia z ostatnim PSET. To była przyjemność prowadzić instruktaże. Mam nadzieję, że było przydatne dla Ciebie. Były solucje i dziękuje bardzo. [CS50.TV]