[MUZIKO Ludante] Allison BUCHHOLTZ-AU: Bone, ĉiuj, bonvenigas reen al sekcio. Espereble vi ĉiuj havis grandan Halloween semajnfino, aŭ Halloweekend, mi ŝatas diri, ĉiuj ripozis kaj resanigxis. Kaj dankeme ĝi ne neĝas plu. Estas vere sunplena eksteren. Mi estis reala feliĉaj pri tio. Ne pretas treni mian vintro botoj. Espereble pset6 iris suficxe bone. Se vi laciĝas de C, mi estas feliĉa diri vi faris kun C nun. Ni plene transiro en retejo programado, tial vi laboros en HTML, PHP, eble iomete da Javascript. Mi ne scias kion proksima semajno pset estas, do mi ne povas garantii kion via venonta pset volo esti, sed tiu semajno pset estas CS50 Financoj, kiu estas esence implementando la varo de retpaĝo kiu permesas aĉeti kaj vendi Stock, kaj kontroli ilin. Kaj estas sufiĉe malvarmetaj, ĉar ĉiuj gxi estas dinamike generas. Vi povas havi malsamajn uzantojn kiuj ĉiu havas siajn proprajn informojn, kaj vi tuj estos implementar ĉiuj tion. Ĝi prenas tempon. Mi definitive pensas tio estas pli facile ol C psets, sed prenas pli longe. Vi lernas novan lingvon, PHP, kiu estas tre simila al C, sed kompreneble tuj postulos vi serĉi sintakso kaj kompreni kiel konverti inter la lingvoj. Sed mi ne kredas ke estas io súper koncepte malfacila pri ĉi pset. Estas nur lerni la nova lingvo kaj ekhavi tra ĉiuj tiuj malgrandaj pecoj. Se vi uloj legis tra la specifo, estas sufiĉe longa. Mi pensas ĉi tiu estas kiel 21 paĝoj, se mi memoras ĝuste. Estas longa spec. Do se vi ne legis it-- 22. 32. Wow. Do mi estis for de 50% tie. Do, 32 paĝoj. Do ĝi estas longa. Ekzistas multaj pecoj, sed neniu de la pecoj estu malbona. Estas nur tre. Tiel definitive akiri komencita frue se eblas, laŭ kutimo, sed mi kredas ke devus senti iom bela ol speciale la psets ŝatas refari kaj regrandigi ke estas nur tre malfacile envolver vian kapon ĉirkaŭe. Do kun tio, ni iras plonĝi en. Mi ne havas vian agendon gliti hodiaŭ, sed ni estas tuj estos parolante pri PHP. Mi povas doni al vi speco de kraŝo kurso pri iuj aferoj ke vi volas scii pri PHP. Malsama sintakso aferojn, aferojn elsercxu por. Ni tuj parolus iomete pri SQL. Nur tre simplaj aferoj tie kaj tiam ankaŭ MVC estas Modelo Vidi Controller, kiu Tiel vian pset estas starigita, do kompreni ke verkoj estos súper utila. Bone. Do PHP. Vi ĉiuj devus esti farita iu tre, tre simpla kun PHP, kiu estas ĉi sube afero tie, kie oni prezentis iu formo en la estri tie kiu havis iun nomon, kiun vi enigo, kaj dirus kiel hello, Ben, aŭ saluton, Allison, kaj estus aperigi. Do tio estas vere kio devus jam similis el via pset, en kazo vi uloj volis scii aŭ tute ne kompreni ĝin. Sed ni havas tiujn demandosignojn tie kiuj indikas ke ĉi tiu estas PHP. Ili envolver ĝin, kaj poste htmlspecialcharge, memoru, estas ĝuste, certigi ke vi estas sekura de iu freneza injekto atako aux se iu provas meti freneza malica karakteroj en via nomo kampo, tiu ne plaĉas vian servilon aŭ whatnot. Kaj tiam se ni rimarkos, ĉi HTML formon havis metodon de $ _GET, kiu, se ni memoros nian superglobals de PHP, $ _GET, $ _POST, ni iros al tiuj en iomete. Sed ni scias, ke ni havas iun nomon tien kiu respondas al la nomo ke ni prezentis. Do tio estas nur speco de kiel la tre simpla PHP HTML kunlaborado ke vi uloj havis de pset ses. Sed tio ne vere respondi kia estas PHP. Evidente ĝi estas lingvo, sed ni ne vere parolis pri tio en tiu sekcio, do tie estas iom pli pri kio PHP reale estas. Do PHP estas nur PHP hiperteksto antaŭtraktilo. Ĝi estas fakte konsideris programlingvo ĉar ĝi havas logikon, dum se Ni memoras parolas HTML, Ni nomas ke markado lingvo kontre programlingvo ĉar HTML estas strikte modifi kiom tion rigardos la paĝon. Ĝi simple modifante ĉu io estas kuraĝa, aŭ ĉu ĝi estas formo, elemento, aŭ io simila. Ĝi ne havas neniun logikon. Ĝi ne havas buklojn aŭ kondiĉojn. Vi ne povas eraro kontroli tion. Vi ĉu montri tion en iu maniero aŭ peti tion de la uzanto. Nur tio. Do kun PHP, ĝi fakte ne permesos nin fari cxiujn tiujn pli logika aferojn, kiel validigi la enigo aŭ manipuli ĝin iel. Ni povas kombini ĝin kun HTML, kiel ni ĵus vidis en via lasta pset kaj ĝuste nun, kaj ĝi permesas krei al ni tiujn dinamikajn retpaĝoj. Do se vi uloj ever-- Mi ne scias se vi ŝatas min, sed en meza lernejo ili ni prenos ĉi IT klaso kie ni kreis ĝuste HTML retpaĝojn, kaj ili estis statikaj kaj klaku ĉirkaŭe al aliaj aferoj, sed ili neniam ŝanĝiĝis. Kun dinamikoj, kion ni povas do estas, kiel kun CS50 Financoj, vi tuj havos malsamaj uzantoj. Dependanta sur tiuj uzantoj preferojn, kaj kion ili aĉetas aŭ kion ili vendas cxar iliaj akcioj, vi iras por montri malsamaj aferoj. Do, se estas iuj identiganta karakterizo por via uzanto uzante ĉi retpaĝo, ni povas dinamike decidi kion montri ilin. Ne estas la sama afero por ĉiu unuopa persono, kiu se ni nur havis HTML, la paĝo devus esti la sama por ĉiu ununura persono kiu vizitis. PHP permesas personecigi paĝoj. Kaj tiam ni povas ĉu meti ilin en la sama dosiero, kiu, kiel en la kazo antaŭ ĉi tie, ni vidis ke ni havos HTML ĉiuj tie kaj do ni havis ĉi iom de PHP. Ni povas fari tiel, aŭ kun CS50 Financoj, se vi infanoj rigardis la files-- kaj ni havas tempon demisii tra paro de ili kune ĉe la fino de la section-- ni povas vidi kiel vi povas fakte teni ilin disigas, kio estas fakte bona afero por fari. So. Crash kurso. Ĉiuj rapida simplaj aferoj vi eble bezonas scii por PHP. Deklari variablojn. Ke blua estas iom ĝena, sed espereble vi uloj povas vidi gxin. Se ne, mi devos skribi ĝin sur la kreto tabulo. La deklari variablojn. Unu afero scii estas kiu, kontraste C PHP estas malstrikte aŭ dinamike tajpitaj kio signifas ke vi ne bezonas diru variablo kio tipo estas. Vi povas nur simple diras kelkaj variabloj estas egala al kiom vi deziras ĝin, kaj ĝi decidos la tipo de ke variablo en tempo de ekzekuto por vi. Kiel vi vidas, tiu povas krei iuj tre interesaj aferoj. Sed por plej celoj, vi Ne necesas specifi la tipon. Vi povas, kaj oni povas tajpi eljxetis tion kiel vi normale ne volis vidi se vi volas devigi ŝin esti certa tipo, sed vi ne devas. Oni ne tuj krias al vi se vi nur deklari variablon kaj ne specifas tipo por ĝi. Do se vi ne povas legi this-- mi scias, ke tio ne estis la plej bona. Mi opiniis montrus supren better-- la vojo vi pravalorizi ajna variablo estas ĝuste kun dolaro signo, kio vi volas ĝin nomi, kaj tiam kion vi atribuante ĝin. Do en tiu kazo, estas iuj $ var = 3. Do se ni iam uzi $ var ie, gxi nur esti la sama kiel metante 3 tie. OK? Do, ĉiu variablo, nur dolaro signo ajn vi volas nomi vian variablon, kaj kion ajn vi volas egali. Iom malvarmaj. Malpli por skribi por la inicialización variablo, dekstra? Ĉu tio havas sencon por ĉiuj? Nur rapidan sintakso diferenco inter C kaj PHP. Arrays estas multe pli malvarmaj en PHP. Ni povas doni ilin klavoj. Do la maniero pensi gxi estas tiu, se ni iam volis aliri elemento ene tabelo, ni bezonis scii la indekso de tio, ĉu ne? Do ni scias ke kun C, ni povus aliri la unua elemento farante tabelo krampo nulo, aŭ se ni deziras la unua elemento, tabelo krampo unu. Kaj se ni volis iun en tie, ni povus simple devas persisti tra, se ni fakte konis la indekso. Unu afero kiu estas vere malvarmeta kun PHP arrays estas ke ili estas kio ni nomas asocieca. Do ni povas asocii iu ŝlosilo por iu valoro, kaj ni efektive iri to-- mi montros al vi kiel ni povas uzi tion en dua. Sed esence, se vi iam volas al pravalorizi tabelo tiel, vi havas $ tabelo. Do, en la sama maniero, nur iu variablo kiu ni kreis. Tio povus nomi kion vi volis. Tio povus esti $ ekzemplo. Nur alia variablo. Kion faras tabelo estas la krampo sintakso, ke ni havas cxi tie. Ĝuste kiel normala C. Kaj ni havi iun klavon al iu valoro. Do key1 iras al value1, key2 du iras al value2. Tiuj paroj estas apartigitaj per komo, kiel normalaj matricoj. Tamen. Granda. Klavoj estas laŭvola. Vi ne devas uzi ilin. Kaj se ne, tiam estas simple normala. Demando? Aux io. Publiko: Nu, pri la rajto. Kie estas la memoro devenante? Povas ankaŭ esti la sama kiel [Inaudible] kaj de la pilo? Ĉu tio ankaŭ uzante PHP? Kiel kiam ni kunligas ilin? Allison BUCHHOLTZ-AU: Kun PHP, ni ne emas maltrankviligi kie nia memoro venas de. Ni ne pasigas multan tempo parolante pri tio, tial ĝi ne estas vere io Vi devas zorgi pri. Do klavoj estas laŭvola. En la sama maniero, se vi ne volas fari ĉi asociitaj, vi nur volas normala tabelo kie tabelo nulo estas la unua elemento kaj tabelo estas la dua elemento, vi povas fari ĝin ĝuste kiel vi farus en C. Vi havas kelkajn variablo kiu tuj estos via tabelo, kaj ĝi egalas tiujn krampoj tie. Jes. Publiko: Ĉu ĝi havos la sama punkto al skribmaniero. Kiel mi povas fari kiel tabelo ++, kaj kiu notas al la dua. Allison BUCHHOLTZ-AU: Vi povas do-- Nu, vi povas havi iun iterator, i, ke vi povas fari i ++ kaj fari tabelo de i en la sama maniero. Sed tio estas ĝi. Do, kiel en ĉi tiu kazo, tabelo de 1 egalus 20. Sama speco de indeksado skribmaniero. Tiu estas esence nur implica afero tie, kie diras nulo, nulo al 10, al 1 al 20 2 30. Estas nur implica ŝlosilojn por ĝi. Kio ŝanĝas kun PHP estas ke vi nun havas la povon religi tiuj ŝlosiloj Kion ajn vi deziras. Do unu afero estas tie. Do mi havas nur kelkaj ekzemploj ke mi skribis ĉe vi uloj ĉar mi sentas min kiel ekzemploj ĉiam helpi pli ol nur la abstraktan. Do, en ĉi tiu kazo tie, ni havi iun asocieca tabelo tio estas mia unua nomo, mian familinomon, kaj mi am eĥo, kiu estas ĝuste por ĉiuj celoj ĉi tie tuj presi al la eligo tie. Kaj ĝi diras, OK. Presi la valoro kiu respondas al tabelo en ŝlosila Allison. Kaj mi povas sendi ankaŭ vi uloj ĉiuj ĉi kodo post klaso. Do, kiam ni kuras ĉi, kion fari vi pensas okazos? Kio okazas al elprinti? Publiko: Via familinomo. Allison BUCHHOLTZ-AU: Mia familinomo. Ĝi faras. Rajton tie. Presi. Do se ni devis ŝanĝi tion kaj ni estis aldoni iun alian por nia list-- Tiel diru ni havas Emma tie, kaj ni asocias familian name-- Vidu se mi literumi tiun rajton. Publiko: Yeah. Allison BUCHHOLTZ-AU: Jes. Publiko: Bonan laboron. Allison BUCHHOLTZ-AU: Lovely. Do nun, se ni havas ĉi tie kaj Ni volis trovi vian familinomon, Vi havas ĝin tie. Do vi povas simple pensi pri tio kiel anstataŭante ĉi ŝlosilo tie. Vi simple anstataŭante la indekso. Do ĝi permesas ĝuste serĉi tra tabelo multe pli facila. Vi ne bezonas scii la indekso. Kiel longe kiel ĉi ŝlosilo, kiun vi serĉas cxar ekzistas ie en la tabelo, PHP trovos gxin kaj gxi reiros la valoro asociita kun ĝi. Do ĝi donas multe pli povo per via arrays. Jes. Publiko: Se vi havas du klavojn la sama, ĉu ĝi donas vin eraro? Allison BUCHHOLTZ-AU: Ĝi donu vin eraron, yeah. Ĉu tio faras iom pli sentita por vi uloj? Kaj en la sama maniero, ni havos tabelo ĉi tie ke ne havas neniun klavoj. Ankaŭ tiu estas sintakso ke vi eble volas esti konscia de, ĉar vi devas uzi tion en vian pset. Ĉiufoje vi faras al eĥo, vi havos tiujn citaĵojn, kaj kiam vi raportante parton de tabelo, vi devas havi tiujn frizita krampoj ĉirkaŭ ili. Estas speco de ĝena, sed Vi nur devas fari ĝin. Do ĝuste io por teni en menso. Se vi kuras sur eraroj de, Mi scias, ke tiu ekzistas en mia tabelo sed ĝi ĵetante eraroj en mi, provu meti krampoj ĉirkaŭ ĝi kaj ĝi devus labori. Do en tiu kazo tie, tiu estas normala C tabelo kiuj estas kutimitaj. Havas tri, kvin, ses, kaj ni simple deziras presi la unua elemento, tial tiu devus presi tri. Kaj mi kuris, ĉiuj tiuj, do espereble nenio ŝanĝiĝis. Ni vidu malsupre tie, ĝi simple presas el tri. Malvarmeta. Tio havas sencon por ĉiuj? Asociaj tabeloj. Multe pli malvarmaj ol normalaj matricoj. Tio estas why-- Ĉu David montras vin PHP efektivigo de pset6 dum prelego ĉe ĉiuj? OK. Do, mi montros al vi. Mi ne scias ĝin la t-- Publiko: Li faris pasintsemajne. Allison BUCHHOLTZ-AU: Ĉu pasintsemajne? Publiko: Yeah. Allison BUCHHOLTZ-AU: Yeah. Do Speller povas fari same ses linioj kun PHP, kaj parton de la potenco de tiu Estas ĉi asocieca tabelo kie Vi povas simple ŝarĝi ĉiun vorton en: kaj vi havas ĝin egala al vera aŭ malvera. Do vi povas diri: io. Reiru vortaro en iu vorto, kaj se ĝi estas tie, ĝi revenos vera. Alie ĝi ne trovos kaj ĝi revenos malvera. Do ia aplomba polveretojn. Bone. Do tiuj estas asociaj tabeloj. Ili estas belaj malvarmeta. Mi vere ŝatis ilin. Kaj evidente this-- Ha. OK. Nun ĝi estas laboranta. Eble. OK. Alia afero. Do, kun la egaleco, nur malvarmeta afero teni en menso. Kun PHP, ĉar estas dinamike tajpitaj la tipo povas ŝanĝi depende kiam vi kuros ĝin, kiel vi uzas ĝin. Mi vere havas iom malvarmeta ekzemploj kiujn mi montros vi uloj. Sed == nur kontrolas por egaleco post tipo Ĵonglado. Do, se vi havas iun kiu estas kiel la karaktero 1 kaj numero 1, PHP dirus al vi, ke tiuj estas egalaj pro tio povas malabarismos la tipoj de la du el ili ĝis ĝi estas egala, kiu eble por via kazo estas fajna. Se vi bezonas vidi se ili estas sama speco de valoro kaj la sama tipo, vi volas ĉi ===. Kaj mi ne kredas ke vi havas ajnan kazo kie vi bezonas uzi tiun en via pset, sed por multaj vi, kiuj venos al fari retpaĝojn por via fina projektoj kaj aĵoj, estas bona afero scii ke == kaj === estas malsamaj, kaj estas bona distingo kompreni. OK. So. Foreach maŝojn. Estas maniero persisti tra tabelo. Do, simple ŝatas arrays fariĝis tiel malvarmaj en PHP, via vojo persisti per tabelo, mi kredas, ankaŭ fariĝas multe pli malvarmeta kaj multe pli potenca. Do anstataŭ devi krei iuj por i egalas 0 kaj cuantos, kaj tiam ĝisdatigi ke Mi kiel vi iros tra, Ni havas ĉi awesome foreach buklo. Do jen la norma ĝenerala strukturo de ĉi tiuj du. Do ĉu havi foreach iu tabelo kiel la valoro vi volas persisti kiel. Do tio estas la nomo de la tabelo variablo kiu vi volas referenci, kaj tio estas, kion vi volas nomi tion malantaux la buklo. OK? Do tio respondas al ĉiu elemento de la matrico, kaj vi uzas ĉi tiun valoron ene de ĉi buklo. Mi havas ekzemplon. Mi scias ekzemploj estas tiel bona. Kaj tiel tio estas se ekzistas neniu klavojn, do ĉi tio estas kiel se ni nur havas unu kie la klavoj estas la normala indeksoj pri via tabelo. Aŭ tio estas ankaŭ en la kazo se Vi havas neniun uzon por la ŝlosilojn. Se vi ne zorgas pri la klavoj kaj vi simple volas persisti per la valoroj por ĉiu el tiuj en ajna ordo, ke estas bone. Vi povas uzi la strukturon. Alikaze, se ne estas klavoj, nia $ Valoro simple ŝanĝas $ ŝlosilo valoro. Do ĝi nur ŝanĝas ŝlosila valoro paro. Kaj tiam ni povas referi al $ ŝlosilo kaj $ valoro ene nia buklo. OK? So. Ekzemplo. Fari pli agrabla. OK. Do ni havas ĉi tiu ĉi tie, kiuj havas kelkajn are-- Vi povas ankaŭ Krei tabelo kiel ĉi por havi iun variablo egala kovri kun parentezoj, aŭ vi povas simple fari krampo. Vi devus fari la krampo, sed tiu estas alia maniero por fari ĝin. Do jen ni havas iujn vicojn de tri elementoj de unu, du, tri, kaj ni havas nian foreach. Rimarki ĉi tiu respondas al la tabelo ke ni ripetanta super, kaj tio estas, kion ni nomas ĉiun aĵon en nia tabelo. Kaj ĉio tio faras estas ĝi estas tuj presi ĉiu valoro. Do se ni kuras, ni rimarkas ke ni havas valoron unu, valoro du, valoro tri. Kaj en la sama maniero kiu tipe arrays bezonas esti de unu tipo, arrays ne havas ĉiujn esti la sama tipo tie. Do nun ni havas kelkajn int. Ni havas du kordojn. Do via arrays povas akiri multe pli potenca kaj eble iom iom Messier, depende survoje vi volas rigardi ĝin. Do ni povas ŝanĝi tion por kion ni volas. Ni uzas valoro. Tio estas nur la norma afero ni uzas. Sed, ĝuste grave scii ke ni povas nomas tion kiel nombrilo se ni volis. Kaj tiel longe, kiel ili kongruas supren, Evidente ĉiuj estas feliĉaj. Se vi iam volis kuri PHP kuri iun kiel tiu komando linio vi scias tion tie, vi ĵus faras PHP, kaj tiam ajn dosieron vi volas kuri. Do se vi volas salaton ĉirkaŭe kun PHP, kaj pli logika kaj vi ne vere bezonas vidi kiel foliumilo, Vi povas simple kuri ĝin en komandlinie tiel kaj eĥo presos el kion vi ŝatas. OK. La alia formo, kiun ni havas estas kiel tiu. Do tiu estas kazo kie eble vi volas uzi ambaŭ la ŝlosilo kaj la valoro, Mi konas tiujn estas kiel súper artefaritaj ekzemploj sed mi esperas ke ili faros ĝin iom pli klara. Do jen ni havas kelkajn tabelo denove, sed ĉi tiu fojo, anstataŭ simple havanta vi scias ke ekzistas neniu ŝlosilo. Ni havas klavojn por ĉiu de ĉi tiuj. Do estas gonna esti unu, b respondos al du, kaj c respondos al tri. Kaj en ĉi tiu kazo, se ni skribas gxin tiamaniere: ni havas aliron al ambaŭ ŝlosilo kaj valoro por ĉiu de ĉi tiuj. Do kiam ni kuras ĉi, ni preni ĉiun el tiuj. Do ĝi presas nian klavoj kaj respondaj valoroj. Alia malvarmeta afero estas ke, mi scias diris kiel ĉi tiu ne havis klavojn, sed ĉiam implicite havas ŝlosilo ĉar se vi ne delegi klavo, kompreneble, viaj klavoj estas nur via indeksoj aŭ indicoj do ni povis Ĉiam same fari ĉi tiu. Kiel tiu. Mi presi. Do en tiu kazo, se vi rimarkos, ni havos niajn implicita klavoj de nulo, unu, du ĉi tie. Kaj same pri ĉi tiu, Vi povas ĉiam nur diru r kiel valoro, kaj vi nur havas aliron al la valoro. Vi ne zorgas pri via klavojn, eĉ se via havas klavojn, se vi ne zorgas pri ilin, vi ne nepre bezonas meti ilin en vian foreach buklo. Ĉu tio havas sencon por ĉiuj? Publiko: Ĉu vi ĝuste alvoki klavoj, ankaŭ? Allison BUCHHOLTZ-AU: Yeah vin povus tute fari tion ankaŭ. Reale, atendu. Rezisti. estus it-- No. Se vi volas ke la ŝlosilo, poste Vi bezonas fari ŝlosilo valoro. Publiko: Aldoni valoro. Allison BUCHHOLTZ-AU: Yeah. Kaj vi simple neniam uzas valoro estas ĉio. Publiko: OK. Allison BUCHHOLTZ-AU: Se vi nur meti ion en tie, ĝi tuj supozas ke vi estas parolante pri la valoro, ne la ŝlosilo. Granda demando. Bone. Malvarmeta. Reale, rezisti. Mi vidu kion mi havas. Do antaŭ ol eniri en fosto kaj akiri, mi Nur volas montri vin infanoj iomete pri kio estas dinamike tajpita, kiu estas speco de malvarmeta. Mi havas ĉiujn tiujn. Mi havas kiel kvar ekzemploj tien, kaj mi sendos al vi tiun tutan kodo post klaso. Do jen ni havas kelkajn variablo al. Tio estas nur 1 plus 1, dekstra? Kaj ni tuj presi kion tio egala al, kaj tiam ni havas iun tipon. Kaj iu havas divenoj pri kio entajpi ĝin tuj estos? Publiko: An int. Allison BUCHHOLTZ-AU: Yeah, ĝi estas int. Do ĝi nur aldonas ilin kune. Temas pri int. Ĉiuj bonaj. Do tiu flanko, ni havas kio aspektas kiel kordoj. Kiam ni kuras ĉi, ĝi pensas, io. Vi fakte provas por simple aldoni aferojn. Vi nur ekkonfuziĝis. Do mi simple tuj riparos ĝin por vi. Vi volis diri int. Mi scias ke vi volis diri int. Do ĉi tiu estas unu el la manieroj vi povas vidu, PHP havas menson de lia propra. Eĉ kvankam ni eksplicite diris, rigardu, tiuj aĵoj estas kordoj. Mi volas diri la kordo unu. Sed diras, ho, sed vi provas aldoni ilin, do vi devas signifi estas entjero. Nur fidi min sur ĉi. Do ĝi diras ke estas entjero, kaj aldonas ilin kiel normalan. Do ia malvarmigi se vi iras akiri mallaborema kun viaj aferoj, aux vi volas aldoni ion. Bonega afero estas ke, se vi pensas reen al pset2, iu kiu uzanto inputted, justa, ke ni pensas Estas char aŭ ŝnureto unue. Nun ni ne devas eksplicite diri, aj, klarigu al int. PHP estus nur kiel, oh yeah. Mi scias ke vi signifis int. Silly vi. Vi ne signifas ĉenon. Do en tiu kazo, nun ke ni havas tion, kion ĉu vi uloj pensas ke tuj faros ĉi tie? Ni havas ĉenon kaj int nun. Publiko: Estas ankoraŭ int. Allison BUCHHOLTZ-AU: Estas ankoraŭ int. Kaj la kialo is-- mi metus pli ekzemploj, sed ĉi tiu estas amuza. La kialo ĝi estas faranta estas ĉar estas kiel vi provas aldoni aferojn. Do se vi provas aldoni tion, mi tuj supozus, prudente, ke vi havas ion racia ke vi povus aldoni. Mi nur tuj faros gxin int, kaj Ni nur tuj aldoni, kiel kutime. Kaj tiam la sama vojo, mi pensas vi uloj akiras la ideon. Ni ankaŭ havas ĉi tie, kiu estas nur signojn, kaj ĝi faras la saman aĵon. Ĝi estas kiel, vi stulta uzanto. vi scias ke vi volas int. Publiko: Se ni metas leteron, volo Ĝi faras la [inaudible] valoro aŭ ne? Allison BUCHHOLTZ-AU: Oh, tio estas bona demando. Ni vidu. Nope, ankoraŭ estas int. Do estas iom freneza. Tio estas ĝuste speco de montri vin PHP povas foje kondutas irrational-- Not tute malracia, sed povus konduti en manieroj kiuj vi ne vere atendas. Do, kiam en dubo, kontrolu la tipoj de aĵoj. Tiu funkcio gettype povas esti súper utila. Tipe, se vi faras ion per plusses aŭ ajna matematikaj operatoroj, ĝi tuj supozi ion racia estas nur int. Do, vi havas char 1 aux kordo 1, aŭ la reala int 1 ĝi tuj supozi tion. Se vi volas typecast ion, vi tute povas. Vi povus fari ion kiel duobligi tie, mi kredas. Kaj en tiu kazo, ĝi estas dironta, io. Mi faros ĉi duobla ĉar Vi eksplicite diris ke estas duobla. Vi povas ĉiam eksplicite fari PHP fari ion, sed. Publiko: Atendu, kial estas A plus 1 estas tie? Allison BUCHHOLTZ-AU: Oh. Tie. Estis nur eĥo. Tio estis mia kulpo. Do, vi povas eksplicite diri ĝin fari ion de iu tipo, sed la plejparto de la tempo, ĝi tuj dinamike decidi ke en tempo de ekzekuto. Do tuj subteni irante tra kaj gxi tuj estos kiel, OK. Kion faras la plej senson por tio esti? Cxu tio efektive estus kordo? Cxu tio estos int? Devus esti float? Devus esti duobla? Kaj ĝi decidas ke por vi. Vi povas devigi lin fari kion oni volas, but-- Publiko: Ĉu tio faras pli malrapida? Allison BUCHHOLTZ-AU: Nu, Mi volas diri, C estas tre efika. Mi kredas ke estas sendube pli malrapida pro ĝi havas la procezon kiel okazas. C, mi preskaŭ certas estas rapida. Sed evidente ne estas Multaj malvarmeta aĵoj en ĉi tie ke ni ne devas maltrankviligi. Do, se ni serĉas per tabelo, ni ne devas efektive krei iuj serĉon tra la tabelo. Ni povas simple peti la ŝlosilon kaj PHP prizorgos ŝin. Malvarmeta. Awesome. Aspektas kiel la fino de miaj ekzemploj. Vi uloj neniam irante forgesi tion nun. Vi tuj estos kiel, ho, PHP estas nur kiel tiu panjo kiu estas kiel ne, ne, ne. Mi scias, kion vi volas diri. Mi scias, kion vi volas. OK. Do tio estas, mi esperas, utila por via pset, almenaŭ en la komenco, ĉar vi estas ĉiuj pri kontraktanta kun formoj kaj aĵoj de la uzanto. Do estas du manieroj kiuj ni pasi ĉirkaŭ info kun PHP kaj HTML kiam ni pasas inter tiuj du aferoj. Do ni havas $ _GET, kiu pasis tra la URL, kaj ni havas $ _POST, kiu pasis en la mesaĝo korpon, kaj tial ni konsideras ĝin kaŝita. Sed unu afero por kompreni estas ke neniu el tiuj estas konsideritaj sekuraj. Se vi havas iun kiu estas interkapti la mesaĝoj irante tien kaj reen inter vi kaj la servilo, oni povas ankoraŭ ricevas tiun informon. Ili simple devas rigardi iom pli malfacila. Ĝi ne estas vere that-- estas nur kashita URL. Ĝi estas ankoraŭ en la cxefteksto: kvankam, do se ili havas aliron al tiu, ĝi estas vere nur like-- Estas kiel la diferenco inter io skribata ekster koverton kaj iu estaĵo skribita sur peco de papero ene. Tio ne estas tiel malfacila por malfermi la koverton kaj akiri la paperfolion enen. Koncedita, ĝi estus multe pli facila nur legis la ekstera. Sed tiel estas kiel vi povas speco de pensi tiujn. Nek de tiuj estas vere konsiderita sekura. OK? Koncedita, ĉu ne vere gravas por via pset ĉar vi ne estas kontraktanta kun komercaj sekretoj, sed estas tipe unu kion ni vere ŝatus elstari ĉar homoj opinias, ho, nu, ĝi estas kaŝita. Devas esti súper sekura. No. Ĝi ne estas sekure. Estas nur iomete malpli necerta, mi supozas. Aŭ unsecure. Do ni fakte havas ekzemplon. Kiel vi scias, mi amas instrui pli da ekzemploj. Mi sentas min tiel helpas pli bone. Do, ni havas iom simpla formo tie kiu fakte, se vi uloj estas cxiam konfuzita pri PHP, tio estas vere malgranda, sed php.net estas reale vere bona dokumentado. Mi vere ŝatas ĝin. Mi uzas ĝin por prepari ĉi sekcio, do mi povas veterinaro ĝin por vi. Tiu estas ekzemplo de ili sur kiel $ _POST kaj $ _GET laboro. La sola diferenco inter la du el tiuj, krom kie la informoj estas montriĝas, ĉu ĝi estas en la URL aŭ en la korpo, estas ankaŭ kion la metodo. Do en via formo por HTML-- Ĉi Estas tre simpla HTML formo. Ĉu iu povas diri al mi kion ŝi faras? Publiko: Petu vian nomon kaj aĝon. Allison BUCHHOLTZ-AU: Ekzakte. Do ni havas iun formon agoj. Tio lasas al ni scias ke estas iu akto formo. Kaj kio okazos estas, kiam ni batis Submetu, ĝi tuj nomos action.php, kiu estas kiu tiu estas, kaj ĝi tuj nomas ĝin per metodo de $ _POST. Do en ĉi tiu kazo, vian informo estas kaŝita. kaj estas via nomo, iuj input tipo nomita nomo, iuj aĝo, input type = "text" kiun ni ankaŭ nomas aĝo. Kaj tiam se ni batis Submetu, Submetu vokos action.php. Do kiam ni efektive batis Proponu ni scias ke ĝi eldonis, per, kaj ni efektive vidis tion en via problemo aro kiu espereble ni atingi trairu iomete. Kaj ĉiuj ĝi estas faranta tie estas POST Estas iuj superglobal variablo ke ni parolis dum prelego. Kaj kiel vi povas pensi $ _POST estas ke estas nur asocieca tabelo. OK? Do tio estas iu ŝlosilo, ĉi Estas kelkaj ŝlosilaj, kaj kiom la uzanto enigo iĝas valoro por ĉiu el tiuj. OK? Do se ni devis skribi kion ĉi tabelo efektive similis tuj post ni submetis ĝin, ni havas, tiu estas nia $ _POST, kaj iu tabelo kie ni havas iun nomon. Ni nur diras, ke ni tion faros mian nomon, kaj tiam ni havas iun aĝon 21. Woo. Do tio estas la tuta $ _POST estas. $ _POST Estas ĝuste asocieca tabelo, OK? Ĝi nur diras, OK. Kio estas tio, ke ni petis de la uzanto? Kio estas la variabloj ke ni pasas ĉirkaŭ ke ni petis en tiu formo? Kaj tiam kia estas la valoroj asociitaj kun tiu? Do en tiu kazo, se mi prezentis ŝin kun nomo de Ally kaj aĝo de 21, ĉi tio estas kio $ _POST aspektas. OK? Kaj ĉi tio estas kion ĉi PHP dosiero havas aliron al. Bone? Do en ĉi tiu kazo, tio estas same kiel atingi ajnan alian aĵon de nia tabelo. Anstataŭ indico en nia tabelo, ni havas iun klavon. Do ĉi tuj donas mi la valoro je ŝlosila nomo. Do ĉi tiu tuj estos Ally kaj ĉi tiu rajto tie tuj donos al mi la valoro je $ _POST kie la ŝlosilo estas aĝon, kiu estos 21. Vi tuj estos fari tion sufiĉe. Yeah, el kiu parto? Publiko: Kiam vi estis fingromontrante la malsupran parton. Allison BUCHHOLTZ-AU: Ĉi sube parton? OK. Do, vi komprenas ĉi estas nia HTML formi, kaj ni havas iun metodon $ _POST, kio importas. Tio povus ankaŭ esti $ _GET, sed por tiu celo, Ni nur volis diri estas $ _POST. Kiam ni submetiĝi tiu formo, ĉi tiu estas parton de PHP dosieron kiu nomas. Do ĉi PHP dosiero estas nun tuj ekzekuti donis la informon de nia HTML formo. Do kio ĝi estas faranta estas, kiam ni batita Proponu nian HTML- formo, ĝi estas pasi vin ĉi superglobal, justajxon asocieca tabelo. Ĝi estas tio. Estas nur kiel pasante ke la dosiero. Kaj kion ĝi diras estas, OK, jen $ _POST. Ĝi estas via asocieca tabelo. Ĉu per tio, kion vi volas. Kaj ni diras, OK. Donu al mi la valoro je nomo kaj donu al mi la valoro je aĝo. Do tiuj estas nur klavoj, kaj cxi tiu estas nia tabelo. Ĉu tio havas sencon? Publiko: Mhmm. Allison BUCHHOLTZ-AU: Awesome. Publiko: Se vi havas al reveni al la formo faras ĝi simple skribos sur la datumoj? Allison BUCHHOLTZ-AU: Yeah. Mhmm? Publiko: Kial vi specifi ke ĝi estas int? Allison BUCHHOLTZ-AU: En tiu kazo, la uzanto nur pelante ĝin esti int. Publiko: OK. Allison BUCHHOLTZ-AU: Mi ne scias se estus vere bezonas tion, sed por iliaj celoj, ili decidis ke ili volis esti int. Ili simple typecasting ĝin. Eble ili estas uzanta ĝin ion alian poste. Tio estas nur unu fragmento. Jes? Publiko: Kio se tajpitaj 12, T-W-E-L-V-E, maljuneco? Allison BUCHHOLTZ-AU: Se oni provis tajpi tion kiel int? Publiko: Yeah. Allison BUCHHOLTZ-AU: Mi forgesu kion tiu faras. Mi pensas eble provos konverti la unua karaktero al int, aŭ preni la valoron kaj konverti ĝin, sed mi forgesis precize kion ĝi. Esti amuza afero skribi programo kaj provu. Ĉu kelkaj linioj. OK, do ĉi tiu estas unu el la ĉefaj aferojn vi tuj faros. Mi iras al espereble marŝi tra paro de dosieroj de la pset kun vi uloj. Ĝi aspektas kiel ni tuj havas tempon, do ni povas fari tion. Sed vi estas iranta esti faras multajn aĵojn kiel tiu, kie vi pasante aĵoj de HTML formo en ĉi PHP formo ke estos tiam ekzekuti iu aro de instrukcioj sur la datumoj kiuj estis provizitaj. Tio estas laŭvorte la esencon de via pset. Yeah. Publiko: La tipo = "submit", kiu faras butonon sur la HTML-formo. Ĉu ekzistas maniero por alvoki ke butono ion? Do ĉu vi estos kiel nomo = "submit"? Aŭ ke butono ĝuste tuj estos malplenigi ĝuste nun, ĉar vi nur donis tipo, ne nomon. Allison BUCHHOLTZ-AU: Mi pensas, ke estas nur tuj estos malplena nun. Ni povas definitive rigardi la pset, ĉar ni volas definitive oni rigardas la registri ia afero. Sed jes, vi povas definitive entajpi La teksto, kiun vi volas uzi en via butonon. OK, do SQL. Kiam vi aĉetas kaj vendi akcioj, vi bezonas konservi trako de tiuj. Do kiel ni tuj faros kiu estas kun SQL, kiu estas nur datumaro. Pensu pri ĝi kiel tablo kie vi subtenante ĉiuj ĉi informoj pri via malsamaj uzantoj. Kaj vi uloj estas efektive tuj kreos unu el tiuj. Estas bela malvarmeta. Kaj ekzistas nur kvar ĉefajn aferojn ke vi bezonas scii por ĉi pset, kaj ili estas ĝisdatigo, do vi esence ĝisdatigi la datumojn. Kiu supozas ke ĝi estas jam tie. Se ĝi ne estas tie, ĝi okazas bati vin per eraro, do eble vi volas kontroli. Kaj vi ĝisdatigos on-- mi devus actually- mi havas tempon, Mi skribos kelkaj el tiuj. Mi efektive donu vi uloj estas du ekzemplajn, plena SQL ordonojn, ĉar tiuj estas nur la ĉefa , sed vi povas kunigi ilin kune. Do mi faras tion kaj mi sendas ke al vi kun tiuj notoj. Do se vi volas ĝisdatigi ion, bezonas sciigi kion vi ĝisdatiganta kaj kie vi ĝisdatigi ĝin. Tiel tipa SQL komando estus ĝisdatigo ID kie io egalas ion. Aŭ kiel ĝisdatigo adreso kie ID egalas 3, kaj tio ĝisdatigi la adreso kampo de via uzanto kiu havas ID de tri. OK? Do se vi iras al SQL kaj W3Schools, ili havas timindan ekzemploj. Fakte, mi povus tiri iuj en iomete. Kaj poste enmeti en, vi estas nur enmeto certaj valoroj tie. Do se vi provas krei iun nova eniro, do vi kreas novan uzanton, Vi povus fari enigaĵo en ajn via datumbazo nomata, kaj vi devus havi ĉiuj tiuj valoroj. Tiam vi havas unuarangan, elektu valorojn por vidi. Do se vi provas kontroli por vidu se uzanto ekzistas aŭ vi provante kapti specifan informon pri uzanto vi tuj estos uzante unuarangaj. Kaj do forigi, mi pensas, estas sufiĉe simplaj tie. Vi simple forigi ion de la tablo. Kaj fakte, lasu min reale tiri kelkaj ekzemploj por vi uloj. Ho rigardu, estas mia 61 paĝo. Do se ni iros al W3Schools, espereble ĝi estas supren denove. Jes, Amu ĝin. Ni iru al SQL. Do, tiu estas iu ĉi tie. Do, ĉi tiu estas tre simpla ELEKTU. Viro, mi amas ĉi tiun funkcion. Do, vi povas havi ELEKTU iu kampo de klientoj. En tiu kazo, klientoj referencas al la Enreta datumbazo kiun vi uzas, tiel ajn via tablo estas vokita kaj stelo signifas nur elektu ĉio. Donu al mi cxiujn. Do, mi volas nur doni vi uloj estas paro de ekzemploj de kie tio estas. Do ni devas elekti, UPDATE. Do tie estas speco de ĝenerala sintakso. Do Ĝisdatigu ajn via tablo nomo estas, kaj tiam SET Tie estas kie vi estas efektive iri esti kio datumoj vi ŝanĝas. Do tio povus be-- Let Mi faras ekzemplon tie. Do tiu tuj be-- OK. Do mi kreis iom datumbazo por ni. Ni tuj havos iujn ID, kelkaj jaroj, kaj iuj nomis. Do ID oni tuj estos jaro '15, kaj ni nur tuj faros min. Kiu volas esti la dua persono en nia tablo? Neniu. Mi nur tuj elekti Emma pro Via nomo rapida. Emma, ​​kiu jaro estas vi? Publiko: Kiu jaro? Allison BUCHHOLTZ-AU: Yeah. Publiko: '16. Allison BUCHHOLTZ-AU: '16. Vi simple tuj estos miaj cuy hodiaŭ. OK, do ni havas tiujn du homojn. Fakte, lasu min fari tion. Diru mi aŭdis sian maljustecon kaj mi efektive diris ŝi estas juna jaro. Ŝi '17. Kion ni volas fari ĉi tie, se ni volis ĝisdatigi Emma jaro esti ĝusta uzante tio, kion ni volas fari estas ni dirus UPDATE datumoj super tie. Kaj tio povas ĉiuj esti sur unu linio, sed ekde mi kunpremis pro spaco ĉi tie, Mi tuj skribos ĉi tie. Kaj ni volas agordi. Do tio estas la tablo, ni ĝisdatigas. SET tuj estos kion kolumno aŭ kio datumojn ni reale ŝanĝante. Kion ni ŝanĝas estas la jaro, do Ni tuj diru SET jaro = 16 kaj tiam KIE diras nin kiu uzanto aŭ kio vico ni reale ĝisdatiganta ĉi. Do kie? Ni havas du eblojn tie. Kio estas la du? Tiuj estas solaj, ĉu ne? Do niaj nomoj estas unika kaj nia ID estas unika, do kion estas la du ebloj sed kie ni povus fari tion? Mi donos al vi unu. Ni povus fari KIE ID = 2, aŭ ni povus fari kion Se ni iras demeto paradigmo tie. Publiko: [inaudible]. Allison BUCHHOLTZ-AU: Ekzakte. Do ni povus ankaŭ fari nomo = Emma. Kaj iu el tiuj funkcius. Kaj ni kuris ĉi, ĝi estus kiel, OK. Ni ŝanĝu ĝin. Vi fakte 16, do Nun vi pravas denove. OK, do tio estus súper utila en vian pset kie eble iu decidis aĉeti 100 agoj de Apple, kaj tiam ili estis kiel, estas ŝerco. Mi nur volas 90 kotizoj. Kaj tiel ili vendas 10 el ili, do vi bezonas ĝisdatigi la kvanton de akcioj ke ili havas. Do, ĝisdatigante stokoj, ĝisdatigante tablo. OK. Do jen unu ekzemplon tie. Tio estas la actualización sintakso. DELETE. Oh. Enŝovi en nia alia. Do, tiu ĉi estas tre similaj. Ni povus nur scii, en tiu kazo ni aldonas al iu. Ni povas aldoni Ben tiu tempo. Ni insert EN, kaj ni volas la nomon de nia tablo. En tiu kazo ĝi estas datumoj. Kaj do ni nur volas, vi tuj diru VALOROJ kaj kion vi faros estas, vi vere bezonas certigi ke vi havas ion por ĉiu vico ke vi deziras. Vi nur metis ilin en ordo. Do en ĉi tiu kazo, ni dirus 3. Vi estas 18, dekstra Ben? Publiko: 19. Allison BUCHHOLTZ-AU: 19? Publiko: 19. Allison BUCHHOLTZ-AU: Via jaro '19? Vi diplomiĝis en '18, dekstra? Publiko: Oh. Allison BUCHHOLTZ-AU: Graduation jaro. Publiko: OK. Allison BUCHHOLTZ-AU: Mi ŝatas, estas vi jam planis preni jaron ekstere tie? Do, '18, ni havas Ben. Do en ĉi tiu kazo, ĝi irus tra, ĝi kreus novan eron tie. Malvarmeta. Ne tro malbone, ĉu? Multaj de ĉi tuj esti sintakson por vi uloj. Konceptoj venu, espereble, relative facile. La sintakso estas la sola kiu povas esti iom malfacila. Kaj tiam nia lasta estas DELETE, kaj kiel vi rimarkis, Mi forte rekomendas ĉi retejo. Ĝi estas granda. Ekzistas barelon da aĵoj. Do, en la sama maniero kiun ni havis iuj UPDATE, DELETE estas tre similaj. Anstataŭe ni Forigi de Datumoj. Do en ĉi tiu kazo, nia lasta unu mi skribos ĉi tie. Supozu ke ni volas forigi min. Mi ne povas skribi nun. DELETE el ajn tablo estas en, datumojn. Kaj ekzistas reale tri manieroj ni povis elekti por forigi min. Cxu vi uloj rakontu al mi kion la tri manieroj, kiel vi povus forigi min? ID estas 1, kie ID estas 1. Ni povus fari kie jaro egalas 15, aŭ kie nomo egalas Allison. kompreneble, estas nur tri malsamaj manieroj: ĉar ĉi tiuj estas ĉiuj unika. Tipe en via tabelo, kaj speciale en vian pset, vi tuj metis unu el tiuj kolumnoj esti unika. Ĝi estas probable tuj estos iu unika ID nombro, ĉar se vi have-- reale, ĝi povus reale lasu vi havas du. Mi ne povas memori se ellasos Vi havas du de la sama aĵo. Publiko: tiam estus ŝanĝi sian konduton. Allison BUCHHOLTZ-AU: estus. Ĝi devos kaŭzi konduto kiu estas neatenditaj, ke vi ne povas vere antaŭdiri. Do vi certe havas unu kolumno en via datumbaza ke estos sola, kaj ĝi estas tipe povas agordi tiel ke ĝi estas kiel unika ID, kaj ĝi estos simple ĝisdatigi ĉiun tempo oni enmetas en la tabelo. Ajna tempo vi krei novan vico, ĝi aŭtomate pliigo kaj donu iujn unika ID. Do aludi vian pset. OK. Do kio estas SQL. Do nun ni iras paroli pri La lasta afero, kiu ligas en fakte sufiĉe bone kun via pset, se ĝi irus antauxen. Do MVC, modelo vido adaptilo. Tiu estas vere simple maniero teni aferojn organizitaj. En la sama vojo kun C ni petas vin infanoj krei funkcioj kaj apartaj aferoj el, ĉi tio estas nur maniero apartigi kodo kiam vi faras ttt disvolviĝo. Do ĝi faras tion multe pli eleganta kaj simpligita, kaj cxi tiu estas vere la vojon ke vian pset estas reale starigi, do ĉu vi ŝatas ĝin aŭ ne, vi lernos ĝin, eĉ se vi ne kredas vi lernas ĝin. Sed unu afero estas, ĝi ankaŭ permesas fari multe pli kiel uzanto kunlaborado. Do kiam mi prenis CS50, mi faris retpaĝaro por mia fina projekto, kaj mi ŝatas, mi tenantaj datumbazo ajxoj. Mi tion faros reen fino stuff, kaj mia kompano kiu mi portis kun ĝi Estis tre artsy. Ŝi faras etapo dezajno, kaj ŝi volis fari ĉion bela. Do mi ŝatas, OK. Vi povas prizorgi ĉiuj interfacon ajxoj. Kaj la afero estas, kiel Ni vidos baldaŭ, ke modelo vido controlador permesas tute disigi ke kodo tiel ke mi povus labori en efektivigo niaj paĝoj kaj manipulanta informoj en nia datumbazo: kaj ŝi povis nur fari tion bela, kaj ni ambaŭ tre feliĉaj, ĉar ni devas fari kion Ni ambaŭ volis kaj ni ne devas trakti la alia unu. Do ni pendis ekstere kune. Ni ŝatas eliri. Mi simple ne volis trakti ĉiuj CSS kaj HTML ajxoj. Mi ŝatas, vi faros lin bela. Mi agos kun la datumbazo. Do ni havas ĉi vere malvarmeta, grandaj tableto. Mi amas tabloj. Kaj esence, la modelon vi povas pensi estas nur via datumbazo. Mi estis la modelo persono por mia projekto. Temas pri la stokado de informado kaj organizado ke datumoj. Do estas kio ni ŝatas voki reen fino. Do vi uloj estos kontraktanta kun la SQL datumbazo kaj la datumoj dosierojn. Tio estas via modelo. Via vidpunkto, kiel vi povus opinias, ia sencoplena, estas kion via uzanto efektive vidas. Ĝi estas la interfaco de uzanto. Ĝi estas tiu fronto alfrontas komponanto. Do jen kion mia kompano alvenis al labori en la tuta tempo. Ŝi estis súper feliĉaj. Do jen ĉio de la HTML, kaj ekzistas tre malmulte PHP. Se vi nur parolas pri kio esti montrata al la uzanto, ni parolas pri hiperteksto. Ni parolas pri kiel li aspektas. Ni ne parolas pri logiko, aŭ kondiĉoj, aŭ whatnot. Ĉiuj kiu alvenas manipulita de la regilo, OK? Do kiu manipulas la uzanto petojn kaj ricevas la informon. Do unu afero vi devus scii pri vian pset estas ke, en via opiniojn, io, kio estas reale montranta informoj Neniam esti farante flamo al via modelo. Ĉiuj kiu manipulas en via adaptilo. Via regilo estas mediar inter tiuj du. Ĝi petos la modelo por certaj informoj. Ĝi povas persisti super tiu informoj, elŝeligi kion vi vere bezonas de tio, kion fari kun ĝi, kaj poste pasos sur nur la informo vi bezonas la vido al vi presi ĝin el aŭ vidigi ĝin al la uzanto, OK? Ĉar ni vidas la vido kiel ajn alfrontas la uzanto, do ĝi estos multe pli facile por ili eltrovi, ho, se vi faras iuj nomas al via modelo kaj vi petante al ĉiuj uzantoj kiuj komencas per la litero A, kaj vi faras en via vido, ĉiu kiu povas vidi vian retpaĝon potenciale povus aliri tion. Vi ne nepre volas tion. Vi ne volas ke oni vidu pli en la datumbazo, ol Ili devus esti vidanta. Nur iliaj specifaj preferoj. Do la regilo manipulas tuta de tiu. Do ĉiuj viaj .php dosierojn kiujn ni vidos Vi povas konsideri vian controlador dosierojn. Kaj tie estas kie vi estas vere tuj estos petante tion el via datumbazo, kaj ripetanta aŭ manipulante kiel necesaj antaŭ pasante ĝin por esti vidita. Estas vere malvarmeta pset, en mia opinio. Mi kredas ke estas iom pli kiel momenteto kontento, ĉar vi efektivigu Multaj malgrandaj etaj aĵoj, kaj ĉiu aĵo devus labori sur ĝia propra. Ne volas, fari ĉion kaj tiam vidi ĉu ĝi funkcias. Kiel kun programaro kie vi estas kiel mi estas vere esperante tio Bone, ĉar se ĝi ne estas, ekzistas multaj lokigas povus esti malĝusta. Bone. Nur certigi ke mi diris cxio mi bezonas diri pri MVC. Yeah. Malvarmeta. Do en CS50 Financoj, ni havas nia modelo, kiel mi ĵus diris tie. Ĝi tuj estos MySQL kaj phpMyAdmin. Mi povas definitive tiri tiujn supren tiel vi uloj havis ŝancon rigardi ĝin. Kiel mi diris antaŭe, tio via SQL datenbazo agas kiel via modelo, kaj vi povas sendi kion ni nomas pridemandojn, kio estas ĝuste tiajn aferojn. Tiuj estas nomitaj konsulto. Tiu estas demando, kie vi estas nur demandante vian datumbazon por io, aŭ vi ŝanĝas vian datenbazo iel. Jen ĉio estas. Kaj vi faras tion kun la funkcioj ni donis al vi cxi tie. Vi povas ankaŭ manipuli ilin mane tra phpMyAdmin, kion ni povas definitive rigardu. Mi kreos specimeno datumbazon kun vi uloj. OK. Do, adaptilo. Do en tiu kazo, se vi avizo, tiu estas ĉiu PHP. Rimarku ke estas speco de via ĉefa afero de via adaptilo estas ke ĝi devus esti precipe PHP. Se vi havas HTML en viajn adaptilo, Ne vere certa kio okazas tie. Same kiel mi diris, se vi sukcesas [inaudible] kun HTML, Mi estas vera interesata. Do kion ni havas ĉi tie Estas vi havas iun konsulto. Query estas funkcio kiu Ni konstruas por vi uloj. Estas kvazaŭ envoltorio fari konsultojn vian datumbazon iom pli facila. Se vi ne havas tiun, sintakson por efektive parolas al via SQL datumbazo estus malsamaj, tial ni nur provizi ĝin por vi uloj. Ni ŝatus fari vivon facila. Do en ĉi tiu kazo, vi povas infanoj diru al mi kio estas tiu linio estas faranta? ELEKTU * el iu tablo. Publiko: Elektu ĉiun el tiu tablo. Allison BUCHHOLTZ-AU: Ekzakte. Do ĝi estas dirante al mi ĉiun el tiu tablo. Kaj ĝin stokante ĝin en iu variablo rezulton. Kaj tiu diris, se rezulto estas ne egala por falsa, tiam ni faras ĉiu el tiu. Do, se estas nenio tie, se via tablo de malplena aŭ ĝi simple ne ekzistas, ĝi tuj revenos malvera. Do en ĉi tiu kazo, ni simple farante certa ke io efektive revenis al ni. Kaj tiam tie, ni havas nia granda foreach buklo ke ni ripetanta super niaj rezulto, kaj ni nomas ĝin remi, kaj ni diras redonu ŝablono kie viaj datumoj estas tiu rezulto. OK? Do ĝi estas nur procesante la vico de la rezulto. Alie, ĝi krias. Do, tiu estas ekzemplo de la regilo. Kiel vi vidas, ĉi tiu estas la nur place-- Yeah, pardonon? Publiko: Kial estas tie kaj-simbolo antaŭ vico? Allison BUCHHOLTZ-AU: Kaj-simbolo antaŭ vico. Ni nur ripetanta. Tio estas ankaŭ adreso of-- Publiko: Tiel estas kiel C referenco. Allison BUCHHOLTZ-AU: Estas certigi ke vi estas reale modifi la originalan, kaj ne kopion. Ĝi estas en la sama vojo kun C kie ni preterpasas referenco tien, simple por certiĝi. Publiko: Ĉu ne == anstataŭ ne = en PHP? Allison BUCHHOLTZ-AU: Ne la ==. Publiko: Ĉar egalas en C estas just-- Allison BUCHHOLTZ-AU: Estas nur ne =. Jes, ne. Ĝi ne ==. Ĉar == en PHP kontrolas por egaleco kun Inversigante, koncedita, sed ekstraj kvalito. Do, ĝi ne estas == en PHP. Ĝi estas unu el la malabundaj sintakso diferencojn. Yeah. Do ni nur ripetanta tra ĉiu vico, kaj redonu, se vi infanoj tralegi vian specifon, estas nur iuj aliaj funkcioj kiuj estas fakte tuj prilabori ĉiujn HTML kaj montri ĝin en via foliumilon por vi. OK. Do, ni ŝatas pensi pri via adaptiloj kiel kion pritraktas la negoco logiko. Kiel vi vidas ĉi tie, ĉi tie ni estas preni niajn datumojn de la tablo, ni procesi lin iel, kaj tiam ni pasante ĝin. Kiam ni redonu iuj ŝablonoj, iu ŝablono estas nia vido, kaj ni pasas nur la datumoj kiujn ĝi devus ricevi. Ne ĉiuj datenoj. Nur la datumoj kiujn ni volas ke ĝi akiras. OK? Esence la datumoj post pretigo. Do tio estas la opinio, tio estas sumo ŝablono kiun ni havas, Kaj ĉio tio faras estas, vi povas havi iom PHP en via vido. Oni ne ŝatas neniun PHP vido. Vi devas nur havi tre minimumaj PHP vido, kaj vi neniam devas esti Demandante en via vido. Vi devus neniam parolus al via datumbazo en via vido. Tio estas la granda diferenco. Do kio okazas ĉi tie, ni havas PHP ke estas ripetanta tra la vico. Do en ĉi tiu kazo, ĉar ni estis ripetanta tra ĉiu vico kaj farante ion, tio estis probable kiel du dimensia tabelo kie ni havas iom vicon ke estas, en si mem, tabelo, ĉar ni ripetanta tra ĝi denove. Kaj ni simple presi ekstere la vico nomon, tiam fini ĝin. Vi ne bezonas tion en la foreach. Mi neniam vidis, ke antaŭ la praktiko. Mi nur faras foreach. OK, do tio estas la opinio. Vidu se ni povas promeni tra iomete vian pset. Ni havas 15 minutojn, do certe vi infanoj deziras ke pli ol nur finante frua. Mi vidu ĉu mi povas venigi ĉi supre. Do mi ne scias kiom multaj el vi infanoj malŝarĝis kaj whatnot tamen, sed ni havas salutnomon tie, kaj ni havas kelkajn pasvorton. Kaj bedaŭrinde, dekstra nun la datumbazo estas malplena, do ni vere bezonas krei datumbazon. Nu, tio estas stranga. Ne atendis tion. Teknikaj eraroj. Teknikaj malfacilaĵoj. Ni havas kelkajn pset7. Malvarmeta. Do unu afero vi povas fari estas, kun oni query-- Mi krei tablon. Do ĉi tiu tuj estos users-- kio Vi povas fari ĉi tie estas, se ni havas some-- Vere nun? OK. Evidente mi ne faras tiom varmega. Oh. Mi scias kial. Ĉar mi neniam kreitaj Mia vera tabloj. Do kiam vi unue komencu per datenbazo, vi evidente devas decidi kiuj estas la tion mi bezonas havi tien? Do se ni simple foriras nia datumoj tablo tie, Ni havis iom ID, kiu povas nur resti kun int. Kaj se ni rigardas pli tie, tie estas malvarmeta afero that-- Do indekso. Se vi faras primaria, ĝi faras la kion via tablo organizas, kaj ĝi ankaŭ faras sola. Do en ĉi tiu kazo, ni faros lin esenca, kaj mi tuj faru tiun nomon, tiam ni simple faros gxin varchar de kiel 26 literojn, ĉar tio ne estas? Kaj tiam vi povas iri por savi, kaj tiam se vi vidos, ni havas kelkaj uzantoj tie. Do se ni volas fari enigi, ni povus fari ĝin tiamaniere, aŭ se vi volis praktiko kun via queries-- Ho knabo. Mi ne uzis ĉi eterna. Mi prenos tiun dorso. Vi povas redakti tiun ĉi sur via propra aŭ nur permane enmeto informoj kun iu kiel vi povas ŝanĝi iun ajn el tiuj se vi volis make-- Se vi volas Subite forigi de nomo, vi povas fali, Vi povas fari ĉiujn tiujn aferojn. Se vi bezonas iam permane ŝanĝi vian tablon, Mi sugestas fari ĝin phpMyAdmin kontre provas elkompreni la SQL pridemandojn ĝenerale. Kiam vi unue komenci vian pset, Vi tuj devas labori tie, tiel alkutimiĝi al tio. Kaj kiam vi fakte volas enmeti tion en vian table-- Mi vere scivolas kie tio estas, ĉar there's-- Jen ĝi. Tio estas kion mi volis. Do se vi iras al SQL, vi povus efektive vidas, kiel ni vidas ĉi tie, ni havas SQL pridemandojn. Do se ni volas elekti ion aŭ se ni volas enmeti ion, ni povas fari enigaĵo al la uzantoj, dekstra? Mi opinias ke vi bezonas la backslash. Unu afero scii estas se vi iam uzas tiun, vi devas uzi tiujn reen apostrofoj, kiuj estas tipe, se vi estas sur Mac, dekstre supre langeto. Tiel bona afero scii. Vi povus enmeti en la uzantoj, kaj ni havas niajn valorojn, dekstra? Do ni havas valorojn, kaj niaj valoroj en tiu okazo estus nur, Ni nur havas ID tiel ni povus fari unu se ni volis. Tio estas stranga. OK. Do tio estas nur kiel mallonga uleto kun SQL, sed povus esti pli utila al reale rigardu kelkajn el la dosieroj en ĉi tie. Do iru Elŝutoj. Ho, ne Elŝutoj. Do, nur rapidan walkthrough de kio estas en ĉiu el tiuj dosierujoj. Ĝi inkludas, ni nur devas tion ke agordi vian retumilon, ni havos tiuj konstantoj, kaj ni havas tiujn funkciojn. Se vi estas interesita en iu el tiuj, Mi rekomendas rigardi funkcioj. Unu el ili, kiu estas súper utila, fakte estas ĉi tie, Escorial. Do se vi uzas tion, Ĝi efektive nur elprinti ajn variablo ke vi ŝatas ĝin. Do, se vi havas problemojn imagante kion ĉi tabelo aspektas, aux kion donitaĵoj reale, kiel ĝi estas formatita, ĉi estas granda afero uzi. Speciale kiam vi havas uzanto kun multnombraj stoko, ĉi tiu tuj estos ion grandan uzi. Ĉar ĝi povus esti formatted-- Mi konas almenaŭ por mi, kiam mi faris ĉi pset, estis formatita en maniero ke mi ne tute atendis. Do mi provis persisti super ĝin kaj klopodi manipuli ĝin, Sed mi ne vere kompreni kion mi faras. Do se vi nur renversi ĝin, volo presi gxin por la navegador, kaj vi povas vidi ĝuste kiel ĝi estas formatita. Ĝi devos tipe presi ĝin kiel tabelo kun liaj klavoj kaj siajn valorojn. Do ĝi povas helpi tie. Ĝi ankaŭ povas helpi fari certa, ke vi reale kaptante la datumoj kiuj Vi pensis ke vi estas. Do se vi estus kiel, mia tablo definitive Diras ekzistas uzanto kun tiu ID, sed kiam vi iras al renversi la variablo, ĝi ne estas tie, Vi evidente scias ke estas kie eraro tuj estos. Tiu estas unu el la pli bonaj iloj por depuración, en mia opinio. Kaj tiam tie estas paro aliaj aferoj tie, sed plejparte, jen la Kiun mi volas atentigi vin, ĉar ĝi estas tre utila. Publika, kion ni havas ĉi tie estas, tio estas ĉiuj niaj CSS ajxoj. Tiel CSS tiparoj, niaj bildoj, whatnot. Tio estas cxiuj havajxoj kiuj vi ne devas modifi. Cxu vi uloj pensas se tiu havas aĵojn kiel CSS en la tiparoj, estus tiu modelo, aŭ cele, aŭ controlador? Publiko: [inaudible] Allison BUCHHOLTZ-AU: ĝi volas esti pli de vido, dekstra? Ĉi manipulas ĉiuj aĵoj, kiel aferoj rigardi. Do se ni malfermas ĉi tie, ni vidas ke ĉio tio, kio okazas ĉi tie Estas ni farante ion. OK? Do ĉi tio tre kvalifiki kiel vido de tiu. Do tio estas nur prenante iuj, ĝi estas nomante iun portfolio.php ke ni havas, kaj ĝi estas pasi en titolo kaj biletujo. Kaj ĝi estas simple farante tion. Reale, mi prenas tiun reen. Tio estas controlador, ĉar redonu, memoru, ĝi kapitulacigas la vido. Do portfolio.php en ĉi kazo estus via vidpunkto. Pardonu, knaboj. Portfolio.php tuj estos via vidpunkto, kaj ĉi tio nur via adaptilo por tio. Kaj se ni rigardu ĉi lasta tien, ŝablonoj, ŝablonoj estas ĉiuj viaj opinioj ĉi tie. Do se ni rigardas, evidente ni vidas multajn HTML. Do ĉi tiu estas ĝuste montri al vi kion login paĝo devus aspekti. Vi rimarkos ni havas kelkajn formas grupojn, havas submetiĝi. Jen kiel vi decidas kion montriĝas en tie. Vi havas iun butonon tipo = "submit", kaj tiam vi havas, kion vi volas ke ĝi por montri en butonon. Do jen kiel vi farus montras supren kiel ajn vi volus. Kaj ni vidas tie ni havas iun uzantonomo, iuj pasvorton kaj kiam ni efektive batis Submetu, ĝi tuj estos iu post, kaj tuj sendi al kio? Kio estas la controlador por tiu vido? Kiam ni batis Submetu, kio okazos al nomi? Ĉu ni scias? Estas ĉi tie, do login.php. Io vi uloj estas tuj apliki. Do vi povas diri ĉiam kio okazas al esti vokis post vi batas Submit de tiu unua linio tie. Kia formo ago. Kiam tiu formo estas prezentita, kia ago ni prenu? Ni nomas login.php kaj ni nomas ĝin per tiu metodo de post, kiu havas la kaŝitajn informojn. OK? Do ĉi tio estas via opinio, kaj tiam evidente se ni iris al login.php-- Do ni havas ankoraŭ? Yeah. Do kiel ni vidas ĉi tie, ĉi havas multe pli logika. Ĝi estas ĉiuj niaj PHP tie. Ni provas vidi, ĉu tio estis $ _GET, se ĝi estis $ _POST, validigi aferojn, Demandante, ĉiuj ĉi stuff. Do tiuj estas nur la tri malsamaj aferoj tie. vi ne devas ŝanĝi tion. Vi estos krei tion en ŝablono, eble, sed kiel malproksime kiel HTML aŭ stilo ajn el ĉi tio iras, vi povas lasi ĝin kiel ebenaĵo aŭ kiel komplika kiel vi ŝatus. Iuj homoj akiras vere en ĝin kaj fari iun belan awesome retejoj. Vi ne devas fari tion. Se vi havas tempon, estas vere malvarmeta afero. Vi povas salaton ĉirkaŭe kun CSS kaj HTML kaj akiri multe pli bona sento por tio, sed ne sentas premita por. Estas multe por vi fari en reen fino kun implementando ensaluti, kaj registri, kaj ĉiuj tiuj aĵoj. Do espereble, ke helpas iomete. vi infanoj havas demandojn pri io ni trapasis, ajna aliaj rimedoj? Mi certe sendos ĉiujn mia ekzemplo PHP kodon al vi knaboj, kaj tiam senti liberan preni bildoj aŭ whatnot tio. Ankaŭ estas rete. Vi povas ĉiam nur spekti denove. Do se tio estas ĝi, ĉiuj bonaj? Jes. Publiko: Mi volas nur konfirmi, kiam ni estas faras unuarangan en SQL, La stelo signifas ĉio, ĉu ne? Allison BUCHHOLTZ-AU: Jes. Publiko: Kaj tiam se vi ne havas la stelo, se vi volas gxin porti de specifa vico, tiam vi simple meti la nomon of-- Allison BUCHHOLTZ-AU: La nomo de la vico kaj kion vi volas ke vi volas, ke la valoro de. Publiko: Kaj tiam la dato. Allison BUCHHOLTZ-AU: Kion ajn vi serĉas, jes. En la sama maniero, se vi faras DELETE * el iu tablo, ĝi devos forviŝi ĉion. Do, * estas nur sovaĝa karton por ĉio. Publiko: OK. Allison BUCHHOLTZ-AU: Cool. Awesome. Nu, ili havas grandan lundo, knaboj. Mi vidos vin venontsemajne. Bonŝancon en via pset.