[Powered by Google Translate] [Можи Проблем Намести 7]
[Zamyla Чан] [Универзитетот Харвард]
[Ова е CS50] [CS50.TV]
>> Здраво на сите, и добредојде на можи 7, CS50 финансии.
Сега ние сме официјално направено со сите psets во CS50,
и ние сме само замина со уште еден кој ќе биде забавно имплементација
на веб-сајт, каде што корисниците можат да се логирате за да CS50 финансии
и купуваат и продаваат акции.
>> Денес, ние се случува да имаат неколку алатки на располагање.
Ние ќе се зборува за дозволи.
Секогаш кога имате веб папка,
сте ќе сакате да им овозможи на корисниците да извршуваат одредени датотеки
но, исто така, само да читате другите,
па ние ќе се погледне во дозволите и како можете да го поставите оние.
Тогаш ние ќе треба да се погледне во PHP, HTML, и SQL код.
>> Прво, дозволи.
Кога сте во терминалот во одреден директориум,
тогаш што сакате да го направите е дека сакате да ја извршите командата chmod.
Тоа е проследено со или букви или броеви
одговара на она што во основа сакате светот да види,
можете сами да се види, итн
На пример, секогаш кога имате некоја папка,
тогаш ќе сакате таа папка да биде извршна од сите што го гледа,
така што ќе направиш е можете да ја извршите командата chmod a + x
а потоа името на вашата папка.
Кога имаш датотека како CSS датотеки или датотеки со слики -
како JPEG слики и bitmaps, работи како што, или било JavaScript код -
сакате тоа да се чита од секого,
па тогаш што треба да направите е можете да го користите маска -
кој е ѕвезда -
во основа се покаже во папката CSS - сè во таа папка -
Одам да кажам дека ќе биде читлив од сите.
Со дозволи, кога ние ги користиме на букви,
ние исто така може да се користат броеви, наместо.
Така, ќе видите дека на крајот кога сакате нешто да биде извршна -
која е претставена од страна на бројот 1 -
нешто да се чита е број 4 и потоа -
запишуваат е број 2 -
и така во суштина кога сакате комбинација на овие, тогаш можете да ги додадете.
Ако сакате нешто да се чита, можат да се запишуваат, и извршна,
тогаш ќе се додаде 4, 2 и 1, а тоа ќе ви даде 7,
тогаш кога имате папка сакате тоа да биде извршна од сите -
како и да се чита и запишуваат - тогаш ќе се направи дека 7, 1, 1.
Тоа ќе биде 7 за вас, тогаш 1 за другите луѓе.
Кога имате спецификации, тоа всушност ќе се определи кои папки и кои датотеки
треба да бидат chmod-ед конкретно.
На пример, кога имате фолдери - тоа се 7-1-1 -
кога имате слики, или HTML, CSS, JavaScript,
тогаш тие ќе бидат 6, 0, 4 - или 6, 4, 4 -
и тогаш PHP датотеки ќе бидат 6, 0, 0.
Идејата зад тоа е дека корисниците не всушност треба да го видите вашиот PHP код,
но само да биде во можност да видите на излез.
>> Одлично! Движи во PHP.
Едноставно, кога сакаш датотека PHP, на датотеката суфиксот е. PHP.
Вие исто така може да се меша HTML со PHP код.
Ако имате HTML датотека, на пример,
тогаш можете да го приложи со лев агол, прашалник, PHP -
стави вашиот PHP код - и потоа затворете дека со друго прашање марка и под прав агол.
Променливи во PHP се многу полесно да се справи со повеќе променливи во C.
Секоја променлива само започнува со знакот за долар пред него, а тие се слабо напишани.
Тоа значи дека не треба да се грижите за поставување на нешто
еднаква на низа или цел број.
Можете да едноставно се каже, ова е мојот името на променливата
и тогаш ова е неговата вредност,
па тоа ќе биде полесно да се справи со таму.
>> Друга работа е дека PHP ви дозволува да користите асоцијативни низи.
Можете да едноставно се дефинира низа како вие би во C
велејќи, знакот за долар-името на вашата низа еднакви,
а потоа и во квадратни загради имаат во основа, само на листата на вредности на сите елементи во низа.
Но, во PHP што можете да направите е да одредите основа -
тоа е вид на како хеш функција.
Можете да наведете индекс - она ​​што ви се случува да го наречеме -
и тогаш тоа одговара на вредноста.
Ако всушност помине во a = 1, B = 2, c = 3,
тогаш вашата низа на индекс ќе ви даде 1.
Ова pset ќе можеш да се згрееш со некои PHP во делот на прашања,
а потоа се нурне во CS50 финансии.
>> Имаме неколку - имаме некои функционалност, во основа,
за спроведување на овој веб-сајт.
Ние сакаме да им овозможи на корисниците да се регистрирате во нашата веб страница со корисничкото име и лозинка.
Ние сакаме да им се дозволи да се погледне до понуда,
и тогаш ќе печати од името на тој цитат, како и сегашната цена што тоа е во.
Ние сакаме да им се дозволи да ја видите портфолио на сите акции што тие ги купуваа досега.
Ние исто така сакаме да им се дозволи да купи акции како и продаваат нив.
А потоа конечно, ние сакаме да им се дозволи да ја видите историјата
на сите трансакции кои тие го направија.
Тогаш, конечно, откако ќе го спроведува сето тоа,
тогаш вие сте слободни да се спроведе една дополнителна функција.
Ќе одиме во нив.
Оние може да биде или им овозможува на корисниците да се добие екстра кеш со депонирање екстра кеш,
или можете да им се дозволи да го сменат лозинка, или нешто слично,
ги е-мејл потврда кога купуваат или продаваат акции.
Има ограничен список на особини кои можете да се имплементираат,
па тоа е последната таму.
>> Бидејќи ова е веб-сајт, вие момци имаат многу слобода да го прилагодите.
Ние не се обезбеди некои кодот CSS, но ти си дефинитивно слободно да го tweak,
го направите да изгледа поубаво, но основата е основната функционалност
па секогаш се однесуваат на спецификации за она што всушност треба да се вклучат таму.
По спецификации, ние ќе биде со користење на апаратот, како и на серверот.
Тоа се случува да биде домаќин на нашата веб страница за нас, за својот локален сервер.
Ако ги следите овие упатства и да ја отпакувате на pset 7 дистрибуција код
во вашиот виртуелен домаќин / локалниот компјутер папка,
можеш само да ја посетите http://localhost/ во Google Chrome во апаратот,
и тогаш ќе достигне кодот во која што сум напишал pset 7.
>> Pset 7 доаѓа со еден куп на дистрибуција код,
и се надевам дека we've - низ сите psets пред тоа -
навикнати нас да читање преку дистрибуција код,
разбирање на она што функции се веќе обезбедени, и како ние би можеле да се користат
тие и други функции кои ние ќе треба да се спроведуваат.
Во овој случај, имаме 3 папки.
Имаме HTML папка, еден вклучува папка, и папка за обрасци.
Она што ние ќе треба да се прави со овој pset е вид на одвојување на размислување -
програмирање размислување - на PHP код со реалните визуелни аспект.
Ќе имаме еден PHP фајл кој не сите на размислување, се наведува во базата на податоци,
отпечатоци од работите, има ако извештаи - работите се допаѓа -
и тогаш тоа ќе помине податоци во нашата дефиниција датотека - или template.php датотека.
Она што ќе направите е да прочитате на податоци, а потоа тоа ќе го испечатите.
>> Ние може да го третира шаблони како "глупава" во кој ние навистина не ги сакате
да се прави многу работа во пресметувањето работи.
Ние сакаме нашите контролори за да го направите тоа.
А малку за тоа - ајде да ги разгледаме во некои од дистрибуција код.
Тука имаме index.html фајл, и тоа е прилично празна.
Во суштина она што го прави тоа - вели, добро, јас ќе одам да бараат configuration.php датотека.
Ние не гледаме дека токму таму, но тоа е во основа се јавите на configuration.php датотека,
и извршување на тоа.
По тоа го прави тоа, тоа ќе го направи портфолио.
Рендерирање е функција, па секогаш кога сме во контролор,
ние ќе го наречеме направат, ќе го даде на датотеката и потоа податоците дека ние сме полагање во,
така што ќе се јавите во portfolio.php-вид на премин во тој податоци, така што портфолио може да се справи со тоа.
>> И сега, тука, ние имаме login.php форма.
Ова е контролер, кој во основа се грижи за сеча внатре
Еве, се проверува дали форма беше доставен до оваа датотека и се занимава со оценување на поднесување.
Ние ќе се погледне во оваа извини функција.
Кога сакаме да се печати порака за грешка,
ние ги користиме се извини и дека ќе се пренасочува корисникот кон одредена страница
што ќе се печати на одредени порака за грешка која што покажува.
Продолжување, тоа ќе пребарува базата на податоци - we'll добиете на повеќе од тоа подоцна.
Тогаш ќе видите дека тука долу, ако форма не е поднесено, тогаш тоа го прави форма.
Тоа значи дека таа оди на login_form.php, па ајде да ги разгледаме во тоа.
>> Login.php е, всушност, каде што можеме да видиме на HTML занимаваат со вистински визуелен аспект.
Тука имаме влез таг за корисничко име, влез за лозинка,
како и копчето Submit.
Тоа е, всушност, каде што визуелна аспект и форма HTML се случува да се одржи.
Еве, таа вели дека тоа се случува да бидат доставени од страна на одредени метод, наречен пост.
Ние ќе се влезе во разликите меѓу методи -
пост наспроти се, има, исто така, нешто што се нарекува стави -
ние ќе се влезе во овие методи подоцна, но во интерес на оваа pset,
Јас високо ќе ве охрабруваме да ги користите пост.
>> Ние знаеме дека во основа еднаш овој формулар се поднесува -
од login_form.php--
тогаш тоа ќе оди во акција - login.php--
основа помине во сите оние параметри од оние форми во login.php.
Резултатите од таа форма се содржани во овој пост асоцијативна низа.
Индексите на различни елементи во пост низа
се токму она што го наведете тука.
Велите дека името на овој влез е корисничко име. Името на оваа е лозинка.
Слично на тоа, ќе видите корисничко име како индексот на асоцијативна низа таму.
Ако одиме кон вклучува папка, имаме оваа функција датотеката која ќе биде многу корисно.
>> Сите овие функции се применуваат за вас.
Вие не треба конкретно да спроведе која било од овие сами,
но тие се случува да се доста корисни.
Имаме извини, кои како што реков претходно, во основа ќе се печати порака за грешка
за вас на одредена страница - apology.php.
Тогаш имаме депонија, па ако само повик депонија, а потоа помине во променлива,
тогаш тоа ќе ве однесе на страница, која ќе се прикаже дека променливата за вас.
Тогаш имаме одјава, што во основа ќе заврши седницата одреден корисник.
Пронајди се случува да бидат корисни.
Бидејќи ние сме се занимаваат со цитати и акции, ние ќе треба да бидат способни -
и тоа е суштина реално време.
Ние треба да знаеме што оние акции вредности се,
па имаме пребарување функција која се занимава со документација Yahoo на акции.
Откако ќе се погледне до одреден симбол на акции, ќе се врати да ви акции симбол
како и име и сегашната цена на тој фонд.
Тоа е збор функција.
>> Тогаш ние сме се занимаваат со MySQL,
па ние ќе треба да се сакаат да извршуваат одредени прашања на нашите SQL база на податоци.
Имаме барањето да се справи - да се вид на абстрактна некои од тоа.
Ние ќе се поминува во цела низа на нашите SQL упит -
и сите променливи кои одат во неа -
и што тоа не е всушност изврши тоа за нас.
Наместо да пишуваат сите на ова секој пат кога ќе сакате да пребарувате -
со добивање на сите на резултатите од тоа барање -
можеш само да се јавите на пребарување функција, а тоа ќе се врати за вас -
во зависност од она што го користите за вашето пребарување -
веројатно по ред на сите резултати кои се совпаѓаат со барањето или слично.
Повеќе за тоа подоцна иако.
>> Конечно, имаме пренасочи кои, како што сугерира името, ќе пренасочува кон друга страница.
И тогаш имаме рендерирање, кои ќе треба да се јавите неколку пати.
Кога сте во контролор, ти се јавам направи во шаблон страница
а потоа помине во вредностите кои дефиниција тогаш ќе се занимаваат со.
Тие вредности се веројатно нема да се занимаваат со видот на производството што сакате
да бидат прикажани на вашиот страница дефиниција.
Во ред. Тоа се функции, и има многу повеќе на оваа дистрибуција код.
Ги охрабрувам да одат преку овој и истражуваат себе.
Исто така, спецификации веројатно ќе ви прошетка низ некои други елементи на дистрибуција код.
Еве краток преглед на функциите се најде во functions.php.
>> Во ред. Првата задача е да им овозможи на корисниците да се регистрираат на веб страната.
Токму сега, има најава форма на веб-сајтот,
и ќе се предвидени со неколку корисници со лозинки.
Можете да ги користите овие кориснички имиња и најавите,
но сакате да им овозможи на луѓето да ги направат своите сопствени корисник
и се додаде кон веб страната.
Распоредот за регистрација е прилично слична на страната за логирање форма,
освен корисничко име не е постоечки,
и корисникот, исто така, треба да обезбеди нова лозинка,
а потоа обично имаме лозинка потврда.
Откако на корисникот влезови сите тие информации,
ние сакаме да ги додадете во нашата база на податоци на корисниците.
Ние ќе имаат база на податоци - база на податоци SQL -
дека ние ќе треба да референца.
Во таа база на податоци, ќе имаме табела со сите корисници
содржи корисничко име, лозинката, а исто така и колку пари имаат.
>> Во регистарот, ние сакаме да им се дозволи да влезат во таа информација.
Ние сакаме да се прикаже дека форма.
Ние сакаме да се осигураме дека нивните лозинка -
дека тие влегле еден, а потоа, исто така, дека лозинки одговара кога ќе го внесете двапати.
По сето тоа е направено - под претпоставка дека оние грешки се проверуваат -
тогаш ние сакаме да додадете оние на корисниците да нашата база на податоци.
Конечно, откако сте регистрирани, тоа е прилично лесен ако не треба повторно да се логирате
еднаш сте регистрирани,
па ние ќе им се најавите на веб страната ако тие се регистрирани во успешно.
>> Првата задача е да се прикаже форма, а тоа е, всушност, ќе биде -
целата оваа процес на регистрација ќе се моделираат прилично тесно по најавите
освен наместо на login.php може да имаат register.php.
Наместо login_form.php--која е дефиниција -
сте ќе се регистрирате форма.
Ќе сакате да додадете уште една област - лозинка потврда поле -
наместо само на еден корисничко име и една лозинка.
Следниот, ние сакаме да се провери дали лозинки натпревар или се празни.
Имаме контролер - register.php--кој ќе се грижи за тоа овие проверки.
Кога форма се доставува по пошта метод,
тогаш сите овие променливи се содржани во рамките на пост низа.
Вие сакате да бидете сигурни дека пост низа вредност на индексот лозинка
се совпаѓа со потврдата елемент.
Вие сакате да бидете сигурни дека тие не се празни,
а вие сакате да бидете сигурни дека тие се исти.
>> Еден лесен нешто за PHP е дека ние не треба да се користи низа споредуваат повеќе.
Можеме да го користиме еднаквите-еднаква на операторот
да се провери дали стринговите се еднакви на една со друга.
За справување со грешки, ќе сакате да се извини.
Да се ​​извини, можете едноставно повик на функција
а потоа наведете тип на пораката што сакате да излез.
Потоа сакате да додадете корисник на базата на податоци.
До сега, сите ние сме биле прави е само кои се занимаваат локално со резултатите од формата.
Сега, ние всушност сакате да го додадете во нашата база на податоци.
За ова, ние прво сакате да бидете сигурни дека корисничкото име не е празно.
Разбирам дека на веб-сајт, вие не можат да имаат повеќе корисници со истото корисничко име,
па ќе сакате да бидете сигурни дека кога ќе внесете нешто во вашата база на податоци -
вметнете нов корисник - тогаш не добие судир меѓу постоечки корисничко име
и име кое корисникот се обидува да ги достават.
За ова, откако ќе изврши побарување -
вметнување на одреден корисник со лозинка и почетен износ на готовина -
еднаш ти се јавам дека барањето, тогаш MySQL, всушност, ќе се врати лажни ако тоа не успее.
>> Структурата на корисниците е таква што на корисничко име е уникатна вредност,
па не можете да имате повеќе од еден.
Кога ќе се обидат и да внесете нов ред со корисничко име кое веќе постои,
што се случува да се врати лажни - како Булова вредност неточно.
А слабо нешто тука е дека ќе сакате да се провери ако резултатот е резултат на вашето пребарување.
Ако тоа не успее, тогаш ќе сакате да се провери со тројна еднаква оператор.
Тоа е всушност се случува да се провери дали постои неуспех или не,
каде што, едноставно еднаква на-еднакви, тоа ќе биде точно ако ред беше празна.
Резултат на неуспехот ако постои судир меѓу корисник
е вистински лажна вредност.
>> Еве како можете да внесете во базата на податоци.
Тука е прашањето што ќе работи строго во SQL.
Една работа е тоа што всушност може да оди на веб страната на која управува вашиот SQL база на податоци
и да играат околу таму со внесување на рачен или вредности или редови.
Ќе испечати што на SQL излез е.
Вие исто така може да се кандидира SQL команди во рамките на вашата база на податоци
а потоа да видиме што синтакса може да биде,
а потоа се преведе дека во пребарување функција што ја имаме во pset 7,
која ќе биде многу слична на прашања што всушност се работи.
>> Ако сакав да се вметне нов ред во мојот корисниците маса,
тогаш јас би се определи вметнете во корисниците, што е името на мојата маса.
Тогаш јас би го одредите колона имиња.
Тогаш јас ќе обезбеди вредности заедно со мојата лозинка.
Лозинки во нашите корисници табелата не се чуваат како само на стрингот.
Тие се чуваат како шифрирана верзија,
па ќе сакате да се кандидира на функцијата крипта на вистински лозинка,
и кој ќе ви даде точен тип на багаж за корисниците низа.
Вклучување на ова ќе ја внесе нов ред во вашите корисници табела.
>> Да се ​​справи со барањето функција,
пред во C ние се користи знакот за процент, како случаеви.
Слично на тоа, истиот концепт на случаеви е применлив и тука.
Со барањето, ќе се определи целата пребарување,
освен кога си имаш работа со променливи како влез во барањето,
тогаш наместо всушност ги стави внатре - како кога имавме printf изјави во C.
Ние ќе ја стави на низа и потоа да има случаеви таму, а потоа по секоја
запирка, наведете кои променлива имавме.
Тука, ние ќе го користите прашалник знак како нашите случаеви
а потоа помине во секоја променлива, односно во ред, за placeholders -
каде што овие променливи треба да оди.
Па еве, првиот прашалник ќе биде заменет од страна на вистинските корисничко име
потоа вториот прашалник од страна на лозинка.
>> Тогаш, конечно, откако ќе ги регистрира и додаде нив на базата на податоци,
тогаш ќе сакате да ги влезете во веб-сајт.
Имаме вид на супер-глобална променлива наречена сесија.
Сесија трае одреден проект,
и дека ид одговара на корисникот, која во моментов најавени
Што ќе сакате да направите е да се најде она што нивните корисничко име е
а потоа во собата што Ид како проект кој особено корисникот.
Функција која ќе сакате да го користите овде е SQL командата
што ќе се потсетите на последниот вметнува ID број од вашата маса.
Потоа редови ќе го наречеме - it'll јавите на id - it'll доделите име на број, кој се враќа.
Тоа ќе го наречеме дека ид.
Сега сме готови регистрираат, а ние може да се движи да го цитирам.
>> Цитат им овозможува на корисникот да го внесете името на одредени акции,
а потоа ќе се врати квалитети на кои акции.
Што ќе сакате да го направите тука е да има контролер и некои шаблони.
Во овој случај, ние ќе треба да имаат контролер кој се случува да се направи на сите размислување за нас.
Тоа се случува да се погледне до симбол, а потоа помине во вредностите на шаблони кои ќе се печати.
Ние ќе имаат 2 шаблони тука.
Ние ќе имаат 1 дефиниција која обезбедува формата во која корисниците ќе
внесување на името на акции - името на уделот.
Тогаш ние, исто така, ќе сакаат друг образец во кој ги прикажува овие вредности.
Можете да погледнете во најава за пример за тоа како ќе имаат форма која прифаќа влез,
освен во тука, ние само сакаме 1 област.
Ние не сакаме корисничко име и лозинка поле.
Ние само сакаме 1 текстуално поле кое му овозможува на корисникот да го внесете името на одредени акции.
Тогаш ќе сакате да се испрати на податоците - кога веќе сте се погледна нагоре дека акциите -
да quote_form.php.
Пронајди ќе се врати симбол на акции, име, и цена.
Оние кои се содржани во асоцијативна низа.
Побарајте на пребарување функција во внатрешноста на functions.php за повеќе информации
за враќање видови од нив.
>> Одлично! Па тогаш, конечно, ќе сакате да се прикаже информации за акции.
Ќе сакате да веројатно се прикаже - you'll сакате да пристапите до овие променливи.
Откако ќе имаат цена во променлива -
како и име и симболот -
тогаш ќе сакате да се прикаже оние во вашата страница дефиниција.
Која дефиниција страница може да се нарече show_quote.php или нешто.
Вашиот quote.php страница би го направила шоу понуда и потоа помине во сите тие вредности.
Потоа во вашиот PHP страница, вие всушност испечатите оние вредности на HTML аспект на страната.
Можете само користење на функција за печатење и да го положат во цената.
Постојат 2 начини - можете или да го concatenate со операторот точка,
или користете случаеви.
>> Корисниците на крајот ќе се купување и продавање на акции.
Ние сакаме да им овозможи на некои начин на гледање на сите акции што тие во моментов имаат.
Ние ќе се јавите дека нивното портфолио.
Портфолио би, веројатно за секој корисник, содржи еден куп на редови
листата на видот на акциите кои имаат, а потоа колку од оние што ги имаат.
Нашите постоечки маса - во моментов имаме корисниците табелата во нашата база на податоци.
Која содржи корисничко име на корисникот, како и нивната лозинка и колку пари имаат.
Нема вистински начин на складирање на сите на нивните акции во рамките на тоа.
Тоа не е како можеме да вметнете нова колона за секој акции.
Тоа ќе биде многу, многу долг ред, бидејќи имаме бесконечна количина
на видови на акции, кои тие би можеле да имаат.
Така, наместо она што ние ќе направиме е во рамките на истата база на податоци,
ќе имаме корисниците маса, но потоа ние исто така ќе имаат портфолио табела.
Портфолиото маса ќе биде дефинитивно поврзани со корисниците маса,
но наместо портфолио структура на табелата ќе имаат информации за акции,
колку акции на таа акциите на корисникот,
на корисникот, како и одреден број.
Имате корисници маса која има име како корисничко име, hash -
што е лозинка, шифрирана лозинка -
и тогаш износот на пари што ги имаат.
На матичниот број ќе бидат поврзани со ID број од портфолио.
Портфолиото само ќе имаат симбол на акции, како и на акциите -
бројот на акции на кои акции што корисникот има.
Во тоа портфолио маса ќе имаат основа
сите акции кои ги поседува сите корисници на вашиот сајт.
Подоцна, да се наведе само акции одреден корисникот - само нивното портфолио -
ќе добие вредностите од табелата вашето портфолио е таква што
на матичниот број е специфична за тој корисник.
>> Кога ќе се прикаже портфолио, ќе сакате да го пријавите профилот секоја од акциите во портфолиото на корисникот.
Ќе сакате да го пријавите профилот на бројот на акции и сегашната вредност на тие акции.
Дека сегашната вредност на тие акции не се чуваат во портфолиото маса
затоа што тоа се случува да се ажурирање - најмалку - секој ден од Јаху.
За да се добие таа информација, не можете да референца која од вашиот SQL упит.
Што функција обезбедува дека ни? Што функција ќе добиете цена?
Тоа е збор, па со користење пребарување на одреден симбол ќе ви даде многу информации.
Тоа ќе ви даде 3 парчиња информации - име, симбол, како и цената.
Откако ќе побара одреден симбол, тогаш може да добиете на цената,
а потоа можете да го користите цена да бидат прикажани во вашето портфолио.
>> Портфолиото исто така треба да се прикаже тековната на корисникот готовински баланс.
Тоа поле се чува во рамките на вашите корисници табела.
Па тогаш сеќавајќи се како ние сме во основа мора да -
ние си имаат различни видови на PHP датотеки.
Ние ќе имаат контролер, кои во основа го прави сите размислување за вас.
И тогаш имаме дефиниција во која дефиниција се занимава со Ставање на податоци.
Мора да мислат на она променливи контролорот ќе треба да се преземат внатре
Ако ние не се занимаваат со портфолио кое изнесува секое име, симбол, и споделување на број,
како и сегашната цена на акциите,
тогаш ќе сакате да се најде некој начин на основа поминува во -
може да помине во низа на вредности кои одговараат на тоа.
>> Ајде да одиме во еден пример за тоа како може да се добијат сите на акции
сопственост на одреден корисник.
Ова не се занимава - уште - со цената на акциите.
Што тоа би направите е да извршите пребарување.
Тоа ќе добијат симбол како и акции од -
Јас го повикувам оваа табела, но во овој случај тоа би било тоа?
Што е името на табелата дека ние сме се занимаваат со таа има симбол и акции
за одреден корисник?
Тоа е или корисници или портфолио.
Портфолио.
Што тоа би направите е да пребарување портфолио за симболи и акции
за одреден корисник.
Еве, јас се каже, (Избери симбол, акции од тбл -
но наместо маса, ви се случува да го замени тоа со портфолио.
"Каде е всушност мојата состојба.
Јас велам дека само сакаат да ги добијат оние асоцијативни низи кои одговараат
овој следната состојба - id еднакви.
Тогаш јас сум ставање случаеви таму и тогаш Ид.
Што тоа ќе го направите е да се каже за секој ред во редови.
Ова е уредни начин наместо всушност морале да се постави за телефонска линија
дека iterates над сите индекси, тогаш во PHP може да имаат за-секој циклус.
>> Ако имате одредена низа, тогаш може да се каже јас ќе одам да се јавите секој следен елемент -
Одам да се јавите секој елемент ова име.
Значи, за секој еден од овие елементи, јас ќе одам да ги наречеме тоа,
тогаш можам да го направите тоа.
Во овој за секој, мора редови како вашиот вистински низа, а секој ред ви се случува да се јавите ред.
Секој пат кога го извршува телото,
тоа ќе оди нагоре и тоа ќе се ажурира ред на следниот елемент во редови.
>> Сега, во поглед на купување на акции,
она што сакате да го направите е да се добие на акции што корисникот сака да го купи
и износот на акции што корисникот сака да го купи, а потоа - ако сакате -
додаваат дека акцијата за нивното портфолио.
Очигледно, ако тие се купуваат нешто, тогаш тоа ќе се намали
износот на парите што ги имаат, па тоа ќе се намалат нивните пари.
Ние ќе треба да се занимаваат со ажурирање на портфолио како и корисниците маса,
која содржи готовина.
Но, прво, мора да го добиете вистинскиот акции и износот на акции што корисникот сака.
За тоа, ќе треба HTML форма што ќе побара за симбол на акции
што сакате да ја купите, како и бројот на акции.
Тогаш ќе сакате да го додадете.
Ќе сакате да изберете одредени вредности.
Ние сме го преживеале овој малку веќе, но кога ќе се обидуваш да се добие одредени редови -
добивање одредени редови од табелата SQL,
ова е следнава синтакса.
Можете да изберете, а потоа ако се определи ѕвезда,
што во основа ќе се врати во целина, целиот ред за вас.
Потоа повторно, имате состојба каде, а потоа ќе се определи -
Јас само сакам корисничкото име да биде еднаков на пошта во,
па тоа само ќе се потсетите на ред корисници што одговара на пошта во.
>> Кога корисникот сака да додадете споделување на портфолио,
треба да проверите за неколку грешки.
Вие сакате да бидете сигурни дека корисникот всушност може да си дозволи на акции,
па ќе сакате да се провери нивните пари.
Пред тоа, ние се користи ѕвезда да се добие една целина ред од табелата SQL.
Но, овде, ние може да всушност само се каже дека Јас само сакам 1 вредност -
Јас само сакам готовина.
Па еве, тоа ќе се вратат парите за корисник со ID број 1.
Ако корисникот веќе купиле одредени акции, но тогаш купува повеќе од тоа акции,
потоа во вашето портфолио - не сакате посебна линија,
уште еден ред, која содржи таа нова трансакција.
Ти всушност сакате да го обновите на износот.
Се што е менување навистина е износот на акции што тој корисник поседува.
Ако користите вметнете во барањето - па тоа е само внесете во вашето портфолио на сите овие вредности -
на корисникот ID број, како и симбол на акции што тие се купуваат
и акции, тогаш исто така ќе сакате да се одреди, и, ако извршувате во дупликат клуч -
во овој случај, дупликат клучот е не само на корисникот ид но исто така и акции симбол -
затоа што само може да имаат - нашата премиса е дека може да има само 1 ред
што одговара на 1 специфичен симбол.
Значи, на дупликат клучот - ако извршувате во судир таму -
ти си само ќе се ажурира акции на својата нова вредност.
Акции изнесува она што имавме пред плус бројот на акции што на корисникот е купување.
>> Сега дека ние сме обновено портфолиото маса,
ќе сакате да го обновите пари на корисникот.
Тоа е во корисниците маса, па ние ќе треба да се одземање одредена сума од пари.
Веројатно, тоа ќе биде готово еднаква на пари минус - и потоа одредена сума.
За ажурирање на пари, што би -
ако сакав да се земе пари од пошта во, тогаш јас би ја извршите оваа пребарување -
"Ажурирање на корисниците а потоа во собата на кеш колоната за готово -
>> Јас ќе ги отстрани 9.999 долари само ако корисничко име е еднаква на пошта во.
Но, во овој случај, ние не сакаме да одземе 9.999 конкретно.
Ние сакаме да се одреди, добро, ние сакаме да одземе сегашната цена на акциите
помножена со бројот на акции што тие се купуваат.
>> Сега ние сме им дозволи да ги видиш сите од акциите што ги имаат,
како и купат повеќе акции.
Ние, исто така, претходно им дозволи да се погледне до сегашната цена на акциите.
Еве ние сакаме да им се дозволи да ги продадат.
Прво сакаме да се прикаже основа -
ние сакаме да им се дозволи да ги видиш сите од акциите што ги имаат,
па еве ние сакаме да ги прикажете сите редови од портфолио.
Ако тие избираат да продаде некои акции,
тогаш ние ќе да се претпостави дека тие сакаат да го продаде сето тоа.
Тие не се само ќе продаде 50% од своите акции, тие се случува да го продаде 100% од неа.
Ние само може да го избришете целиот ред од портфолио.
Ние можеме да ги избришете акции на даден корисник на одреден симбол.
Тука е синтакса за тоа.
>> Тогаш ние сакаме да се ажурира на готовина.
Ние ќе биде додавајќи во готовина еднаков на износот на акции што се продаваат
множи со сегашната цена на акциите -
Не цената по која тие го купиле, туку цената по која тие се -
сегашната цена кога тие се продавам.
Да повикување на сегашната цена на акциите,
ќе сакате да го користите збор, која ќе ви даде на цената на акциите
во овој момент.
>> Сега сме оставени со историја,
која сакате да му дозволи на корисникот да ги пратите на сите нивни трансакции -
сака да ја види кога тие се продаваат нешто, кога ќе купи акции.
Ние сакаме да го одредите времето во кое тие го сторија тоа како и колку тие купиле
и она што акции што беше.
Дали имаме било кој актуелен, постојната структура која го одредува тоа?
Па, имаме портфолио кое прикажува бројот акции што корисникот има
за одредена акција.
Но, ние сме структурирање портфолио во начинот на кој го ажурира кога ќе купуваат повеќе,
додека историјата треба да - ако ги купите на Apple, 10 индексот на неа, а потоа подоцна го продаде 5,
тогаш ќе сакате да ги видиме одделно како посебни активности, одделни редови.
Додека таа акција да се визуелизира дека во нашето портфолио маса
само ќе биде надградба на тоа особено ред,
па ние сме веројатно ќе сакате другата маса.
Во нашата база на податоци, имаме нашите корисници маса, имаме нашето портфолио на маса,
и сега ние најверојатно ќе сакате историја табела.
Дека историјата маса да ги пратите на тековниот датум,
како и посебните акции симбол, како и колку акции,
а потоа она што акција е -
дали сте биле купување на овие акции или дали сте биле ги продаваат.
>> Да се ​​справи со датум, постојат неколку начини на кои можете да го направите тоа.
PHP има свој начин на следење на денот, која може да се погледне до себе.
Во SQL можете да го користите сега или тековната временската ознака. Тоа е до вас.
Само бидете сигурни дека секој пат кога корисникот купува или продава, ќе се ажурирање на нивните пари
во корисниците маса, ќе биде ажурирање на редови во портфолијата маса,
тогаш исто така ќе биде ажурирање на историјата,
па таму се случува да биде 3 одделни SQL queries дека ќе се повикува таму.
Имаме еден куп на функционалноста сега.
>> Само неколку потсетници дека во вашата индексна датотека, ќе сакаат да водат до најмалку вашите -
но вие ќе сакате да му дозволи на корисникот да се поврзе на buy.php страница.
Тоа ќе им овозможи на корисникот - buy.php е контролор, па тоа ќе било
испрати да - тоа е нема да ти испрати на формата која ти овозможува да се погледне работите.
Имаме историја. Имаме одјава, добивање на понуда и потоа продавање.
Оние кои се во најмала рака она што сакате да се покаже.
Во однос на портфолио, портфолио е, всушност, е прикажано на почетната страница.
Ако одиме да индексира, тука можеме да видиме дека тоа го прави portfolio.php
и поминува во асоцијативна низа - во основа насловот е еднаква на портфолио.
Значи, ова е контролорот.
Ако одиме на дефиниција на portfolio.php,
тогаш сите има е - прикажува во основа слика која вели, ох, овој сајт е во изградба.
Подоцна, откако ќе помине во - you'll се поминува во основа е повеќе специфични информации.
Наместо само насловот, најверојатно ќе се поминува во повеќе нешта.
Откако ќе имаат оние вредности, тогаш portfolio.php може да се справи со оние вредности
и ги отпечатите во било кој вид на ред.
>> Откако ќе спроведува на сите оние, исто така ќе треба да се имплементираат 1 повеќе функција.
Ова може да биде овозможува на корисникот да го сменат лозинка,
да ја ресетирате лозинката ако тие ги заборавиле - така и за ресетирање на лозинката, а потоа
ќе веројатно исто така, сакаат да ги уредувате регистрирате така што им овозможува да наведете е-маил,
па ако тие ги забораваат лозинка, тогаш тие можат да добијат тоа.
Тие веројатно може да влезе во нивните корисничко име, а потоа е-маил ќе биде испратен до нив
со линк за да може да ја ресетирате лозинката.
Можете да имаат нешто што им овозможува на корисниците да се потврди
секој пат кога ќе купат или продадат нешто,
а потоа, конечно, им овозможи да додадете пари на нивниот вебсајт.
Само да се врати во концептот на контролорите и шаблони малку.
Ќе мора нешто како - така ќе имате контролер тука.
Токму сега, ние сме во потрага по login.php пример.
Кога имаме контролер, во основа тоа се случува да се земе 2 случаи.
Кога имаме контролори, ние сме во ова парче дека ние сме исто така еден вид на справување со
кога имаме форми, како и.
Контролорот во основа ќе имаат одделни акции -
една, ако форма е веќе испратена, а потоа две ако корисникот доаѓа на оваа страница
за прв пат и се уште треба да го внесете тој облик.
>> Одам да скокне до тој случај прво пред да замине до првиот случај на постоење на форма внатре
Еве ние се каже, ако форма е доставен со методот пост -
не грижете се за тоа малку.
Не грижете се за тоа премногу, но да разберат дека во основа на оваа функција се занимава со
дали форма е поднесена или не.
Оваа состојба е точно ако корисникот поднесе форма.
Ако не, тогаш ние ќе сакате да се јавите направат login_form.php, а потоа помине во насловот.
Овој наслов е само основа ќе се појави во заглавието.
Што тоа не е во основа вели дека, во ред - добро, ако корисникот оди на login.php
и всушност не сте најавени, тогаш сакам да ги испрати на страница, која има таа форма
што им овозможува да внесете корисничко име и лозинка.
Тогаш ќе одам да login_form, а потоа дека има вистински облик.
Тогаш, еднаш на корисникот поднесува таа форма, тие ќе го достави до login.php
со методот пост.
Тогаш јас сум всушност се случува да влезат во овој дел од мојот ако-друго јамка.
Тогаш тоа е тука дека ние се справи со вредности внесени во форма.
Тоа е тука дека ќе се справи со нив.
>> Потоа откако ќе се справи со оние вредности - ако сте се занимаваат со -
велат дека ние сме се занимаваат со quote.php страница каде што некој може да внесувате акции што
тие сакаат да се погледне нагоре, а потоа да се види дека дисплеј -
тоа е вид на слични овде.
Тука имаме најава форма - you'd веројатно имаат цитат форма -
но тогаш еднаш на корисникот всушност поднесе таа информација,
тогаш ќе сакате контролорот да помине во друга дефиниција
кои ќе им покаже дека вистински информации.
Па тогаш во право околу тука, тогаш ќе веројатно -
околу крајот на вашата состојба тука - ако метод е еднаква на пост -
тогаш веројатно ќе сакате да го направи друга страница - шоуто понуда -
кој ви праќа на оваа страница - show_quote.php--
а потоа и во таа датотека ќе референтни тие вредности.
Дали тоа има смисла?
>> Имаме контролер, кој во основа се занимава со 2 случаи -
дали сте влегле во форма или не.
Ако не се влезе во форма,
тогаш ќе ви се пренасочува кон таа форма, кои потоа ќе ви стават назад кон оваа страница.
Потоа, штом еднаш ќе имаат информации во контролор, дека телото ќе се справи со тоа
информации колку што е потребно - или угледување вредности за акции,
а потоа, кога веќе е погледна оние вредности и ги има во убаво форматирана низа,
тогаш може да помине таа низа во шаблон страница
која се занимава со Ставање таа информација.
>> Повторно, бидејќи е интернет, тоа ќе биде забавно.
Ние сме надвор од Ц па ние не сме ограничени на ASCII и кои терминал излез,
па се забавуваат со тоа.
Можете да го направите како визуелно, како сакате.
Можете да им овозможи на корисниците да го внесете милиони долари во еден момент,
или да ги ограничи и да се навистина значи и да им дозволиме само да влезат 1 денар во време
или нешто слично.
Дефинитивно не заборавајте да се забавуваат со тоа.
>> PHP код е малку поедноставна по тоа што е малку полесно да планирам вашиот pseudocode
во конкретната имплементација.
Значи, дефинитивно се забавуваат со тоа затоа што тоа е всушност нашата последното парче во CS50.
Со тоа, ова беше можи 7.
Откако ќе завршите со гледањето на Walkthrough и завршил pset,
тогаш тие беа исто така psets, а сега ние сме за да финалниот производ -
откако ќе се добие преку квиз 1.
Тогаш се надевам дека можете да го користите алатки кои што сте научиле од psets -
не само синтаксата, но повеќе апстрактен поим за тоа како да преземе одреден -
допаѓа, сакам да го направи ова и тогаш всушност се спроведува тоа.
Учењето како да се борат, преку синтакса и дистрибуција код.
Читање на другите луѓе код, а потоа толкување дека користењето на постоечки функции.
>> Па, со среќа со последната pset.
Тоа е задоволство да ја води walkthroughs.
Се надевам дека тие се корисни за вас.
Овие беа Walkthroughs, и благодарение многу.
[CS50.TV]