[Powered by Google Translate] [Návod Problém Set 7] [Zamyla Chan] [Harvard University] [To je CS50] [CS50.TV] Ahoj všichni, vítejte na Walkthrough 7, CS50 financí. Nyní jsme oficiálně udělali se všemi psets v CS50, a my jsme jen zbývá jeden, který bude zábavný provádění internetové stránky, kde mohou uživatelé přihlásí do CS50 Finance a kupovat a prodávat akcie. Dnes budeme mít několik nástrojů máme k dispozici. Budeme mluvit o oprávnění. Kdykoli máte webové složky, budete chtít umožnit uživatelům spouštět některé soubory ale také jen číst ty ostatní, takže se podíváme do oprávnění a jak můžete nastavit ty. Pak budeme dívat do PHP, HTML a SQL kód. První, oprávnění. Když jste v terminálu v určitém adresáři, pak to, co chcete udělat, je chcete spustit příkaz chmod. To je poté buď písmena nebo číslice odpovídající tomu, co v podstatě chtějí, aby se svět vidět, můžete sami vidět, atd. Například, pokud máte složku, pak chcete, aby složka být spustitelný všichni, že vidí to, tak co byste udělat, je můžete spustit příkazu chmod + x a pak název složky. Máte-li soubor jako soubory CSS nebo obrazové soubory - jako JPEG a bitmap, podobné věci, nebo jakýkoliv kód JavaScript - chcete, aby být čitelný všichni, takže pak to, co děláte, je můžete použít zástupný znak - který je hvězdička - v podstatě uvést ve složce CSS - vše v této složce -  Já řeknu, že to bude čitelný každý. S oprávněním, když budeme používat písmena, můžeme také použít čísla místo. Tak vidíte, že nakonec, když chcete něco být spustitelný - , který je reprezentován číslem 1 - něco ke čtení, je číslo 4, a potom - writable je číslo 2 - a tak v podstatě, pokud chcete kombinaci těch, potom přidat. Pokud chcete něco být čitelný, zapisovat a spustitelný, pak byste přidat až 4, 2, a 1, a že by vám 7, pak vždy, když máte složku, kterou chcete, aby se spustitelný všichni - stejně jako čtení a zápis - pak dělat, že 7, 1, 1. To by měla být 7 pro vás, pak 1 pro ostatní lidi. Máte-li ve specifikaci, bude to vlastně určit, které složky a soubory, které musí být chmod-ed konkrétně. Například, pokud máte složky - to jsou 7-1-1 - pokud máte obrázky, nebo HTML, CSS, JavaScript, pak ty, se bude 6, 0, 4 - nebo 6, 4, 4 - a pak PHP soubory se bude 6, 0, 0. Myšlenka, že je to, že uživatelé by neměli vlastně vidět váš PHP kód, ale jen moci vidět výstup. Výborně! Přesun do PHP. Stačí, když budete chtít soubor PHP, soubor přípona. Php. Můžete také smíchat s HTML kódem PHP. Pokud máte soubor HTML, například, pak můžete přiložit ji s levým úhlem, otazník, php - dát svůj PHP kód - a pak zavřete, že s jinou otazníkem a pravý úhel. Proměnné v PHP je mnohem jednodušší řešení než proměnných C. Jakákoli proměnná právě začíná znakem dolaru před ním, a oni slabě zadali. To znamená, že nemusíte starat o nastavení něco rovná řetězec nebo celé číslo. Můžete jednoduše říct, že toto je moje jméno proměnné a pak je to jeho hodnota, takže to bude jednodušší zabývat se tam. Další věc je, že PHP umožňuje používat asociativní pole. Můžete jednoduše definovat pole jako byste v C tím, znak dolaru, název vašeho pole-rovná, a pak v hranatých závorkách mají v podstatě jen seznam hodnot všech prvků v poli. Ale v PHP, co můžete udělat, je zadat také v podstatě - je to něco jako funkce hash. Můžete zadat index - co budete říkat - a pak se, že odpovídá hodnotě. Pokud jste skutečně předat v = 1, b = 2, c = 3, pak se vaše pole na indexu by vám 1. To Pset se zahřeje tě s nějakým PHP v sekci otázek, a pak jsme se ponořit do CS50 financí. Máme pár - máme nějakou funkcionalitu, v podstatě, provádět na těchto webových stránkách. Chceme, aby uživatelé zaregistrovat na našich stránkách pomocí uživatelského jména a hesla. Chceme, aby mohli vyhledat cenovou nabídku, a pak bychom vytisknout název tohoto citátu, stejně jako aktuální cenu, že je to na. Chceme, aby mohli vidět portfolio všech akcií, které si koupili tak daleko. Chceme také, aby mohli nakupovat akcie, stejně jako prodat. A pak konečně, chceme jim umožní vidět historii všech transakcí, které jste provedli. Potom, nakonec, poté, co realizován všechno, pak máte možnost realizovat jeden navíc funkci. Půjdeme do těch. Ty mohou být buď umožňuje uživatelům získat peníze navíc tím, že uloží peníze navíc, nebo můžete jim umožní změnit své heslo, nebo něco takového, email jim potvrzení, když koupit nebo prodat akcie. Tam je omezený seznam funkcí, které byste mohli realizovat sami, tak to je poslední tam. Protože se jedná o internetové stránky, vy také spoustu volného přizpůsobit ji. Děláme poskytují nějaký kód CSS, ale vy jste určitě možnost vyladit, aby to vypadalo lépe, ale základní je základní funkce tak se vždy vztahují k spec o tom, co budete skutečně potřebovat zahrnout tam. Po spec, budeme používat přístroj jako i server. Je to bude hostit naše webové stránky pro nás, na jeho lokálním serveru. Pokud budete postupovat podle těchto pokynů, a rozbalte PSet 7 distribuční kód do svého virtuálního hostitele / local hostitelské složky,  pak stačí navštívit http://localhost/ v Google Chrome ve spotřebiči, a pak byste dosáhnout kód, ve kterém jste písemného PSet 7. Pset 7 přichází s partou distribuční kódu, a doufejme, že neplánujeme zde - přes všechny psets před tímto - zvyklí nás čtení prostřednictvím distribuční kódu, pochopení toho, co funkce jsou již k dispozici, a jak bychom mohli být schopni používat ty a další funkce, které budeme k realizaci. V tomto případě, máme 3 složky. Máme složku HTML, obsahuje složku, a šablony složku. Co budeme dělat s touto PSet je druh oddělení myšlení - programování myšlení - z PHP kódu s aktuální vizuální aspekt. Budeme mít jeden PHP soubor, který provede veškeré myšlení, čte do databáze, vytiskne věci, má-li závěrka - podobné věci - a pak, že si předávat data do našeho souboru šablony - nebo template.php soubor. Co to bude dělat, je číst data a pak to bude jej vytisknout. Můžeme léčit šablony jako "hloupé", že jsme opravdu nechci jim se, že dělá hodně práce při výpočtu věci. Chceme, aby naši správci udělat. Trochu na to - pojďme se podívat na některé z distribuční kódu. Zde máme soubor index.html, a je to docela prázdný. V podstatě to, co dělá - to říká, dobře, budu požadovat configuration.php soubor. Nechceme vidět, že tam, ale je to v podstatě voláním configuration.php soubor, a provádění, které. Poté, co dělá, že to bude k tomu, aby se portfolio. Rendering je funkce, takže když jsme v regulátoru, zavoláme render, dáme mu na soubor a potom data, která jsme projíždějící v, tak, že zavolám do portfolio.php--druhu pasu v tom, že dat, takže portfolio může se s tím vypořádat. A teď, tady, máme login.php formulář.  Toto je ovladač, který v podstatě se stará o přihlášení Tady, kontroluje, zda formulář byl předložen k tomuto souboru a zabývá se ověřování podání. My se podíváme do tohoto omluvit funkci. Když chceme, vytiskne se chybová zpráva, používáme omlouváme a že bude přesměrovat uživatele na určitou stránku že bude tisknout konkrétní chybovou zprávu, že jsme naznačovaly. Pokračování na, bude vyhledávat v databázi - Dáme si do více později. Pak zjistíte, že se zde objeví formulář nebyl předložen, pak to činí formulář. To znamená, že jde do login_form.php, tak se pojďme podívat na to. Login.php je vlastně, kde vidíme HTML, které se zabývají skutečnou vizuální aspekt. Zde máme vstupní tag pro uživatelské jméno, vstup pro zadání hesla, stejně jako tlačítko Odeslat. To je vlastně, kde vizuální stránka a formulář HTML se bude konat. Tady, to říká, že to bude nám určitý způsob, volal po. Dostaneme se do rozdílů mezi metodami - přidat proti dostanete, je tu také něco, co nazývá řečeno - dostaneme do těchto metod později, ale v zájmu tohoto PSet, Byl bych velmi doporučujeme použít místo. Víme, že v podstatě jakmile tato forma je předložen - od login_form.php-- pak to bude jít do akce - login.php-- v podstatě předat ve všech těchto parametrech z těchto forem do login.php. Výsledky z této formě jsou obsaženy v tento příspěvek asociativního pole. Indexy různých prvků v po poli jsou přesně to, co zde zadáte. Říkáte, že jméno tohoto vstupu je jméno. Název tohoto jednoho je heslo. Podobně vidíte uživatelské jméno jako index asociativního pole tam. Pokud půjdeme do složky obsahuje, máme tuto funkce souboru, který se chystá být velmi užitečné. Všechny tyto funkce jsou realizovány pro vás. Nemusíte konkrétně plnit některou z těchto sami, ale oni budou velmi užitečné. Jsme Omlouváme se, který, jak jsem již řekl, bude v podstatě vytisknout chybovou zprávu pro vás na určitou stránku - apology.php. Pak máme skládku, takže pokud stačí zavolat dump a pak předat v proměnné, pak se dostanete na stránku, která bude zobrazovat tuto proměnnou pro vás. Pak jsme se odhlásit, která bude v podstatě konec jistého relace uživatele. Vyhledávání bude užitečná. Vzhledem k tomu, máme co do činění s citacemi a zásob, budeme mít možnost - a je to v podstatě v reálném čase. Musíme vědět, co ty fotky jsou hodnoty, takže máme vyhledávací funkci, která se zabývá dokumentací Yahoo zásob. Jakmile se podíváte nahoru určitý symbol populace, vrátí se k vám legální symbol , jakož i jména a aktuální cenou této populace. To je vyhledávání funkce. Pak máme co do činění s mySQL, takže budeme se chtít provést některé dotazy na naší databázi SQL. Máme dotaz na řešení - na druhu abstraktní některé z těchto ven. Budeme se procházet v celém řetězci našeho SQL dotazu - a všechny proměnné, které jdou v něm - a co to dělá, je skutečně provést, že pro nás. Místo toho, psát to vše se pokaždé, které chcete dotaz - tím, že se všechny výsledky z tohoto dotazu - pak stačí zavolat dotazu funkci, a to vrátím k vám - v závislosti na tom, co používáte pro Váš dotaz - Pravděpodobně řada všechny výsledky, které odpovídají dotazu nebo podobný. Více o tom později ačkoli. Konečně máme přesměrování, které, jak název napovídá, vás přesměruje na jinou stránku. A pak máme render, který jsme bude volat několikrát. Když jste v regulátoru, volat vykreslit do šablony stránky a pak předat v hodnotách, které šablona pak zabývají. Tyto hodnoty jsou pravděpodobně bude řešení typu výstupu, který chcete se ukáže na stránku šablony. Dobře. To jsou funkce, a tam je mnohem více tohoto distribučního kódu. Vybízím vás, abyste projít a prozkoumat sami. Také se spec pravděpodobně vás provede některými dalšími prvky distribuční kódu. Zde je souhrn funkcí nalezených v functions.php. Dobře. Prvním úkolem je umožnit uživatelům se zaregistrovat na webových stránkách. Právě teď, je přihlašovací formulář na webových stránkách, a jsou vám k dispozici několik uživatelů s hesly. Můžete použít tyto uživatelská jména a přihlášení, ale chcete, aby lidé mohli vytvořit vlastní uživatelské jméno a přidat se na internetových stránkách. Rozložení pro registraci je dost podobný přihlašovacím formulářem, kromě uživatelské jméno není pre-existující, a uživatel musí také poskytnout nové heslo, a pak obvykle máme heslo potvrzení. Jakmile uživatelské vstupy všechny uvedené informace, chceme přidat do naší databáze uživatelů. Budeme mít databázi - databáze SQL - že budeme odkazovat. V této databázi, budeme mít tabulku se všemi uživateli obsahující jejich jméno, jejich heslo, a také, kolik peněz mají. V registru, chceme, aby mohly vstoupit tyto informace. Chceme zobrazit tento formulář. Chceme, aby se ujistil, že jejich heslo - že Zadali, a pak také, že hesla zápas, když do něho vstupují dvakrát. Po všech, co se děje - za předpokladu, že tyto chyby jsou kontrolovány - pak budeme chtít přidat tyto uživatele do naší databáze. Konečně, jakmile jste se zaregistrovali, je to docela užitečné, pokud nechcete nutné se přihlásit znovu Jakmile jste zaregistrováni, takže budeme se přihlásit je do webové stránky, pokud jste registrovali v úspěšně. Prvním úkolem je zobrazit formulář, a to je vlastně bude - celý tento proces registrace se bude modelovat dost těsně po přihlášení kromě namísto login.php můžete mít register.php. Místo toho, aby login_form.php--což je šablona - budete mít zaregistrovat formulář. Budete chtít přidat ještě jednu oblast - potvrzení hesla pole - místo toho jen jedno uživatelské jméno a heslo na jedné. Dále chceme zjistit, zda se hesla odpovídají nebo jsou prázdné. Máme regulátor - register.php--, který se chystá postarat o tom tyto kontroly. Když je forma podává prostřednictvím metody POST pak všechny tyto proměnné jsou obsaženy v post pole. Chcete, aby se ujistil, že po pole hodnota na indexu heslo odpovídá potvrzovací prvek. Chcete, aby se ujistil, že nejsou prázdné, a chcete, aby se ujistil, že jsou stejné. Jedna věc, o pohodlné PHP je, že nemusíte používat řetězec porovnání už. Můžeme použít rovná-se rovná provozovatele  zkontrolovat, zda jsou řetězce shodné navzájem. Pro chyb, budete chtít omluvit. Se omluvit, můžete jednoduše zavolejte funkci  a poté zadat typ zprávy, kterou chcete výstup. Potom chcete přidat uživatele do databáze. Až teď, vše, co jsme dělali právě zabývá lokálně s výsledky formuláře. Nyní, vlastně chceme přidat do naší databáze. K tomuto účelu je nejprve chtít, aby se ujistil, že uživatelské jméno není prázdný. Pochopte, že na webových stránkách, nemůžete mít více uživatelů se stejným uživatelským jménem, takže si budete chtít, aby se ujistil, že při vložení něco do databáze - vložit nového uživatele - pak nechápu kolizi mezi pre-existující uživatelské jméno a jméno, že se uživatel pokouší odeslat. Za tímto účelem, jakmile spuštění dotazu - vložení určitého uživatele s jejich heslem a původní částky v hotovosti - Jednou říkáš, že dotaz, mySQL se skutečně vrátí false, pokud selže. Struktura uživatelů je taková, že uživatelské jméno je jedinečná hodnota, takže nemůžete mít více než jeden. Při pokusu a vložit nový řádek s uživatelským jménem, ​​které již existuje, že se to vrátí false - jako logická hodnota false. Ošemetná věc je, že budete chtít zjistit, zda výsledek je výsledek vašeho dotazu. Pokud se nezdaří, pak budete chtít zkontrolovat s triple-rovná provozovatele. To se vlastně bude kontrolovat, zda je porucha, nebo ne, vzhledem k tomu, v jen jednoduchý rovná-se rovná, by to byla pravda, kdyby řádek byl prázdný. Výsledkem poruchy, jestliže je kolize mezi uživatelským jménem je skutečná hodnota false. Zde je, jak byste vložit do databáze. Zde je dotaz, který by běžel přesně v SQL. Jedna věc je, že můžete skutečně jít na webové stránky, které spravuje SQL databáze a hrát si tam zadáním ručně buď hodnoty nebo řádků. To bude výstup, co SQL výstup. Můžete také spustit SQL příkazy v rámci databáze  a poté, co syntaxe může být, a pak převést do dotazu funkci, kterou jsme v PSet 7, která bude velmi podobná dotazů, které jste vlastně běží. Pokud bych chtěl vložit nový řádek do mého tabulky uživatelů, pak bych upřesnit vložku do uživatele, který je jméno mého stolu. Pak bych zadat názvy sloupců. Pak bych poskytnout hodnoty spolu s mým heslem. Hesla v naší tabulce users nejsou uloženy jen jako řetězec. Jsou uloženy jako šifrované verze, takže si budete chtít spustit funkci kryptu na skutečné heslo, a že vám správný typ úložiště pro uživatele pole. Běh to bude vložit nový řádek do tabulky uživatelů. Vypořádat se s dotazu funkcí, předtím v C jsme použili znak procent jako zástupný znak. Podobně, ze stejného pojmu zástupný zde platí. S dotazem, můžete zadat celý dotaz, kromě kdykoli máte co do činění s proměnnými jako vstup do dotazu, pak místo skutečně jejich uvedení v -, jako když jsme měli printf prohlášení v C. Rádi bychom dát provázek a pak zástupný symbol tam, a pak se po každém čárka, určit, které proměnné jsme měli. Zde, budeme používat otazník označení jako náš zástupný symbol a pak se projít v každé proměnné, respektive s cílem, pro umístění - pokud tyto proměnné by mělo jít. Takže zde by první otazník být nahrazen skutečnou uživatelským jménem pak druhý otazník heslem. Pak konečně, jakmile jste zaregistroval a přidal je do databáze, pak se chcete přihlásit je do webové stránky. Máme jakýsi super-globální proměnné nazvané zasedání. Sezení trvá určitou id, a že id odpovídá uživatele, který je aktuálně přihlášeného Co budete chtít udělat, je najít to, co jejich uživatel id je a pak nastavit, aby session id, jako je úcastníka id. Funkce, která budete chtít používat zde SQL příkaz které budou načíst poslední vložený identifikační číslo z tabulky. Pak řádky budou volat - it'll zavolejte id - it'll přiřadit jméno k číslu, které se vrací. Bude říkat, že id. Nyní jsme dokončili registraci, a můžeme přejít k citovat. Quote umožňuje uživateli zadat název určité populace, a pak se vrátím kvalit této populace. Co budete chtít udělat je mít ovladač a některé šablony. V tomto případě, budeme mít regulátor, který je udělá všechny myšlení pro nás. Bude to vypadat nahoru symbol a potom předat hodnot na šablony, které budou vytištěny. Budeme mít 2 šablony zde. Budeme mít 1 šablonu, která poskytuje formu, v níž jsou uživatelé chystá Vstup název populace - název podílu. Pak jsme také bude chtít jinou šablonu, která zobrazuje tyto hodnoty. Můžete se podívat na přihlášení pro příklad toho, jak budete mít formulář, který přijímá vstup, s výjimkou tady, chceme jen 1 pole. Nechceme uživatelské jméno a heslo pole. Chceme jen 1 textové pole, které umožňuje uživateli zadat název určité populace. Pak chcete odeslat tato data - jakmile jste se podíval, že zboží - k quote_form.php. Vyhledávání vrátí symbol na populaci, jméno a cenu. Ti, kteří jsou obsaženy v asociativním poli. Podívejte se na vyhledávací funkci uvnitř functions.php pro více informací o návratových typů těch. Výborně! Takže nakonec, budete chtít zobrazit informace o akciích. Budete chtít, aby pravděpodobně zobrazovat - budeš chtít mít přístup tyto proměnné. Jakmile budete mít cenu v proměnné - jakož i jméno a symbol - pak budete chtít zobrazit ty své stránky šablony. To šablona stránka může být nazýván show_quote.php nebo tak něco. Vaše quote.php strana zbavuje zobrazit nabídku a pak předat ve všech těchto hodnot. Pak v php stránky, jste vlastně vytisknout tyto hodnoty do HTML aspektu stránky. Stačí použít funkci tisku a předat v ceně. Existují 2 způsoby - buď můžete spojit s operátorem tečka, nebo použijte zástupný symbol. Uživatelé nakonec se bude kupovat a prodávat akcie. Chceme, aby jim nějaký způsob, jak vidět všechny zásoby, které v současné době mají. Budeme říkat, že jejich portfolio. Portfolio by pravděpodobně pro každého uživatele, obsahuje spoustu řádků vypisovat druhu akcií, které mají, a pak, jak mnozí z těch, co mají. Naše stávající tabulky - teď máme uživatelů tabulku v naší databázi. , Který obsahuje uživatelské jméno uživatele, stejně jako jejich heslo a kolik hotovosti mají. Není tam žádný skutečný způsob, jak ukládat všechny své zásoby v rámci které. Je to, jako bychom můžete vložit nové sloupce pro každý sklad. To by bylo velmi, velmi dlouhá řada, protože máme nekonečné množství druhů zásob, které by mohly mít. Takže místo toho, co budeme dělat, je ve stejné databázi, budeme mít uživatelé tabulku, ale pak budeme také mít portfolio tabulku. Portfolio tabulka bude určitě spojeno s tabulky uživatelů, ale místo toho portfolia struktura tabulky budou mít informace o akciích, kolik akcií této populace má uživatel, Stejně jako uživatele zejména identifikační číslo. Máte uživatelů tabulku, která má ID, stejně jako uživatelské jméno, hash - což je heslo, zašifrované heslo - a pak se množství hotovosti mají. Id číslo by být vázána na identifikační číslo z portfolia. Portfolio by jen mít symbol populace stejně jako akcie - počet akcií této populace, které má uživatel. V tomto portfolia tabulce budete mít v podstatě všechny akcie posedlý všechny uživatele na vašem webu. Později, specifikovat jen určitý uživatel akcie - pouze jejich portfolio - byste načíst hodnoty z vašeho portfolia stole takový to id číslo je specifické pro daného uživatele. Při zobrazení portfolio, budete chtít ohlásit každý z populací v uživatelské portfoliu. Budete chtít nahlásit počet akcií a aktuální hodnota těchto akcií. To současná hodnota těchto akcií není uložen v tabulce portfolia protože to je bude aktualizovat - minimálně - každý den Yahoo. Chcete-li získat tyto informace, nemůžete odkazovat, že z vašeho dotazu SQL. Jakou funkci stanoví, že k nám? Jakou funkci dostane cenu? To je vyhledávání, takže pomocí vyhledávání na konkrétní symbol vám spoustu informací. Dá vám 3 kusy informací - jméno, symbol, stejně jako cenu. Jakmile vyhledávání určité symbol, pak se můžete dostat cenu, a pak můžete použít cenu, která se zobrazí ve vašem portfoliu. Portfolio by mělo také zobrazovat uživatele aktuální peněžní zůstatek. Toto pole je uložen ve vaší tabulce users. Takže si vzpomněl, jak jsme v podstatě museli - budeme mít různé typy PHP souborů. Budeme mít regulátor, který v podstatě dělá všechny myšlení pro vás. A pak máme šablonu, v níž šablona se zabývá výstup dat. Musíte myslet na to, co proměnných regulátor bude muset vzít dovnitř Pokud máme co do činění s portfoliem, které výstupy každé jméno, symbol, a sdílet číslo, , jakož i proud cena zásob, pak budete chtít najít nějaký způsob, jak v podstatě předávání in - můžete předat v poli hodnot, které odpovídají, že. Pojďme do příklad toho, jak by se Vám mohl načíst do všech akcií vlastnictví konkrétního uživatele. To není řešení - dosud - s cenou populace. Co by to udělat, je spustit dotaz. To by získat symbol stejně jako akcie od - Volám tuto tabulku, ale v tomto případě to, co by to bylo? Jaký je název tabulky, která máme co do činění s tím má symbol a akcie pro konkrétního uživatele? Je to buď uživatele nebo portfolia. Portfolio. Co by to udělat, je dotaz portfolio pro symboly a podílů pro konkrétního uživatele. Zde, říkám, (SELECT symbol, akcie Z tbl - ale místo tabulky, budete nahradit, že s portfoliem. "Kde je v podstatě můj stav. Říkám jen chci dostat ty asociativních polí, které odpovídají  k tomuto následující podmínku - id rovná.  Pak dávám zástupný tam a pak relace id. Co by to udělat, je říct, pro každý řádek v řádcích. Jedná se o elegantní způsob, místo skutečně nutnosti nastavování pro smyčce že iteruje přes všechny indexy, pak v PHP můžete mít pro-each. Pokud máte zadány pole, pak si můžete říct, že budu volat každý následující prvek - Jdu zavolat každý prvek tento název. Takže, pro každou z těchto prvků, budu jim říkat to, pak jsem to udělat. V tomto pro každého, máte řádky jako vaše skutečné pole, a každý řádek vy budete volat řádek. Pokaždé, když se provede tělo, to půjde a bude aktualizovat řádek na další prvek v řádcích. Nyní, pokud jde o nákupu zásob, to, co chceme udělat, je dostat akcie, které uživatel chce koupit a množství akcií, které uživatel chce koupit, a pak - pokud chtějí - Dodávám, že zboží do svého portfolia. Je zřejmé, že v případě, že kupujete něco, pak že to bude snižovat množství peněz, které mají, tak že to bude snížit jejich peníze. Budeme se zabývat aktualizace portfolia, stejně jako tabulky uživatelů, který obsahuje hotovost. Ale nejprve musíte dostat skutečnou skladem a množství akcií, které chce uživatel. Za to, že budete potřebovat HTML formulář, který bude žádat o symbol populace které si chcete koupit, stejně jako počet akcií. Pak budete chtít přidat. Budete chtít vybrat určité hodnoty. Přešli jsme přes to trochu už, ale když se snažíte získat určité řádky - načíst některé řádky z tabulky SQL, To je následující syntaxi. Jste vybrat, a pak, pokud zadáte hvězdu, že to v podstatě vrátí celou, celý řádek pro vás. Pak znovu, budete mít stav, při kterém, a pak zadáte - Chci jen uživatelské jméno se rovná mail-in, tak to bude pouze načíst řádek uživatelů, která odpovídá mail-in. Když chce uživatel přidat podíl na portfoliu, je třeba zkontrolovat několik chyb. Chcete, aby se ujistil, že uživatel může skutečně dovolit zboží, takže si budete chtít zkontrolovat svou hotovost. Než jsme použili hvězdičku načíst celý řádek z tabulky SQL. Ale tady, můžeme skutečně jen upřesnit, že chci jen hodnotu 1 - Chci jen hotovost. Tak tady by to vrátit hotovost pro uživatele s číslem id 1. Pokud uživatel již koupil určité zboží, ale pak kupuje více této populace, pak ve svém portfoliu - nechcete samostatnou linku, další řádek, který obsahuje tuto novou transakci. Vy vlastně chcete aktualizovat částku. Vše, co se to mění opravdu je množství akcií, které tento uživatel vlastní. Pokud použijete vložku do dotazu - tak to stačí vložit do svého portfolia všech těchto hodnot - uživatele id číslo, stejně jako symbol populace, které kupujete a podíly, pak budete také chtít určit, dobře, když jsem běžet do duplikátu klíče - v tomto případě, duplicitní klíč je nejen uživatele id, ale také symbol akcie - protože můžete mít pouze - náš předpoklad je, že můžete mít pouze 1 řádek  že odpovídá 1 specifický symbol. Takže, na duplicitní klíč - pokud se dostanete do kolize tam - jste jen tak aktualizovat akcií na novou hodnotu. Akcie rovná, co jsme měli předtím a počtu akcií, které uživatel kupuje. Nyní, když jsme aktualizovali portfolio tabulky, budeme chtít aktualizovat uživatele hotovost. To je v tabulce users, takže budeme se odečtením určitou částku z hotovosti. Lze předpokládat, že to bude v hotovosti se rovná peněžní minus - a pak určitá částka. Chcete-li aktualizovat hotovost, by si - kdybych chtěl vzít peníze z mail-in, pak bych spustit tento dotaz - "Aktualizace uživatelů a potom nastavte hotovosti sloupec hotovosti - Chtěl bych odstranit 9999 dolarů jen v případě, že uživatelské jméno je rovna mail-in. Ale v tomto případě, my nechceme odečíst 9999 konkrétně. Chceme určit, dobře, chceme odečíst aktuální cenu populace vynásobená počtem akcií, které oni kupují. Teď jsme jim umožnila vidět všechny zásoby, které mají, stejně jako koupit více populací. Také jsme již dříve dovolil jim vyhledat aktuální cenu akcie. Zde chceme, aby mohli prodat. Nejprve chceme zobrazit v podstatě - Chceme umožnit jim vidět do všech akcií, které mají, takže tady chceme zobrazit všechny řádky z portfolia. Pokud se rozhodnou prodat určité zboží, pak budeme předpokládat, že chtějí prodat všechno. Oni nejsou jen tak prodat 50% svých akcií, se chystají prodat 100% ní. Můžeme jen odstranit celý řádek z portfolia. Můžeme odstranit daného uživatele akcie na některých symbolu. Tam je syntaxe pro to. Pak chceme aktualizovat hotovost. Budeme přidávat v hotovosti rovnající se počtu akcií, které jsou prodejní vynásobí aktuální ceny populace - není cena, za kterou si koupili, ale spíše na cenu, za kterou jsou - aktuální cena, když se ho prodá. Chcete-li odkazovat aktuální cenu akcií, budete chtít použít vyhledávání, které vám cenu na populaci v současné době. Nyní nám nezbývá s historií, které chcete povolit uživateli sledovat všechny jejich transakce - chce vidět pokaždé, když prodávají něco, vždy, když koupil akcie. Chceme určit čas, ve kterém oni dělali, že stejně jako kolik jich koupili a co fotografii to bylo. Máme žádné aktuální, stávající strukturu, která určuje, že? No, máme portfolio, které zobrazuje počet populací, které má uživatel pro danou akcii. Ale my jsme strukturovat portfolio tak, že se aktualizuje, když jsme se koupit více, vzhledem k tomu, historie by - pokud si koupíte Apple, 10 akcí z ní, a později na prodeji 5, pak budete chtít vidět ty odděleně jako samostatné akce, samostatné řádky. Vzhledem k tomu, že opatření, která představit, že v našem portfoliu tabulce by být jen aktualizace na konkrétní řádek,  tak jsme pravděpodobně bude chtít jinou tabulku. V naší databázi máme našim uživatelům tabulku, máme portfolio stůl, a teď budeme pravděpodobně potřebovat tabulky historie. Že historie tabulka může sledovat aktuální datum, stejně jako konkrétní symbol akcie, stejně jako to, kolik akcií, a pak, jaké kroky je - zda jste si kupovali ty akcie, nebo zda jste prodávají. Abychom se s datem, existuje několik způsobů, jak můžete udělat to. PHP má způsob, jak udržet přehled o datu, které si můžete vzhlížet sami. V SQL můžete také použít buď teď, nebo aktuální timestamp. To záleží na vás. Jen se ujistěte, že pokaždé, když uživatel koupí nebo prodá, budete aktualizovat své peníze v tabulce users, budete aktualizovat řádky v tabulce portfolia, pak budete také aktualizace historii, takže se bude 3 samostatné SQL dotazy, které budete volání tam. Máme spoustu funkcí nyní. Jen pár připomínek, které v indexu souboru, budete chtít odkaz na alespoň vaše - ale budete chtít, aby uživatel odkaz na buy.php stránku. To se děje, aby uživatel - buy.php je regulátor, tak, že to bude buď poslat tě do -, že to bude poslat tě do formuláře, který vám umožní podívat věci. Máme historii. Máme odhlášení, dostat cenovou nabídku a pak prodávat. To jsou minimálně to, co chcete zobrazit. Z hlediska portfolia, je portfolio skutečně uvedeny v indexu stránce. Pokud půjdeme do indexu, zde vidíme, že činí portfolio.php a přechází v asociativním poli - v podstatě název rovná portfolio. Takže, to je regulátor. Pokud půjdeme do šablony portfolio.php, pak vše, co má, je - zobrazí v podstatě obraz, který říká, oh, toto místo je ve výstavbě. Později, jakmile předáte - budeš se procházet v podstatě specifickým informacím. Namísto pouhého titulu, budete pravděpodobně projde v dalších věcech. Jakmile budete mít tyto hodnoty, pak portfolio.php si poradit s těmito hodnotami a jejich tisk v nějakém druhu objednávky. Jakmile jste implementovali všechny ty, musíte také implementovat 1 další funkce. To může být buď umožňuje uživateli změnit své heslo, obnovit své heslo, jestli už zapomněl - tak pro resetování hesla, pak budete pravděpodobně také chtít upravit registraci tak, že jim umožňuje určit e-mail, takže v případě, že zapomenete své heslo, pak můžete dostat, že. Mohou pravděpodobně vstoupí v jejich uživatelské jméno, a pak-mailu bude odeslána na ně s odkazem, aby byl schopen obnovit své heslo. Můžete mít něco, co umožňuje uživatelům získat příjmy pokaždé, když koupit nebo prodat něco, a pak konečně, umožnit jim přidat peníze na své webové stránky. Stačí jít zpět do koncepce regulátorů a šablon trochu. Budete mít něco jako -, takže budete mít regulátor zde. Právě teď, jsme při pohledu na login.php příklad. Když máme ovladač, v podstatě to bude trvat 2 případů. Když máme řadiče, jsme v této skladbě, že jsme také trochu zabývá když máme formy stejně. Regulátor bude mít de facto samostatné akce - jeden, pokud forma již byla podána, a pak dva v případě, že uživatel přichází do té straně poprvé a ještě potřebuje vstupu, které tvoří. Chystám se skočit na této věci dřív, než jít do prvního případu ve tvaru dovnitř Zde říkáme, pokud je formulář byl předložen s metodou post - nebojte se o tom trochu. Nedělejte si starosti, že příliš mnoho, ale pochopit, že v podstatě tato funkce se zabývá zda forma byla předložena, nebo ne. Tato podmínka platí, pokud uživatel předloží formulář. Pokud ne, pak budeme chtít volat činí login_form.php, a pak předat v názvu. Tento titul je jen v podstatě bude v záhlaví. Co to dělá, je v podstatě říká, jo - no, pokud uživatel přejde login.php a nemá vlastně přihlášen, pak chci poslat je na stránku, která má tuto formu která jim umožňuje zadat uživatelské jméno a heslo. Pak jsem jít do login_form, a pak, že má skutečnou podobu. Poté, co uživatel odešle tento formulář, jdou ji předloží login.php s metodou post. Pak jsem vlastně chystá vstoupit tuto část svého if-else smyčky. Pak je tady to, jak zacházíme s hodnotami zadaných do formuláře. Je to tady, že jsme s nimi zacházet. Pak, jakmile se vypořádat s těmito hodnotami - pokud máte co do činění s - říci, máme co do činění s quote.php stránku, kde někdo může zadat akcie, které chtějí vypadat, a pak vidět, že displej - to je něco podobného tady. Zde máme přihlašovací formulář - you'd mít pravděpodobně poptávkový formulář - ale pak jednou uživatel skutečně tvrdila, že informace, pak budete chtít regulátor přejít do jiné šablony že jim ukáže, že aktuální informace. Takže přímo tady, pak budete pravděpodobně - kolem konce Vašeho stavu zde - v případě, že metoda se rovná příspěvek - pak budete pravděpodobně chtít vykreslit další stránku - přehlídka citace - která vás pošle na tuto stránku - show_quote.php-- a pak se v tomto souboru bude odkazovat těchto hodnot. Dává to smysl? Máme řadič, který v podstatě zabývá se 2 případů - zda jste zadali formuláře, nebo ne. Pokud jste nezadali formulář, pak vás přesměruje na tomto formuláři, který pak vás zpět na tuto stránku. Pak, až budete mít informace v regulátoru, bude tento orgán se s tím vypořádat informace podle potřeby - buď vzhlédl hodnoty pro populaci, a pak, jakmile je to vzhlédl tyto hodnoty a má je v pěkně formátované pole, pak mohou projít, že pole do šablony stránky  , která se zabývá výstupu tuto informaci. Opět, protože je to web, to bude legrace. Jsme mimo C, takže jsme nejen na ASCII a že terminálu výstup, tak bavit s tím. Můžete si jej jako vizuální, jak chcete. Můžete povolit uživatelům vstupních milionů dolarů v době, nebo omezit je a bude skutečně znamenají a umožnit jim zadávat pouze 1 cent v době nebo něco takového. Rozhodně nezapomeňte se bavit s tím. PHP kód je trochu jednodušší v tom, že je to trochu jednodušší zmapovat svou pseudokódu do skutečného provedení. Takže, určitě bavit s tím, protože to je vlastně naše poslední kus CS50. S tím, to bylo Návod 7. Jakmile budete hotovi sledujeme návodu a skončil svůj PSet, pak tito byli také psets, a teď jsme na konečný produkt - poté, co jsme se přes kvízu 1. Pak doufejme, že můžete použít nástroje, které jste se naučili od psets - nejen syntax, ale abstraktní pojem o tom, jak se jisté - rád, já chci dělat to a pak vlastně provádí, že. Naučit se, jak se probíjejí syntaxi a distribuční kód. Čtení kódu jiných lidí, a pak se výkladu, že používání již existujících funkcí. Tak hodně štěstí s posledním PSet. Je to potěšení vést návody. Doufám, že jsem byl užitečné pro vás. Jednalo se o návody, a díky moc. [CS50.TV]