SAM LEVATICH: Bonvenon sekcio por tiu semajno. Mi ne estas Andi. Andi falis malsana hodiaux, kaj mi estis speco de nomita en lasta minuto transpreni. Estas gripo sezono, tiel certigi ke vi estas restanta pura, lavi viajn manojn, kaj manĝante sana por ke ankaŭ vi ne enlite. Sed sen plua ado, ni komencu. Hodiaŭ, ni tuj parolos pri PHP iom bit-- kiom PHP rilatas al HTML, kiel rilatas al CSS, kaj iuj de la TTT aĵoj vi faris sur la lasta farita. Ni tuj paroli iomete pri SQLa kaj kiel vi povas labori kun datumbazoj, kio estas bela kerna ero de P fiksita 8-- P starigis 7. P starigis 7. Kaj poste ni iras paroli iom bita pri kiel vido regiloj labori kaj kial tio estas filozofio malantaŭ iuj moderna retpaĝojn kaj malsama dezajno. Pli malpli multajn tipojn de apps kaj aplikoj vi povus ekspedi abonas tiun modelon, vido controlador kadro, ke vi estos uzanta en P aro 7, do mi paroli iomete pri kial tio fariĝis populara, kial ĝi estas grava kaj bela. Kaj poste mi finfine pluiri al kelkaj konsiletoj pri pritraktado P starigis 7. Kaj se ni havas tempon superflue fine, ni povas vere fari iun labori en tiu kune. Do, PHP. Fakte, vi eble rimarkis this-- vi ne vere devas plonĝi en it-- sed P starigis 6 havis iuj PHP kodo kiu okazas. Kaj ĉar PHP estas C-simila lingvo, PHP, kontraste HTML kaj CSS, estas komputila programlingvo dum HTML kaj CSS estas statikaj. Ili estas markado lingvoj kontraktanta kun stilo kaj vidaj aranĝo. PHP estas la vera interkonsento. PHP havas cikloj, ĝi havas conditions-- ĉiuj kiuj aĵoj estas amuza pri C. Ĝi havas kelkajn aĵojn kiuj estas iom iom pli bona ol C, kiu ni vidos, sed mi pensas ke la plej facila maniero por paroli pri la PHP estas nur plonĝi en. Do mi tuj iros dekstren en la IDE ĉe tiu punkto. La unua afero ni iras fari vere aspektas iomete en iu el la PHP kodo kiu estis en P starigis 6. Do la maniero ke ni faru that-- antaŭe, la maniero ke ni kuradis la servilo por la aparaton estis ke ni devus type-- ĉu uzi via efektivigo aŭ la personaro efektivigo de server.c irante en dosierujo kaj kurante server.c per aŭ ne arguments-- tiel simple nomas ĝin sur la loka gastiganto, kiu estas kion vi probable faris plej el la time-- kaj tiam nutrante ĝin a directory kun kiu por uzi kiel lia radiko kie la retejo volus esti kuri, esence. Ĉi tiu semajno por P starigis 7, kiel granda kiel nia kodo por server.c estas, ekzistas homoj kiuj jam skribis tiujn belegajn aferojn super ĉe CS50 kiuj havas iomete pli funcionalidad, servilan programon kiu estas kapabla trakti iom pli de la kompleksecojn ke ni vidi en ambaŭ P starigis 7 kaj P aro 8. Kaj la vojon ke vi funkciigas la servilo estas por nur tajpante "apache50." Kaj antaŭ ol vi fari ion ajn, Vi volas certigi ke Apache 50 ne jam kurante kiel ĝi estas sur mia komputilo, kiun mi faris por testi ĝin. Kaj vi faros tion per nomante apache50. Ĉesu, kaj vi vidos ke ĝi estas haltanta la retservilo, se vi povas rigardi tie ĉe la malsupro de la terminala fenestro. Kaj tiam simple komenci, ni estas tuj nomos "apache50 komenci." Kaj tiam ni tuj nutri ĝin dosierujo. Nun, ĉar ni volas aspekti en iu de la P starigis 6 kodo ke ni implementado, mi efektive kopiitaj iomete de la P fiksita 6 kodon en mian propran dosierujon, kiun vi povas vidi sur la maldekstra. Ĝi nomiĝas "SECTION8" en ĉiuj majuskloj ĉar mi estas nur tiel ekscitita esti viva-eksudita hodiaŭ. Do se ni kuras ĉi, ĝi devus ĉiuj uzeblas efike. Ĝi diras, OK, nia paĝaro nun disponeblaj ĉe la adreso de la IDE, esence, kiu estas kion vi uzis ĝuste kiel estis en P starigis 7-- P starigis 6. Ĉiuj miaj indeksoj estas unu indekso hodiaŭ. Do ni povas iri al tiu adreso, se vi memoras, per simple alklakante ĉi iom butono en supra dekstra. Kaj vi memoras tiun kodon, kiu okazis kiam vi iris en hello.php. Kaj kion la kodo celas faras estas kiam vi entajpis nomon here-- se vi diras Sam ĉar tio estas mia name-- kaj mi klakas Say Hello, kiam Ni iris al la sekva paĝo, tiu nomo estis supozita esti montrata. Ĝi dirus, "Saluton, Sam" aŭ "Saluton," kiel ajn vi metis en ĝin eĉ se ni iris al tute nova retpaĝo. Kaj tiu estas la speco de afero ke PHP povas fari por vi. PHP povas pasi datumoj inter du retpaĝojn. Tio estas plene malsama paĝo. Vi vidos la titolo estas "saluton" tie. Fakte, ili havas la sama titolo, sed mi promesi ili estas malsamaj ttt paĝoj, se ni rigardas la fonto. Kaj vi povas transdoni la datumojn kiuj estas eniris en tiun tekston kampo, vi submetas ĝin al la sekva paĝo kiu estas estanta vokita ĝis, kaj tiam ke datumoj povas cxi tie, en ĝia nuna formo. Nun ni ankoraŭ ne implementadas tiu mem, kiu estas kion ni tuj faros nun al ia akiri guston por kiel PHP laboras, sed la ŝlosilo ideo estas ke PHP-- vi povas ia rigardante ĝin kiel funkcio. Iu kiu PHP povas lasi vin ja estas ĝi povas preni parametroj ke vi enigo en HTML paĝon tra la uzo de PHP kaj formoj, kaj ĝi povas superi tiujn kiel parametroj al la sekva paĝo kiu ŝarĝas supren. En tiu kazo, ni ŝarĝas supren ĉi paĝo kun la "Diru saluton" butonon. Sed nuntempe, mi efektive forigita iom de tiu kodo en la hello.php kiu estis kuri kiu fakte montranta la "saluton, mondo "aŭ" saluton, Sam "aŭ "saluton," kio ajn estis nur enigo. Do por ĝusta nun, ni estas faros tion, esence. Ni tuj rekrei kaj Ankaŭ aldonu iom pli funcionalidad, fari iomete pli kun ĝi, vidu kion PHP estas vere kapablaj. Do unue, ni parolu pri dosiero, hello.php. Do se ni zomi en iom bit-- kaj nun mi estas ia provas rulumu ĉiuj la vojo around-- tie ni iras. Vi vidos ĝi nomiĝas hello.php, sed la sintakso de ĝi aspektas kiel HTML-dosieron. Tiu estas ĉar la fakta PHP en la dosiero estas ĉiuj tiuj senmoviĝita inter demandosigno-tekstkursoran blokoj. Ĉio tie ĉi estas konsiderita PHP kodo. Kaj vi rimarkos ke kiam mi faris komenton, vi vidos la familiara du antaŭen slashes. Kaj se vi memoras, en HTML, se mi tajpas komenton, ĝi aspektas ion pli proksiman al tiu, kiu estas komenton en HTML. Do vere ĉiu inter tiuj du angulajn krampojn nun PHP kodon, kiun estas reflektita en la fakto ke tiu malgranda komenton simbolo fresxecon komenton. Do ĉiufoje vi skribas PHP kodo, eĉ se estas neniu HTML- kodon ekster ĝi, ĝi estas ĉiam tuj estos enmetitaj en tiuj angulajn krampojn kun demandosignojn. Vi povas ordigi de pripensi it-- kiel ĉio de la kodo kiu kuris en via C programoj estis enfermita en int ĉefa, malplenon, krispa krampoj, fino krispa streĉa komunikaĵo. Kaj vi vidos buklaj krampoj en PHP, tro, sed ĉi tiu estas speco de kiel la ĉefa metodo de PHP. Do nun, kiel ni faros ion en PHP? Nun, PHP estas programlingvo lingvo kiu estas tre C-simila, sed operacias en la reto. Do unu afero vi immediately-- unu el la unuaj aferoj vi vere faris kun C estis vi presitaj aĵoj ekstere, dekstra? Do en C ni faradis kun printf funkcio. Ni donis ĝin ĉenon, probable kun nova linio, kaj tiam ni finis per punktokomo. Do la maniero ke ni tuj faros tion en PHP-- ĉar ĝi ne estas sufiĉe printf. Estas iomete da malsama sintakso. La maniero kiu ni presi aferojn en PHP estas ni diras, "eĥo saluton" aŭ "eĥon" ajna vorto. Kaj kiu havas la efikon de farado printf kun ŝnureto, "saluton." Kaj ĝi aldonas la novan linion al ĝi. Do ni nun faru sure-- Mi malzomi denove iom bit-- ni certigi ke ke kodo laboras ĉar ne povus tre bone esti cimo en tiu kodo ke ni devos pritrakti. Do la servilo estas jam funkcianta. Do se ni rulumu reen malsupren al la fundo, Yup, la servilo daŭre kuras. Do se ni nur tap sur tiu iomete dekstra here-- welcome-- ni devus get-- granda. Ni ankoraŭ havas la familiara "Diru saluton" dialogo, sed kiam mi tajpas "hi," ni vidos ke la teksto "saluton" ja presita el, kiu estas ĝuste kiel ni atendis ĉar eĥon en PHP estas ĝuste kiel printf deklaro. Do reen al la kodo, kiel en P starigis 6 faris la dissendo kodo vi estas provizitaj fari ĝin tiel ke PHP volus eligo Jenon vi tajpitaj sur la antaŭa ekrano? Kaj al ia ekzameni kial tio okazas, ni estas tuj iras en index.html, kiu estas la origina dosiero, la dosiero kiu aperas sur tiu ekrano kun la "Diru saluton" butonon. Vi rimarkos ke estas tuta klasika aferoj ni venis atendi de HTML tia kiel tion, tiuj etikedoj enfermitan en angulajn krampojn, kiel PHP sed sen la demandosignojn, kiu indikas specialan aferon al HTML. Ni havas titolon, kiu estas "saluton." Kaj vi rimarkos ke kiel ni vidis, la titolo estas "saluton" en ambaŭ kazoj. Ni ŝanĝi ĉi tiu al "diri" nur tiel ni povas distingi nin, kie ni estas. Sed ni havas korpon. Kaj tiam la interesa malmulta, la biton kiu montras supren en la HTML, estas tiu formo elemento. Kaj do ni havas formon. Kaj tiu estas la ŝlosilo. Jen kiel ni laboras kun PHP. La ago de parametro formo diras ke hello.php estas kion ni tuj sendos la valoroj en tiu formo. Tie estas kie ni pasante la parametroj, por tiel diri. Vi rimarkos alia afero ĉi tie estas ke la metodo estas "akiri". Ekzistas du primaraj metodoj per kiuj volo esti uzante PHP pasi datumoj inter websites-- retpaĝojn, rather-- en tiu tasko. Kaj tiuj metodoj estas "akiri" kaj "post." Ekzistas kelkaj subtilaj diferencoj inter GET kaj POST ke ni ricevos into-- ni estos "get" en, se vi volas. Sed efike kaj intencoj, get kaj post estas ambaŭ ĵus manieroj vi parametri kun iomete malsamaj ekzekutoj. Por nun, ni tuj uzi akiri ĉar akiri estis kio estis uzata origine en la PHP-dosiero de P starigis 6. Kaj fakte, se ni eniros kaj rigardi antaŭ ni redaktis ion alian, Mi tuj diru hi to-- kio estas via nomo? Publiko: Elliot. SAM LEVATICH: Oh, Gosh. Mi ne scias kiel literumi tion. Ĉu vi povas literumi ke estas por mi? Publiko: E-L-L-Mi-ho-T. SAM LEVATICH: Mi-ho-T? Publiko: Yeah. SAM LEVATICH: Perfekta. BONE. Mi supozas Mi konis kiel literumi tion. Pardonu pri tio. Sed se ni diros "Diru saluton," ĝi estas ne ĝi ne tuj aperas sur la ekrano tamen, cxar ni modifita la kodo iomete. Sed se ni "Diru saluton" - Bone, do "saluton" estas tie. Sed se ni prenas pli proksiman rigardi la URL mem, Ni vidos ke ĝi finas kun hello.php? nomo = Elliot. Do, tio estas maniero de komuniki al la sekva retpaĝo la parametroj kiujn ni pasis. Ni diris nomo = Elliot. Kaj tio estas finfine kiel P starigis 6 Montrita la variablo kiu ni pasigis en tra la formularo. Kaj tiu estas iu kiu estas propra al get peto. Al get peto faras la parametroj konata en la URL de la retejo. Kaj vi memoras, ankaŭ, en P starigis 6 ke vi devis skribi funkcion kiuj komercis kun la fakto ke ĉi query string povus ekzisti post dosiero. Tie povus esti demandosigno sekvis per esence ajnan nombron de karakteroj. Kaj tio estas ĝuste kio okazas tie. Kaj la kialo vi devas analizi ke en via efektivigo de server.c en P fiksita 6 estas tiel ke vi povus diri la PHP kodo kiu NAME = Elliot. Vi bezonas por povi analizi, ke el la URL por ke la PHP-dosiero en demando sciis kio ĝi estis pritraktas. Do espereble tiu donas la motivación al server.c nun ke ni translogxigxis eksteren de C en PHP. Do ni vere temigi aliranta la aferoj pasis tra get peto nun ĉe tiu punkto. Mi tuj savi ĉi. Ni ne ŝanĝis nenion. Ĝi aspektas kiel ni hvas enmetkampo. Ni opcio iuj propraĵoj, kiel ni povas fari HTML. Tiuj estas simplaj aferoj. Ni ne bezonas tiujn. Sed ni havas autocompletar for, kiu esence says-- vi scias, kiam vi tajpas aferoj en la retejo, kelkfoje ĝi klopodas plenigi ke en por vi. Do ĝi estas bela afero. Ni volas elŝalti ĝin tiucele. Tio estis CS50 decido. Do ni povas forigi, ke se ni volis. Autofocus nur puŝas la kursoro en la formo dekstre komence. Denove, ne tro grava. Sed nomo = "nomo" - ĝi estas iom malfacila ĉar ĝi estas nomo kaj nomo. Sed ni povus jam ŝanĝis ĉi al io alia. Kaj fakte, tio estas kion ni faros nun. Ni diru "persono", kiu Estas ia kiel nomo se persono estas difinita per sia nomo. Do ni fermu, remalfermi ĝis nia retejo ekde nia servilo daŭre kuras Apache 50, kaj ni diru, saluton, jen Elliot denove. Kial ne? Saluton. Kaj se ni iros tien, ni vidos tiam anstataux nomo = Elliot, ĝi diras personon = Elliot. Kaj tio estas rekta rezulto de la fakto ke ni ĵus ŝanĝis nomon = "persono." Do en eniga elemento de HTML formo, la nomo kampo estas la identigilo por la parametro ke tio esti pasis. Estas kiel se vi kreas funkcio "aldoni" kiu portis en du entjeroj kaj vi diris int a kaj int b. Tio estus nomon, kaj se vi volis alian formon, kiu ni povas fari nur kopiante kaj interglui, tiam ni havus nomon b. Do nun ni havas du parametrojn kiuj estas trapasis atingi la najbaran website-- la sekva retpaĝo, hello.php. Kaj ni povas reale vidu ke denove se ni volas. Tiu estas la plej facila maniero trakti la ttt kodon en la IDE, esence. Vi funkciigi la servilo, akiri ĝin kurante, kaj tiam ĉiu tempo vi fari kelkajn ŝanĝojn, ĝuste Fermi ke dosiero nur por esti sekuraj. Premante la butonon Estas iom malfacila ĉar ĝi povus ŝargi pli frua versio, ne la plej ĝisdatigita unu. Kaj tiam vi simple alklaku vian butono denove, popmuziko dekstra up-- ho, kaj nun ekzistas du formoj. Kaj do se ni tajpi unu afero en ĉiu one-- "jason Hirshhorn," por instance-- ni diras saluton. Ni rigardas supre ĉe niaj parametroj. Ĝi aspektas kiel ni havas, kiel atendis, al = jason kaj b = Hirshhorn, kiu reprezentas la du parametroj ke ni pasis por ĉi tiu funkcio. Do nun ni vere akiras efektivigado ke funcionalidad kiu ni havis en P starigis 6. Do nun ni nur eĥanta saluton. Kaj tio ne tre utilaj. Ni volas eĥon iu variablo kiu estis pasita al ni. Kaj ni konas la nomon de tiu variablo. Ni havas kaj ni b. Do ni povus elekti eĥi ĉu unu. Sed kiel ni aliras gxin? Nu, estas iuj tutmonda variabloj en PHP. Kaj mi tuj skribos ilin en komentoj ĉi tie. La du plej gravaj estas get kaj poŝti por niaj celoj nun. Tio estas la sensilo aŭ, teknike, la vortaroj kie nia variabloj kiuj ni estas pasante al la sekva retpaĝo vivas. Kaj ni baldaŭ vidos kiel uzi ilin. Alia mallonga noto pri PHP kodo kaj iuj specifaj detaloj de it-- en C, deklari variablon aŭ uzi variablojn, vi unue devis deklari ilin. Kaj kion vi devis fari kiam deklaris ilin estis diri int a aŭ char b. Vi devis deklari la tipojn de tiuj variabloj antaux vi kreis ilin. PHP-- vi ne bezonas fari ion ajn tian. PHP ne petas la tipo de variablo. Kaj la vojon ke vi krei variable-- prefere ol diri int, char, ĉenon kiu estas vere char *, kiel ni know-- prefere ol faranta ĉiuj ke, ĉar ĉio estas de la sama tipo, typeless, ni povas nur uzi unu signo, kiu estas la dolaro signo. Kaj vi vidos ĝi estas jam krevanta supren, iom autocompletar aferojn. Kaj ĝin dirante ke _GET kaj _POST Estas du ebloj kiujn mi havas disponeblaj al mi. Iuj de ĉi tiuj aliaj aferoj estas aliaj tutmondaj variabloj en PHP ke vi estos uzanta super la kurso de P starigis 7. Nuntempe ni tuj temigi GET kaj POST. Sed tio estas helpema afero ke la IDE faras kie iam vi tajpis en tiu dolaro signo, gxi devos komenci plenigante en tutmonda variabloj aŭ variabloj vi jam difinita. Do se vi volas difini ŝanĝiĝema nomita "string" Vi nur povus agordi ĝin egala al "hi." Kaj ĝi estas resume tiel simpla kiel tiu. Kaj tiam ni povus fari io kiel "eĥo $ ŝnuro." La IDE estu ĵetante iuj eraroj se mi faras ion malĝustan, Tiel espereble mi faras ĉion ĝuste. Sed eraroj ĉiam ja ekesti. Alia malfacila afero pri PHP estas ke ĝi ne estas kompilita. Do kun C programoj, vi farus la ĉiutaga rutino of-- esence, vi farus redaktoj por via kodo, oni kredus savi gxin kaj tiam vi farus fari, kie konsiston estis la paŝo kiu nomis la kompililo, tin, fari vian kodon, ĉi tiu teksto fajliloj, en plenumeblan. PHP estas C-simila, sed ĝi estas ekzekutitaj sur la muŝo fare via retumilo. Do ne estas maniero de scii. Faru ĵetus tiuj helpema erarojn, ĉu ne? Estus kiel vi ne deklaris tiun variablon antaŭ vi provis uzi ĝin. Vi faris ĉion ĉi malbona stuff-- segfault, segfault, ĉiuj tia amuza fojojn kiu venis kun ŝminko. PHP estas duobla-ĉirkaŭtranĉita glavon ĉar vi ne ricevos tiuj eraroj, sed tio ankaŭ signifas ke vi ne scias vere kio okazas kun via programo se vi nur kuri ĝin kaj ĝin ne funkcias. Sed la debugger devus atentigi kelkaj espereble helpema etulojn sintakse ke vi povas ripari. Do nun, se ni transiru to-- diri, ni fermos tio. Remalfermi. Kaj ni estas reen ĉi tien. Do ni hvas ŝanĝiĝema kaj ŝanĝiĝema b. Kaj tiuj lin ne finfine gravas. Ni ilin vokos h kaj g cxar neniu aparta kialo. Kaj ni diras saluton. Nun ĝi aspektas kiel niaj kordo "hi" estas ja printado. Ni kreis variablon vokis "kordo," agordi ĝin egala al "hi." Rimarku ke ni ne devas fari malloc aŭ fari karaktero tabelo. En PHP, ĉar variabloj estas typeless, ŝnuro Estas la sama kiel char por ĉiuj intencoj kaj celoj. Tio povus esti "hi." Tio povus esti nur la karaktero k. Tio povas esti numero 1. Kaj ĝi ne gravas. PHP ne zorgas pri la tipo de via variablo. Aŭ, ĝi faras zorgo. Ĝi zorgas kiam vi provas kaj fari aferojn kun ĝi, sed ne gravas en la deklaro paŝo. Kaj kiel vi povas en C, oni povas deklari kordoj en la pilo kiel ĉi kvankam dirante "stako" estas iom bita de potenciala malĝusta kiam ni parolas pri PHP. Sed ni ne devas zorgi pri tio. Do ni havas nian kordoj "hi", kaj ni eĥon kordo. Do nun ni diskutis variabloj. Do nun ni bezonas paroli pri GET kaj afiŝi kaj elfari la fina afero tio bezonis por vere atingi ĉi savkopion al la funcionalidad de la P starigis 6. Do ĝuste nun ni estas eĥigante la kordo, sed ni ja havas tiujn variablojn akiri kaj afiŝi. Kaj ĉar ni estas uzanta la metodo akiri, ĝi Ŝajnas nature ke nia variablo kiu ni interesiĝas, ambaŭ a kaj b, lokos en la tabelo aŭ vortaro, teknike akiras. Do se ni starigis eksimilas ĉi kun via groups-- mi premis eniri kaj li ne ŝatis it-- sed cxi tie ni akiras. Kaj foriros jam ekzistas. Do ni jam povas komenci al aliro iuj de la elementoj de GET. Se ni ricevas, ĉi sintakson por arrays en PHP estas tre C-similaj. Ni havas niajn du rektaj krampoj. Do se ni diras akiri en normala tabelo, ni povus aliri la nula indekson, la unua indico. PHP estas nulo indekso. Ni povus diri nul, unu, two-- stuff kiel ĉi. Kaj mi estis dirante ke akiri estas teknike vortaron. Do kio PHP faras sub la kapuĉo, kiu estas iomete pli bela ol C, Estas jam donas al vi kelkajn vortaro funcionalidad, kiu Estas vere hash tabloj, aŭ provas, supozeble. Aŭ, teknike eblis provi ankaŭ. Sed PHP estas implementando hash tablo, Kiu formas efikan vortaro. Kaj do ni scias la nomon de nia varia, dekstra? Ĝi estas aprobotaj en La serĉomendo kordo per PHP. Ni havas = h kaj b = g kie kaj b estas la nomoj de la variabloj. Do la modo kiun povas aliri la valoron kiu respondas al la klavon en nia vortaro estas nur dirante _GET_GET ["a"]. Do nun ni havas _GET ["a"]. Kaj se ni nur anstataŭi ene nia eĥo, se ni eĥon _GET_GET ["a"] - kaj ni vidos se la erarserĉilo ĵetas ajnan eraroj pri this-- ni ŝparos tio kaj fermi ĉi ekstere. Malfermu ĝin. Do ni nur faras rajton nun, do b ne gravas. "ŝi" kaj "li" - "Hum". "ŝi" kaj "hum". Sonas bone. Kaj presita eksteren "ŝi," kiu estas freneza. Sed tio estas ĝuste kion okazis en P starigis 6. Esence, kion P starigis 6 Estis doing-- eĥo saluton, name-- kie havis ŝanĝiĝema nomon kaj ĝi simple petas ke vi tajpu en tiu peco de teksto. Ekzistis ankaŭ kelkaj aldona kodo kie inkludis se deklaroj, kion ni povas fari nun. Ni povas diri se ekzistas, kiuj estas funcionalidad ene PHP, _GET Kun la substreko, "nomo" - kiu estas esence dirante: "se nomo estis plenigita en" ĉar ni povus ĵus klakis la butonon sendi la formularon sen tajpi ion en tiun kampon. Kaj ni envolver ke en nia amika buklaj krampoj. Ni povas havi alia aserto. Kaj jen ĉio ene de la PHP angulo krampo, demandosigno, angulo krampo, se vi volas. Nun ni vidos se tio funkcias. Mi tenas atendante ĝin elpurigi kaj crap ekstere sur min, esence, sed ĝi havas ankoraŭ ne. Eble nun ĉar mi parolis pri. Jes. Ĝi faris, fakte. Do, nenio estas aperantaj. Tio estas ĉar de io malĝusta ke mi skribis en la PHP-kodo. Mi menciis la elpuriganta estas malfacila ĉar en PHP, ni ne kompili ĝin anticipe kaj la tradukilo ne ŝatas, jen kien viaj eraroj estas. Sed kion ni povas fari is-- fari homo memoras kiamaniere rigardi la malsamaj reto petoj ke PHP-- aŭ ke retejoj sendu? [? Malin?] Faris tio en prelegi foyi. Vi memoru kie iras trovi la malsamaj ŝuldoj kaj 200 Oks, ĉiuj tiuj kodoj kiuj estas senditaj tra HTTP de retpaĝo al retpaĝo? Ĉu iu memoras kie iras fari tion? Publiko: Paĝo Fonto. SAM LEVATICH: Paĝo fonto. Ekzakte. Se vi iras al Paĝo Source-- perfekta. Do Paĝo Fonto tiras supren la inspektisto. Kaj mi uzas Safari. Multa vi probable esti uzante Chrome aŭ Firefox. Sed tiel longe kiel vi estas en ajna moderna browser-- kaj bonvolu sekvi kune se vi volas. Vi povas tajpi tiun kodon aŭ nur rigardi en la P aro 6 Gvidlibro por iuj similaj aĵoj. hello.php estas kio ni estas aktuale prilaboras emulando. Do estas diversaj langetoj. Ni povas rigardi ĉiujn rimedojn. Ni povas vidi la fontkodon. Do aspektas kiel ĝi ne preteriri korpo en la fino. Ĝi trovis eraron en PHP kaj ĝi haltis ŝarĝante la tuta retpaĝo. Ni eĉ ne havas finon etikedo por HTML aŭ nenion. Kaj se ni rigardas la reto, ni povas vidu ke ni estas sendis peton. Jen la domajno. Jen la adreso. Estas dokumento. Ni uzas la get metodo. Kaj ĝi estas ruĝa. Aŭ, ĝi estis ruĝa kiam mi ne selektante ĝin. Kiel mi unselect ĝi? Nu, ĝi estis ruĝa. Lasu min refreŝigi. Jen ĝi. Nun estas ruĝa. Do estas ruĝa, kio signifas ĝi malsukcesis, kio estas malbona. Do ni ekzamenos kial ĝi malsukcesos. Do ĉiuj ke la fonto povas Paĝo esence diri al vi estas via afero ne funkciis, kiu jam povas vidi. Do ideale estus esti pli utila ilo. Kaj estas kelkaj retumilo etendoj ke vi permesas elpurigi PHP, sed ni ne tuj skribos barelon de PHP, do ĝi estas probable simple bona rigardi tra via kodo singarde kaj nur certigi ke ĝi ne faras ion alian. Do ni vidu se la formato de tiu se aserto estas kie la problemo estas. Mi volas ŝargi tiun dorso supren tie. Saluton, hi. Do tie estas problemo tie. Do por ĝusta sintakso de PHP, PHP tuj esti C-similaj en kiu vi vidos cikloj. Vi vidos se deklaroj. Vi vidos ĉiujn tiujn amikojn ke vi familiarizarse kun super la kurso de tiu CS50 semestro. Sed la plej bona maniero por malkovri kiel fari ion en PHP estas al google ĝi aŭ rigardi ekzemplojn de PHP kodo ĉar vi konas la funcionalidad. Vi scias kion vi povas fari kun la programo. Vi povas buklo. Vi povas buklo kiel multaj tempoj kiel vi deziras. Vi povas buklo en ĉiuj specoj de malsamaj manieroj. Vi povas krei funkcioj. Vi povas krei funkcioj kiuj vokas aliaj funkcioj, funkciojn kiuj nomas sin. Kaj vi havas nomojn por tiuj konceptoj. Vi havas rekursio, loops, se, alia kontrolo fluas. Kaj tial Google estas via plej bona amiko. Eĉ diri, "PHP se deklaro "kaj tie denove esti tunoj de artikoloj kun respondoj al aliaj homoj kiuj havis similajn demandojn al vi, kiu estas nur komencanta per PHP kaj estas scivola pri sintaksa afero. Ĉar ni havas la lukson de esti povis rigardi la kodon en P aro 6, ni fakte tiri ĝin kaj vidi ke OK, ĉi tie estas io interesa. Do tiu estas kio vere similis en P starigis 6. Do se ni trairi ĉi, ni povas vidi ke ni venigis plurajn tiuj malgranduloj PHP-kiel demandosigno bitoj. Kaj estas ne frizita krampoj. Ekzistas dupunktoj. Kaj estas krispa krampoj en PHP, sed ĉi Estas formato kaj maniero de farado PHP kiu funkcias bone kun HTML ĉar kiel vi vidos, ni fermante deŝiri tiujn PHP bits-- la elses kaj la oj kaj ĉiuj that-- kaj tiam ni intercalando HTML ene ilin dum daŭre sekvante la kontrolo fluo elmontritaj de PHP. Do mi simple tuj Rapida promeno tra tiu ĉar ĝi estas multe da la sama konceptoj kiujn ni faris antaŭe. Ni havas se ne malplena, krampoj, _GET_GET ["nomo"]. Tio estas tutegale stuff. Ni uzas la _GET vortaro ke PHP sendas sur peto de formoj, ĉar ĝi estas la parametroj de ago, kaj la metodo estas akiri. Kaj tiam kiu finiĝas tio. La dupunkto estas signifier al nur faru ĉi se la se aserto taksas al vera. Estas kiel krispa krampoj. Kaj fakte, ĝi estas krispa krampoj en aliaj lingvoj kiel Python, kiun vi eble renkontos se vi nur fari tion por via fina projekto. Kaj tiam ĉi tiu linio, saluton. Tiam ni havas tiun strangan aferon. Ni havas pli krampoj. Mankas HTTP there-- aŭ PHP, pardonon. Sed estas egala signo. Kaj tiam ni havas funkcion, htmlspecialchars (_GEThtmlspecialchars (_GET ["nomo"]). Tio estas ia kiel pli progresinta versio de eĥo. Kiel ni eĥon kiel maniero presi aferojn en PHP. Tiu estas funkcio kiu estas difinita en PHP kiu pritraktos kelkaj pli aĉa karakteroj kaj bajto valoroj ke vi povus pasi ĝin. Ĉiam plej sekura uzi tiun. Sed eĥo faros la laboron nur fajna se ni ne kontraktanta kun io tro aĉa. Kaj tiel tio ĝi havas la saman efekto de esence, ĉi aĵoj intere la demando markoj estas taksita de PHP. htmlspecialchars revenas belan HTML presita valoro de _GET_GET ["nomo"], tio estas: ajn ni tajpis en la formon. Kaj tiam diros saluton, komo spaco, kaj do. Ke tuta afero inter la angulo krampoj estosanstataŭigitaj per nenial htmlspecialchars aperigas. Do jen esence simila kion ni faras. Kaj ni havas alia aserto tio saluton mondo, kiuj havas sencon. Do nun ni reiros al nia kodo kaj vidi exactly-- io. Mi diris ekzistas, kio ne io kion ni volis fari. Ni volis diri vane. Kaj tiel tio devus iomete iom pli bone, ne malplena _GET_GET ["nomo"]. Kaj ke buklaj krampoj matĉojn ke buklaj krampoj. Ni havas niajn buklaj krampoj tie. eĥo saluton _GET ["nomo"]. Ni vidu se tio funkcias iom pli bona. Ni ankoraŭ kurante nia servilo. Saluton Jason. Saluton Jason. Kaj ĝi funkciis tiu tempo. Kaj do jen pruvo ke vi povas ja uzi la krispa krampoj, ke vi konas kaj amas en PHP kodo en HTML. La PHP kodo disponigis al vi en pset 6-- pset 6-- provizas alian manieron de faranta tion samon. Do nun ni havas la potencon. Ni havas la funcionalidad implementar la PHP kodon, kiun ni vidis en pset 6 solaj, esence. Antaŭ mi pluiru, kio estas kelkaj el la demandoj kiujn vi havas je tiu punkto? Jes [inaudible]. Publiko: Do ​​en la versio en pset6, kiam vi kuros ĝin, ekzistas spaco. Kaj mi povas vidi kie la spaco estas post la komo. [Inaudible] komenco la malferma krampo. Kiel vi korpigi la spaco en la vojo vi skribis vian propran kodoj? Parolanto: Tio estas bona demando. Kaj do ni kalkuli ke ekstere. Do tio estas vere bona demando kaj kiu mi ne komprenas. Sed ni kunlaboras. Do unue, kio Mi faras kun eĥo Estas kiam ni nur eĥo saluton, ĝi eligas saluton. Se ni eĥon nun ĉi akiri sur aparta linio, ni ekzamenu kio okazas. Do ni klaki ĉi. Ni parolas tiele hi Jason. Do denove, ni ne havas ĉi spaco. Kaj tio estas ĉar, PHP, kiam ni eĥon, negrave kiom spaces-- Nope, Ne la V-- negrave kiom da spacoj ni metas en here-- se ni nun ŝarĝas ke restariĝi, hi Jason. Jes, vidu, ĉiuj tiuj spacoj got formanĝis. Kaj tio estas iu kiu la eĥo funkcio faras. Do prizorgi tiu spaco, kaj tiu estas unu el la kialoj kial vi ne uzas eĥo kaj vi uzas htmlspecialchars anstataŭe. Mi estas scivola kion farus okazi se ni faris ĉi kie ni enfermitan spacon en cxeno. Mi honeste ne certas kion okazos se mi faros tion. Do jen unu maniero. Tio estas unu maniero por prizorgi ĝin. Se vi envolver la spaco en ĉenon, tiam la spaco Estos eligo bele per eĥo. La plej sekura agmaniero estas fari htmlspecialchars. Tio ĉiam la sekura vetas. Sed nun ni havas vojon fari per eĥo eventuale. Kaj en simila maniero, ni povas eĥo novaj linioj, la tuta varo de aĵoj vi konas faras en PHP. Ajnulo, kio estas plu demandoj kiujn aliaj personoj havas ĉe tiu punkto pri PHP? Se homoj montris supren iom malfrue, Mi estas feliĉa resti post iom kaj paroli pri iuj de la komenco. Kaj ĝi estas ankaŭ ĉiuj livestreamed, kaj arkivita, kiu estas freneza. Ĉiuokaze, do nun ni faros kelkajn pli progresintaj aĵoj kun PHP. Kaj unu el la plej fruaj aĵoj vi estis enkondukita en C estis por bukloj. Kaj PHP havas pli potenca por buklo nomata foreach buklo. Kaj ĝi aspektas kiel this-- por ĉiu malplenan kiel malplenan, krispa krampoj, do la afero. Do tiu estas esence stenografio. Vidu, la por ciklo kiel sintaksa konstruo estis konceptita en C kaj en asembleo lingvo kaj aĵoj ŝatas. Konceptita en C, precize, kiel stenografio por multa la tipoj de cikloj ke homoj vidus. Kiel kiam vi skribis buklo, tie Estis ofte inicialización paŝo ekzekutita ĝuste en la komenco, kondiĉo kie la banto estus stop-- kaj tio estas la trajto tio estas nur en momento buklo, aŭ ke tempeto havas akurate Nur ke feature-- kaj tiam an incrementation paŝo fine. Kaj tiel oni kredus ofte trovas vin skribi kodon kiel la jena. Mi tuj viŝos iun el tio. Sed se ni ripetanta tra karakteroj en tabelo, ekzemple, kiel ni akiris aron de karakteroj. Pardonu revenigo C. Mi scias, vi pensis vin estis faritaj. Sed estas nur por la celo lerni PHP, mi promesas. Do se vi havas char str de longo 8, kaj ni diru diras Hellooo kun fina nula. Granda, do tio estas nia kordoj. Kaj tiam ni havis por buklo. Ni havas int i egalas 0. Kaj ni volas eliri kiam str de i egalas ne egala al nula, ĉar ni eliri kiam ĝi egalas nula. Kaj tiam ni fari i ++ je ĉiu punkto en la por buklo. Farante ion kun str de i. Do la baza formulo estis, ni havis tiun tabelo ke ni volis trakti kiel apartaj elementoj. Sed kion ni devis fari estas ni devis esence krei apartan entjero variablo kiu kalkulis ĉiun tempo ni iris tra la buklo. Kaj tiam ni devus tiam nomita strstr [mi] kiam kion ni vere deziris fari estas nur iri karaktero por karaktero, dekstra? Ni ne volas pliigo de entjero kaj tiam uzas tiun entjero aliri ĉiu karaktero individue. Ni vere volas karaktero por karaktero. Kaj do por ĉiu inteligente kalkulas ke por ni. Se ni havas tabelo, kiu ni povas deklari en PHP kiel just-- se ni havas variablo nomitaj, ni nomas ĝin tabelo. La mirakloj de neniu tajpadon, estas nur kiel ajna alia variablo. Ĝi estas nur tabelo. Kaj ni havas malgrandan [inaudible] kiel 1, 2, 3, nur ia pravalorizitaj tabelo. Estas bone, li ne ŝatas mian foreach. Sed se ni foreach-- reale Mi tajpis ke iom malĝusta. Estas du manieroj fari foreach buklo. Jen la en sintakso kaj la kiel sintakso. Kaj ni tuj faros en sintakso unua, ne kiel. Tio estas mia eraro. Do foreach num vicojn, eĥo num. Kaj PHP estas kriante al mi ial. Ĝi estas trovanta neatendita en en iu, kiu estas iomete da ĝenas. Sed ni elkompreni kial kiu estas en momento. Do ne ŝatas tion. Ni provu uzi la kiel. Ĝi preferas la kiel sintakso estas similas. Do ni faru foreach tabelo kiel num. Do iom ekspliko de kio ĵus okazis estas la kiel sintakso estas saying-- bone unue ni rigardu, kion ĉi presas. Do ni malfermu niajn IDE. Ni iru tien. Ni diru, Saluton Jason. Kaj ĝi faris 123, kiuj estis la enhavo de la tabelo, ke ni kreis ĝis supro. Do submarinismo en ĉi foreach buklo, ni havas variablo nomata tabelo kio estas tabelo de tri numeroj. Kaj tiam ni faras foreach tabelo kiel num, num eĥo. Kaj tio estas pli intuicia ol por Lop. Ni dirante, traktante ĉiun de la aferojn en la tabelo kiel num, Mi volas ke vi donu al mi num. Kaj tio estas ĝuste kio ĝi estas faranta. PHP estas kalkulante ke kiam vi diras foreach tabelo, kaj vi kontraktanta kun tabelo, kion vi tuj volas persisti super estas la gravuloj en tiu tabelo, estas la ints en tiu tabelo, estas la elementoj en tiu tabelo. Kaj ĝin lasanta vi stoki tiuj variabloj kiel num, kaj tiam simple eligo num tuj anstataŭ diri, Mi havas variablo nomita i, kaj tiam mi volas elirigi strstr [i]. Kaj por ke nin permesas fari malvarmeta aĵoj. Kiel esence ni ne devas krei tiuj variabloj kiel i aj kaj faru cxiujn ĉi incrementation frandajxojn cxe la fino. PHP prizorgas ĉiujn de tio por vi. Do nun ni parolu pri kiel foreach ĝi aplikas al nia _GET vortaro. Do ni komenti tiun rapide. Do ni havas nian _GET tabelo. Ni havas ĉi variablo. Kaj ĝi estas atingis iun aĵon en ĝi. Ĝuste nun, ni nur havas unu variablo aprobotaj al ĝi, kiu estas nomo. Sed se ni premas Enter, nun ni povas havi du variabloj. Ni povas havi nomon kaj aĝo, ekzemple, se ni volas ricevi la aĝo kaj ankaŭ la nomo de persono, funnily sufiĉas. Do nun _GET tuj esti vortaro kun du elementoj, kun du ŝlosilaj valoro paroj. Kaj la unua key-- mi tuj skribi ĉi tiu sur la tabulo ankaŭ. Ni havas niajn vortaro estas _GET. Pardonu, ĝi estas estas iom malfacile vidi. Sed interne nia vortaro ni havas nomo, kiu tuj estos io ke ni donita. Kaj ni devos aĝo, kiu estas ankaŭ tuj estos iu kiu ni donita. Kaj tiu estas la tuteco de nia vortaro. Do ĝi estas alvenis du elementoj en ĝi. Kaj tiel ĉar foreach masxojn estas inteligentaj, ni povus pensi, kaj korekte povus pensi ke foreach povas persisti tra tiu vortaro, presi el valoroj donitaj per nomo kaj aĝo. Do ni fakte fari ĝuste tion. Ni konstrui foreach buklo. Kaj ni tuj faros por _GET kiel. Kaj ni tuj faru la sekvajn. Do ni vidu kio okazas se ni tajpi nur vorto, kaj tiam diri eĥo vorto. Ni ankaŭ tuj eĥon nova linio nur por fari ĝin iom pli klara, Kio okazas. Do ni vidu. Tio ne donante al mi ajnajn erarojn. Kaj ni fermu. Sur nia retejo, vi tuj faros multajn ke dum de pset7. Do ni diru Mia nomo estas Sam. Mia aĝo estas 45. Ĝi ne estas. Sed ĝi presas el, kiel atendita, Sam 45. Kaj tial vi rimarkos ke kio foreach buklo did-- tie, ni revenu al tiu tiel lin tuŝas sur la board-- ni preni _GET kiel vorto. Kaj la kvar aferoj en _GET. Sed nur presita el du aferoj. foreach, estante lia inteligenteco mem, supozis ke kio ni vere volis estis la valoroj, ne la klavojn. Sed estas vojo ke ni povus presi el la ŝlosilojn tiel, se ni volis. Se ni volis ankaŭ scias kion tiuj variabloj estas vokitaj, ekzistas trairejo ke ni povas aliri ĉi tiel. Kaj la vojo al speco de fari tion, tial ni povas diri, ebligas efektive disigu ĝin en ŝlosilo valoro paroj. Do ni vidu kio okazas nun. Do ni havas ŝlosilon. Ni havas valoron. Ni havas alian novan linio por legibilidad. Kaj ni vidu kio okazas kiam ni faras tion nun. Mi ne scias kiom aĝa Jason estas. Jasono 15. Do ni havas nomon Jason, aĝo 15. Do ni povis aliri la ŝlosilo kaj valoro paroj de tiu vortaro nur dirante kiel ŝlosilaj punktoj por valoro. Kaj tio estas foreach sintaksa sukero biton kiu permesas vin aliri aferojn en la vortaro. Do espereble tiu ia substrekas la potenco de la foreach buklo. Vi povas sufiĉe tre ĵet io kiu ŝajnas iterable, kiel io kiu havas multoblajn elementoj kiel tabelo, kiel dictionary-- tiuj estas du primara aferoj vi estos laboranta kun ambaŭ en vivo kaj en pset 7. Do vi povas ĵeti Okaze ĉe ĝi, kaj ĝi estos elkompreni kion vi volas fari kun ĝi. Ĝi diros: Bone, mi iros akiri cxi tion for de datumoj kiuj estis pasita al mi. Kaj tio estas iu kiu vi estas tuj estos uzante multajn en pset 7. Mi tuj rapida movo malsupren nur por vidi kie mi estas ĉe. Ĉu homoj havas demandojn en ĉi tiu punkto? Demandoj entute? Jes? Publiko: Do ​​kun la ŝlosilo kaj valoron, vi povus nomi gxin io alia kaj ĝi ankoraŭ funkcias? Parolanto: Oops. Wow, mi tute forigita la tuta linio. Granda laboro. Do, al. Ŝlosilo kaj valoro estas nur konvencio. Ĝi estas helpema. Obtenebla iuj dezajno punktojn, eble iuj stilo punktoj por fari tion, ĉar ĝi vere transdonas la intenco. Sed ni diru a kaj yarp. Spektantaro: Vi ne devas ŝanĝi ion en la HTML-dosiero por reflekti ke? Parolanto: Tute ne. Publiko: Kaj ĵus scias ke pro la egalas pli granda than-- Parolanto: Jes. Publiko: --kiu indikilo kiu that's-- Parolanto: Jes. Ke estas foreach sintakso, sed jes. Spektantaro: Ne estas tipoj. Do kio se vi volis aĝo al nur kelkaj? Ĉu ekzistas maniero por fari tion? Parolanto: Ekzistas manieroj por kontroli se variabloj konformiĝi al iuj tipoj. Do PHP petas iom pli el vi ĉar ekzistas neniuj tipoj en. Kelkaj manieroj petas malpli. Kelkmaniere ĝi petas pli. Ĉar se vi havas nur io en variablo, vi tute ne scias kion tipo ĝi estas. Sed se vi estas lerte pri la variabloj ke vi atribuas tipoj kaj certiĝu ke funkcioj nur return-- vi volas funkcioj nur reveno unu tipo de valoro por ke vi povas esence atendi ke la variablo vi revenas de funkcio estos de la tipo ke vi kredas ke estos, esence. Sed estas iuj metodoj per kiu vi povas kontroli. Mi ne memoras ilin de la supro de mia kapo. Mi atendas ĝin por igi blua. isint? isstr? Ekzistas metodoj konstruita en PHP kiu povas kontroli la tipo de variabloj por vi. Sed se vi atribuas variabloj smartly, vi ne devus devos fari tion tro da en pset 7. Sed tiuj metodoj ja ekzistas. Kaj tio estas iu kiu Estas en la lingvo mem. Kaj mi ne memoras la precizan sintakson. Ni povus eĉ rigardi ĝin. Sed tempo estas de la esenco. havi Ĉu ajnulo havas demandon? Jes. Publiko: Mi havas nur unu pli. Do vi menciis la GET metodo, sed vi ne menciis la POST metodo. Ĉu ni revenos al tio? Parolanto: Jes, ni volas estos revenanta al tiu. Tio estas ĝuste kion mi serĉis ĉe mia telefono, kiu nun endormiĝis, sed mi trovos gxin. Ĝuste certigi ni trafis ĉiuj PHP notoj. Yep, ne elpuriganta versio. Jes, ni havas kelkajn pliajn aferojn ni volas fari nun ĉe tiu punkto. Do parolante pri POST, kiun vi menciis, la sola diferenco inter GET kaj POST estas memoras kiam ni rigardis ĉe tiu retadreso kaj ni vidis, ho, nomo egalas al kaj aĝo egalas yarp pravas la URL tie por ni. POST estas iom pli sekretema kun lia forpaso de informo. Do se vi ne volas ke uzanto scii, ekzemple, vi ne volis la uzantnomon kaj pasvorton de la persono aktuale ensalutinta por montra la URL, kio estas racia afero por ne deziras en la URL, ĉar iu povas vidi gxin. Se ili ligas iun al paĝo, vi ne volas ilia URL kalkis tie, ĉar tio permesus popolon ensaluti nur kun la interglui de URL anstataŭe de reale plenigante formularon. POST estas iomete pli sekretemaj. Kaj la nuraj aĵoj kiuj ni devos ŝanĝi estas tiu metodo, ŝanĝo de akiri sendi. Kaj tiam ene la HTTP, anstataŭ de aliranta la tabelo _GET ni tuj aliri la tabelo _POST. Kaj ni rimarkos ke, se ni malfermas ĉi reen supren denove, Jason malrapide malkreskas en aĝo. nomi Jason, aĝo 14. La saman materialon Popoj supren. Sed ni iru al la URL kaj tiuj variabloj ne estas tie. Kaj la vojon ke POST passes-- tiel memori kiamaniere rigardi la fonton de la paĝo. Ni iras al la reto. Ni refreŝigi. Kaj ĉi tio estas alia afero kiu POST donos vin avertoj pri. Vi eble vidis skatolo, teksto skatolon kiel tiun en via retumilo. Ĉu vi vere volas por sendi formo denove? POST estas kio estas sendanta tiuj formoj. Ĉar esence se vi sendis vian kreditkarto informo por iu, ke ne tuj aperas en la URL. Tio tuj estos POST peto. Do kiam vi refreŝigi la paĝon, ĝi estas resendi ke post peto. Do nun ni volas sendi la formi denove ĉar ĝi ne tuj krei ajna duplikatajn aĉetoj. Kaj ni rimarkos ke ĉi tie, la metodo ni uzas estas POST. Kaj ĝi ja translokigi bajtoj. Ĝi trapasis 401 el ili. Programo bela eta. Sed estas nenie ke ni povas vidi la valoroj kiuj estas pasita. La retpaĝoj mem povas vidi, sed ni kiel uzantoj ne povas vidi, krom se vi estas hacker. Se vi estas bona hacker, vi povas rigardi. Se vi konas la bazajn formato de la HTML, la valoroj faros sin konata en la paĝoj. Vi povos vidi. La valoroj estos tie, ili estas nur iom malpli evidenta por vi aliri, esence. Ĉu ni havas plu demandoj pri GET, POST before-- kion ni sekve faros fakte serĉos iuj de la kodo ke vi donas en pset 7, paroli pri kiel uzas iu el tiuj konceptoj, kaj paroli pri la aferojn vi venas devi fari iomete en pset 7. Demandon antaŭ tio? Pli demandoj vi infanoj havas? Granda. Bone, ni rigardu iomete ĉe pset 7, Sendube kio vi estas ĉiuj plej ekscitita pri. Mi volas diri, tiu estas iu kiu Davido iras tra iomete. Sed ni havas tri dosierujojn en la supro, tiel kiel agorda dosiero. Tio por datumbazoj, kiuj ni raportas en proksimume kvin minutoj. Inkluzivas, vi neniam bezonos rigardi en ĉi dosierujo se vi ne volas sed estas agrable scias ekzistas ĉiuj specoj de helpantoj. Helpantoj estas kiel helpema funkcioj. Kaj tiam ni havas agord, kiu fiksas kelkajn aĵojn supren. Estas iuj funkcioj kiuj havas CS50 skribita ke estas en helpanto kaj config. Kaj iuj de la PHP kiu jam eliras en dosieroj faros multajn pli speco de obtuzaj kruro laboro por vi. Kiel se ni eniros publika login.php, kio estas kio Aperas pravas kiam vi iras en pset 7. Ni vidos ke estas ĉi postulas deklaron. Kaj ke ia kiel akraj inkluzivi, hashtag inkluzivas se vi estas de pli nova generacio. Sed ĉi resume diras ke mi necesas aliro por ĉiuj funkcioj en config.php. Kaj vi povus havi postulas por ĉiaj aliaj aferoj. agord fakte postulas helpantoj. Do kiam ajn vi postulas config, vi estas ankaŭ Inkluzivanta aŭ postulanta helpantoj ankaŭ. Por ke donas al vi aliron al ĉiuj malvarmeta funkcioj ke ni tuj uzi, Aĵoj kiel repagi. Mi fakte tuj mildigi tiun malsupren iomete. Do la funkcio tiam ni estas tuj trairu ĝuste antaŭ ni pluiru al SQL iom bito estas la login.php funkcio, nur ĉar ĝi uzas iun de la temoj ke ni ĵus raportis en PHP. Komprenu la unua afero estas se $ _SERVER. Tio estas alia tutmonda variablo kiu vi tuj estos kontraktanta kun. Estas kiel _GET kaj _POST, sed kion servilo enhavas estas ĉi povas lasi vin scii se la peto metodo Estis GET aŭ POST. Kiel antaŭe kion ni faris Estas ĝuste en nia kodo kiun ni skribis, ni nur ŝanĝi ĝin esti GET kaj POST depende kion la HTML havas. Sed estas paĝoj kiuj povas esti Montrita kun ambaŭ tipoj de petoj. Kaj vi volus fari malsamaj aferoj depende sur la tipo de peto, samkiel salutnomo faras. Do vi povas kontroli ke peto metodo tra aliranta ŝlosilojn, tra uzante ŝlosila kaj ekhavi la valoro de io en la vortaro _SERVER. Do jen alia tutmonda ŝanĝiĝema kiel _GET kaj _POST. Se ĝi estas GET, ni volas redonu la ensaluta formularo. Redonu estas funkcio kiu esence nur metas la taŭgan HTML kaj pasas iuj parametroj. Tiu titolo estas parametro tio uzata en montrado, strange sufiĉe, la titolo de la paĝo en demando, la afero ĉi tie, diri aŭ saluton en nia antaŭa ekzemplo. Nun ni havas malsaman aferon. Else se ĝi estas POST, ni fari iu alia materialo. Ni uzas ke malplena metodo. Ĝi ne ekzistas, ĝi estas malplena. Kaj ni vidis antaŭe, PHP havas justan kvanton de primitivaj en metodoj ke David will-- se estas metodoj kiuj estas utilaj al vi, ili estos alarmitaj por vi en la piediro tra tiu Davido donas ĉe la komenco superrigardon, kaj ankaŭ Zamyla la helpema bitoj. Ŝi dorso ĉiuj. Ni povas ĉiuj ĝojas. pardonpeti estas trafe nomita funkcio ke nur esence presas iuj erarmesaĝojn, ĉar CS50 estas tre gxentila. Kaj nun ĉi tiu estas delikata iom ĉar ĉi Tie estas kie ni informpeti la datumbazo. Nun ni ne parolis pri datumbazoj. Kaj ni tuj en la sekva kvin minutoj aŭ tiel, maksimumo. Sed tio estas funkcio ke CS50 skribis akiri tablo baze de datumbazo ke ni laboras kun en pset 7. Mi estas vere malbona kun mia nulo indeksado hodiaŭ. Sed jes, estas 7. Do konsulti ĝi tuj revenos al tabelo, esence estas la ŝlosilo iom. Kaj ĉar tio ne havas tajpadon, do vicoj estas tabelo de tabeloj. Ĉar kiam ni pensas tablon, kion ni tuj faros estas, kiel vi lernis en psets kiel la ludo de 15, ĉiuokaze kie vi devis uzi duobla tabelo, ni esence havi tabelo de aliaj arrays faras tablon. Kaj vi havas vicoj kaj kolumnoj. Kaj tiam vi povas aliri ilin kiel [0] [1], vi ricevas la [0] [1]. Bazaj da tio. Do kion ni faras tie en tiu funkcio, ni petas la datumbazo se la uzanto tio provas ensaluti, kiu estos senditaj per poŝto metodo. Ni vidos estas duumaj la uzulnomo _POST. Oni devos sendita, la uzanto aŭ vi sendos valoro tra formo tra POST ĉar ĝi estas ensalutilojn stuff. Ni estas kontrolanta la uzantnomon vidi, estas ĉi en la tablo? Ĉar se uzanto estas elsaluti en, tiam ilia salutnomo devus esti stokita en la tablo de uzantoj kiuj ekzistas por tiu ejo. Do resume, se la uzanto estas en la datumbazo, query tuj revenos tiu vico, kiu estas tabelo. Sed la malfacila parto estas ke se eĉ se la duobla tabelo estas nur unu vico, eĉ se ĝi estas unu vico tabelo kiel vi hvas basically-- se vi hvas grandeco unu tabelo ke estas tenanta alia tabelo, vi vere pritraktas unu kolumno. Sed gxi ankoraux traktata kiel duobla tabelo. Kaj tiu estas kie povas kelkfoje atingi delikata, ĉar ni havas vicoj tie. Nia variablo estas vicoj. Kaj tiam ni kreas nova variablo nomata vico kaj fiksante ĝin egala al la unua vico de vicoj. Kaj vi rimarkos ke komenton diras ke estas la unua kaj nur vico. Do tiu estas la malfacila parto kie nun funkcias povas reveni tabeloj tre facile. Ekzistas ne mallocs. Vi ne vidos mallocs. Do vi ne vidos seg kulpoj. Sed funkciojn ankoraŭ estos pasanta ĉirkaŭ arrays kaj datumoj en grupoj. Kaj vi devi esti singarda de kion ĝuste via funkcioj revenos. Kaj eĉ se ĝi estas unu kolumno tiel, konsulti ankoraŭ tuj revenos duoblan tabelo. Do al aliro kiu column-- aŭ vi povas pensi pri ĉio ĉi, kiel renversita ekde ni parolas pri vicoj. Sed aliri ke unu vico, ne eblas simple diri vicoj. Eĉ kvankam ĝi estas unu vico, vi devas ĉu rowsrows [0] por ia forigi tiun ekstera bito de la tabelo kaj GXusta via unu vico. Ĉu iuj aliaj aferoj. Ekzistas funkcio nomata password_verify kiu kontrolas la Pasvorto ke estis poŝtita. Kaj tiam oni vidas alian tutmonda variablo tie, _SESSION. Esence kunsido identigilo Tiel vi konservi trako de se iu estas ensalutita aŭ ne. Do ĝuste nun kun login.php, ni ensalutanta uzanto en. Do kion ni volas fari estas ni volas diri la kunsido identigilo estas egala al la vico identigilo, kiu nur havas sencon ĉar ĉiu vico havos malsaman identigilo numeron kiel parto de la tablo. Ni enir SQLa en dua, do se iu el tiu ŝajnas iomete kiel bla, tiam ĉio estos klarigita. Sed ni tuj starigis la identigilo egala al konvenas, tala la uzanto en. Pardonpetas se io iras malbone. Kaj tio estas ensalutoj celo en vivo kiel Profesoro Malan dirus. Tiel estis login.php. Kaj multe da la PHP kodo vi skribos en pset 7, ili devos esti iomete. Ne forgesu chmod al la bonorda permesojn. Estos iomete pri ke en la komenco de la specifon. Sed la PHP kiu vi estas skribo tuj estos fari aĵoj estas simila al tiu. Vi tuj estos aliranta iuj aferoj estas donitaj al vi en la mallokajn variablojn de PHP ke estas kontraktanta kun la nuna ensalutinta uzanto, ĉu tie havi estis petoj senditaj al tiu paĝo, malsamaj aĵoj tiel. Kaj ĝi ankaŭ estos potenciale ripetanta tra vicoj da tiu afero. En malsama funkcio, query does reveni ĉi duobla tabelo. Kaj se estas pli ol vicoj en ĝi, se are-- jes, se ekzistas Estas pli ol unu vicoj en ĝi, tiam estos tablo. Kaj vi eble volas persisti tra la vicoj de ĉi tabelo uzante la foreach buklo kiun ni priskribis. Do se vi faras foreach sur duobla tabelo, kion volas la word-- tie, Mi vere skribos ĝin. Mi skribos ĝin rapida tie. Se ni havas foreach de vicoj kiel vico, kio estas la tipo de vico? Ĉu iu scias? Vi ricevis ĝin? Do vicoj estas duobla tabelo. Do kio estas foreach tuj konkludi ke ni deziras de tiu duobla tabelo se ni ripetanta super ĝi? Ni povas supozi ke esence ĝi tuj esti aŭ elementoj, aŭ vicoj, aŭ kolumnoj, esence. Kaj tiel vicoj kaj kolumnoj ni povas trakti kiel la sama afero. Esence kion la foreach buklo tuj fari estas ĝi tuj revenos vicoj. vico tuj estos de tipo vico, dum vicoj estas duobla tabelo. Do se vi donos foreach duobla tabelo, estas ne tuj persisti pli ol unu nivelo profunda. Kiu estas esence diri se Estas ok ĉeloj en ĉi table-- 1,2, 3 4, 5, 6, 7, 8-- la foreach buklo ne tuj trairu ĉiu de tiuj ĉeloj. Kion la foreach buklo faros estis ĝi trairos ĉi vico, al vi tiun tutan vicon. Kaj tiam ĝi iros tra tiu vico. Do ĝi nur ripetas unu nivelo profunda. Se vi aldonas nestitaj foreach buklo, tiam vi povas trakti ĉiu vico revenis de vicoj, vi faras foreach vico kiel elementon, diru. Kaj poste vi povus eĥi la elemento. Do jen mallonga iom aktualigo pri kiel vi povus uzi foreach masxojn en la kunteksto de mendo. Ĉu estas demandoj sur PHP? Io ajn antaŭ ni pluiri al paroli pri SQLa kaj la amuzo de datumbazo? Sentante bona? Sentante bona. Bone. Ni movi sur al la PowerPoint, kiujn vi probable maltrafi. SQL, yay. Homoj kiuj estas en miaj sekcio tipe scios ke subheadings de akronimoj Estas ĉiam nur la unuaj vortoj Mi pensas de tiu turniro ke algorithm-- ke akronimo. Ĝi ne estas algoritmo. Do SQL estas datumbazo. Ĝi estas lingvo ke laboras kun datumbazoj. Kaj ĉiuj datumbazoj estas tabloj, almenaŭ en la vojo ke SQLa reprezentas ilin. Alia maniero pensi pri datumbazoj estas datumbazoj estas aro de ŝlosiloj kaj valoroj esence. Vi povas pensi pri datumbazo kiel vortaron kaj ankaŭ kiel tablo. Esence ĝi estas maniero asocii malsamajn datumojn kun aliaj datumoj, ofte tra vicoj kaj kolumnoj. Kaj tio estas la vojo jen SQLa bone funkcias. Do tiu estas unu ekzemplo de tablo. Mi havas kelkajn ekzemplojn de personoj en mia sekcio, kiu Mi ne havis tempon por ŝanĝiĝi. Sed ni havas aferojn kiel ID, nomo, superpotenco, kaj hejmurbo. Mi ne scias kie ĉiu estas el mia sekcio, do mi simple tuj supozi ĉies ajn el Novjorko Urbo ĉar mi multe statistika verŝajneco de esti ĝentilaj. SQLa aŭtomate prenas Zorgi pri la ID kolumno por vi. Se vi enmetas nova vico en SQL datumbazo, ĝi pliigo ke ID nombro kaj nur esence algluita kiel kvin nomoj, superpotenco, hejmurbo, kiu ajn sur la fino de tiu tablo. Do ID estas kolumno vi neniam devas maltrankvili pri. Sed, kiel en la kazo de login.php, kiam ni estis akiranta la kunsido ID de tablo kaj nur uzanta ID, ID estas maniero unike identigi ero de datumaro. Do se ni havus du Sams, ambaŭ kiu instruis CS50, kaj ambaŭ de kiu estis de Milvokio, tiuj farus ankoraŭ havas distingan ID nombroj kaj tiel distinga en la kunteksto de la tablo. Do jen kion SQLa pritraktas kun, laboras kun je la dorso fino. Jen estas la kvar komandoj ke vi bezonos labori kun SQL. Kaj mi ĵetis ilin ĉiuj supre sur unu glito. Sed ni tuj iru tra ilin ĉiujn individue. La unua komando estas UPDATE, kiu faras kion vi povus atendi. Diru vi havas iujn datumojn en la tablon tio estas eksdata. Kiel se vi tenanta aŭtoveturejo de popola nomoj kaj aĝoj, se iu estas aĝo pliiĝas, tiam vi tuj volas iri kaj ĝisdatigi ĝuste tiu persono aĝo. Por ekzemplo kiu funkcias kun nia unua table-- Ne zorgu pri skribado ĉiuj tiujn komandojn samtempe. Sed se vi havas ĝisdatigon malsupren, ke estos bonaj por tiu parto, ĉar ni tuj reiru al la tablo. Do se ni reiru al la tablo, diru iu kiu okazis estis tie estis tertremo aŭ de faŭlto ke disfendita rekte tra Novjorko. Kaj ni volis ĝisdatigi ĉiuj kiu vivis en Novjorko. Ili ĉiuj devis movi al Pensilvanio. Tio ne estas hejmurbo. Ili ĉiuj devis moviĝi al New Haven. Tie ni marŝos. Do ĉiuj en Nov-Jorko movas al New Haven. Kaj tiel tio estas iu kiu estas redaktado tri vicoj en tiu tabelo. Sed en SQL, vi povas fari ke en nur unu deklaron. Do ni revenu al Update. Lasu min rapidan viŝi ĉi tabulo denove. Kiam ni parolas pri ĝisdatigo, estas kelkaj partoj de la sintakso kiu estas kerna. Nu, ĉiuj la sintakso estas ŝlosilo. Sed la aĵoj en verda estas nedevigaj. La blanka deviĝas, kiel antaŭdifinita nomoj. Kaj la lumo blua estas aferoj kiuj varias depende de la tablo. Do jen kio okazas kun la kolorskemon tie, tie supre. Do se ni volas ĝisdatigi ĝuste tiuj vicoj de la personoj kiuj vivas en Nov-Jorko, do kion ni farus se ni diris UPDATE? Do tabelo estas kie ni metis la nomo de nia tablo. Ni nur diras la nomo de nia tablo estas tablo unu. Do ni volas ĝisdatigi tablo unu. Kaj ni volas set-- Kion ni volas agordi? Nu ni volas diri, tiel column-- PHP traktas vicoj kiel unika ensalutiloj. Kaj tiam kolumnoj estas la malsamaj kampoj el tiuj elementoj de la datumbazo. Do la unua elemento de la datumbazo havas nomon de Sam, superpotenco de CS50, kaj hejmurbo de Milvokio. Do se ni diris enkadrigeblajn ni rigardu la parametroj denove ke aro prenas. Ni havas kolumno egalas valoron. Do ni volas diri iun column-- kiu memoras Estas field-- ni volas vidi kampo egala al io nova. Do se ni ĵus diris ĝisdatigo Tabelo 1, aro nomo egalaj Elliot. Get iuj personoj el la nova sekcio en sur ĉi. Sed se ni nur faris ĝisdatigon tablo 1 metis nomon egalaj Elliot, kion farus la tablo aspektas poste? Homoj havas neniun ideon? Yeah. Spektantaro: Ĉiu en tiu vico igus Elliot. Parolanto: Ĉio en kiu vico? Publiko: En la unua vico. Parolanto: En la unua vico? Kial la unua vico? Mi ne intencas pluki sur vi. Publiko: Eble ĉio en la tuta tablo? Parolanto: Ĉio en la tutan tabelon, jes. Kaj tio estas ĝuste dekstra because-- mi estis nur helpi vin ekstere iomete there-- ĉar ni preterlasita la nedeviga KIE klaŭzo. Se vi ne havas la KIE klaŭzo, kion tiu komando faros Estas ĝi devos labori kun ĉiu ununura vico en la tablon. Ĉies nomon fariĝi Elliott, esence, kiun Elliot estas tre feliĉa pri. Aŭ Yanni, unu el la du. Sed ĉies nomo ŝanĝos. Do la maniero kiun uzas la KIE clause-- kaj tio validas por ĉiuj WHEREs kiuj estas en ĉiu de tiuj malsamaj aferoj. Do vi rimarkos ke SET havas kolumnon egala valoro. Kaj tiel faras KIE. Sed ĉi tiuj estas diferencaj tipoj de deklaroj. Do la kolumno egalas valoro en SET estas en asigno. Kiel ni dirante ni volas agordi nomon egala al Elliot. Sed en la KIE paragrafoj, tiuj estas egaleco deklaroj. Do diru ni nur volis ŝanĝi la persono nomo Elliot se ilia nomo estis Ryan, ni diru. Do kiam ni diras KIE nomo egalas Ryan, ke farus sukcese nur ŝanĝo la name-- ĝi estus nur ŝanĝi la nomon de kampo en vicoj kie la nomo kampo egalas al Ryan. Do se ni havis plurajn homojn nomita Ryan, ĉiujn iliajn nomojn ŝanĝus Elliot. Tio estas simila al la ekzemplo de se faŭlto disdividas Novjorko kaj ĉiu devas movi al New Haven, la maniero kiel ni povas fari tion en unu deklaro estas UPDATE table1 SET hejmurbo = New Haven kie hejmurbo egalas Novjorko. Jen la potenco de La ĝisdatigo komunikaĵo. Ni povas elekti ajnan nombron de vicoj tra veraj deklaroj pri la kampoj en tiuj vicoj. Ni ne povas diri UPDATE table1 aro nomo = Elliot KIE vico = 1, krom ke ni povas se ni diras ID = 1. Do ni tuj esti laborante kun egaleco de kampoj, egaleco de kolumnoj. Sed uzante la ID kampo estas vojo elekti individuajn vicojn specife, ĉar la ID kampo estas unika ensalutilo en SQL datumbazo. Do kiel ĝisdatigi vico unu, ID egalas 1. Ĝisdatigante vico du, nur ŝanĝi ke ID nombro. Sed la povo de la KIE deklaro estas ke ni povas ĝisdatigi aferoj bazita sur kio ilia nuna valoroj de certaj aferoj. Jes Elliot? Publiko: Kaj kio se vi volas to-- denove, tio estas alia demando. Sed mia unua demando estis, kie estas ĉi okazas? Kie mi ĝisdatiganta ĉi? Ĉu tio en PHP kodo? Parolanto: Kie vi ĝisdatigas, jes. Ni tuj paroli pri kie ĉiuj ĉi okazas ia iam ni iras tra ĉiuj komandoj. Sed kion vi bezonas scias de momento estas esence ke via SQL datumbazo ekzistas kiel io esti alirita de la query funkcio, kiu difinas CS50. Do se vi uzas la konsulto funkcio, vi povas aliri ĉi tablo. Do vi estos sendanta tiuj komandas al via tablo en PHP dosierojn tra la konsulto funkcio. Vi povas ankaŭ ludi tie kun via tablo rekte. Kaj tio estas la plej bona maniero testi tiajn komandojn. Kaj ni iros tra precize kiel fari tion en nur iomete. Do jen UPDATE komando. Kaj la resto de la komandoj tuj estos ia simila, laboras pri similaj aferoj. La INSERT INTO estas probable la plej malsamaj de UPDATE. Mi tuj lasos ke tie supre por nur iomete kaj laboro super tie. Do enmeti en, vi vidos tiu tablo estas ankoraŭ la sama. Vi volas enmeti en. La capitalización, SQLa Estas kazo sensenta. Do vi ne devas kapitaligi tion. Por konvencio, la vortoj en blankaj majuskloj. Sed mi ankaŭ koloro kodita ilin. La nura kialo ke vi kapitaligi tiujn kiam vi tajpas ilin Estas simple elstari ke tiuj estas konstantaj. Kaj tiel vi povas aŭ rigardi la kapitaligo aŭ la fakto ke mi koloraj ilin malsame. Do ni hvas INSERT INTO, ni faru table1 denove. Tio estas ĉio sur unu linio. Mi simple disigi ĝin la malsamaj deklaroj. Do ne zorgu pri la fakto ke table1 faris ĝin sur la dua linio. Do ni volas enmeti INTO table1 iuj valoroj. Kaj vi rimarkos la laŭvola bita, kiun mi ricevos por en dua. Do ni havas valorojn. Do diru ni volas aldoni Andi al nia tablo, ĉar ni maltrafos Andi. Andi estas malsana. Do ni aldonu Andi al nia tablo. Memoru ke la ID nombro estas ĝisdatigita aŭtomate. Do la sola kampoj ni bezonas zorgi pri estas nomo, superpotenco, kaj hejmurbo. Kaj tial la maniero kiun ni fari tion, rigardante nia sintakso, estas ni nur akirita krampoj, kun komo apartigitaj valoroj, ĉiu el kiuj estas valoro. Do se ni volis enmeti Andi en nian tablo, ĉiuj ni devas fari estas ĝuste Andi. Kio Andi mondpotenco, homoj en Andi sekcio? Ŝi ŝatas flugo, aŭ ŝatas rapido, aŭ ion. Kion ni jam havas tie? Ni havas CS50, flugo, rapido, forto. Publiko: Tempo vojaĝoj. Parolanto: Tempo vojaĝoj, mirinda. Do ni hvas Andi, tempo vojaĝoj, kaj ŝia hejmurbo. Tio estas vere bona demando. Novjorko, se neniu scias. Ĉies de Novjorko estas la leciono forpreni de hodiaŭ. Do tiu aserto estus enmeti, kiel kvina vico, kun la superpotenco tempo vojaĝado kaj hejmurbo de Novjorko. Sed la laŭvola kampo Estas esence maniero specifi ĝuste kio kolumnoj vi volas enigi aferoj. La maniero ke ni faras ĝin nun, Andi, tempo vojaĝoj, Novjorko, tuj en la ĝusta ordo de niaj table-- nomo, superpotenco, hejmurbo. Kaj se vi volis fari io alia ol tio, kiel diri vi ne sciis iu mondpotenco, kiel kiom mi ne scias Andi La superpotenco komence. Tiamaniere mi ekkonis estis ŝia Nomo kaj ŝia hejmurbo. Kion mi povus fari estas mi povis do-- mi viŝas ĉi rapida. Mi volas nur ĝisdatigi la kolumnoj. Kaj tio estas kie la laŭvola kolumno listo havas rolon. Mi nur volas ĝisdatigi nomon kaj hejmurbon. Kaj poste mi diros VALOROJ. Mi faros Andi kaj Novjorko. Se mi preterlasis la liston de kolumnoj kaj nur faris tiujn du aferojn, kie estus Novjorko foriros? Kiun kolumno farus Novjorko Urbo estis metitaj en? Homoj havas neniun ideon? Superpotenco, precize. Do ĉi tio nur iras en ordo. Kaj unufoje ĝi atingas la finon de la listo, ĝi estos simple ĉesi plenigante aferoj. Kaj la valoroj kiujn ĝi malebligos algluita en ĉiuj kolumnoj simple esti NULL. Do ĉar ni specifita nomo kaj hejmurbo, ni tuj devas ID 5, nomi Andi, superpotenco NULL. Do superpotenco estas uninitialized valoro. Vi ne nepre akiros la sama Valgrind eraroj se vi provas kaj aliri ĝin. Ĉio estos bele zeroed ekstere, ĉar NULL estas valoro en SQL. Ke estas konstanta. Kaj tiam hejmurbo estos Novjorko. Do jen la INSERT INTO komando. Antaŭ ni movas, ekzistas du pliaj komandoj. Ĉu homoj havas demandojn pri UPDATE, pri INSERT INTO, pri SQLa ĝenerale antaŭ ni movas sur nia fina bitoj? Homoj sentas bona, granda. Amu ĝin. Do ni parolu pri ELEKTU. Irante fosaĵo UPDATE super tie. Kaj ELEKTU tuj estos tre similaj. La celo de SELECT, ELEKTU la celo en la vivo estas doni al vi aron de kolumnoj kiuj kontentigas certajn kondiĉojn. Kaj kiam mi diras kontentigi certaj kondiĉoj, via menso povus tuj reiru al tiu KIE klaŭzo kiuj eliris en ĝisdatigo. Kaj ke propozicio estas ĝuste tie en ELEKTU. Se ni ne metas la KIE klaŭzo kaj ni diru ELEKTU nomon hometown-- literumita ke iom wrong-- nomo, hejmurbo EL table1. Se ni simple diri ke, kion SELECT tuj donos nin trovas estas tuj donos nin double-- tablo, prefere. Duobla tabelo se ni estas pensante pri en PHP sencojn. Sed ĝi estas nur tuj donos al ni duobla tabelo de du columns-- nomon kaj hejmurbo. Kaj ĝi ignoros ID. Kaj ĝi ignoros superpotenco. Kaj ĝi simple donas al ni ĉiun sola vico de tiu tablo. Do se ni ĵus enigita Andi, ni devos Andi. Kaj ni havas la origina kvar. Se ili is ĝisdatigita, ke volo reflektos, kaj tiel plu, kaj tiel plu. Do tiu estas ĉar ni ne uzis la KIE klaŭzo. Sed ni povas uzi ĝin en precize la Same ni uzis ĝin en ĝisdatigo. Se ni nur volas tablon de la nomoj kaj súper povoj de homoj vivantaj en Nov-Jorko, ni povas ekzekuti komunikaĵo kiel ELEKTU nomo, superpower-- Mi simple tuj forlasi that-- FROM table1 KIE hejmurbo = Novjorko. Do ĉi iras montri ke vi povas akiri totalmente malsamaj kolumnoj, kaj surmetu kolumnoj ke vi ne estas inkluzive alvenante reen en la KIE klaŭzo. Ni eĉ ne volas la hejmurbo de ĉiuj. Sed ni volas la nomon kaj la superpotencon de homoj kies hejmurbo estas Novjorko. Do jen io ni povas fari per la KIE klaŭzo estas ni povas trakti kolumnoj ke ni ne nepre volas reen. En la sama maniero en UPDATE, ni povas trakti kun kolumnoj kiuj ni ne nepre volas ĝisdatigi. Ni povas ĝisdatigi la urbo de ĉiuj kiu estas nomo estas Sam, ekzemple. Ni povas ĝisdatigi la urbo de ĉiuj kies ID nombro estas 2. Do simple ĝisdatigi la urbo de la dua vico kie ni ne devas trakti necesa la komuna demando. Kaj Delete estas, ke vi la atendi, DELETE FROM table1. Kaj tiam ni havas alian KIE klaŭzo. Do ni povas diri kie ID = 1. Forigi la unua vico. Kaj DELETE ĉiam forviŝi vico, aŭ ĝi viŝos iun numeron de vicoj. DELETE FROM tablo KIE hejmurbo = Novjorko viŝos ĉiuj en Novjorko. Tio se estis subita tragika pesto kaj vi nur volis forigi ĉiuj el la tablo, kiuj vivis en certa urbo kiu estis trafita per la pesto. Eble ili ripozas en paco. Tiuj estas la kvar SQL komandojn ke vi bezonos uzi. Vi eble eĉ ne bezonas uzi ĉiujn. Sed jen estas la kvar ke CS50 atendas vin esti komforta kun iranta en ambaŭ kvizo 1 kaj ankaŭ pset7 kaj pset8. Tie nur ke tablo denove. En ĉi tiu, Roy mondpotenco havas estis ĝisdatigita al lasero traboj, kiuj estas ekzemplo mi ne uzis. Mi ne scias kiun el Roy preferas, sed forto. Roy havas superpotenco de forto. Katherine ne faris ĝin hodiaŭ. Tio estas malfeliĉa. Sed ŝi havas súper rapido. Puto kiu estis PHP. Antaŭ ni parolas pri MVC, faras iu havas demandojn pri PHP? Nun SQL, aŭ PHP se vi subite havas supreniru kun demando pri PHP? Granda. Bone, ni ĉiuj starigis tiam. Do parolante iomete pri modelo vidpunkto controladores, ni revenu al iuj de la havajxoj en pset7. Do kio modelo vido regilo is-- mi ne tuj savos mian ŝanĝoj ensaluti ĉar mi tute buĉ ĝin. Sed baze ni havas du apartaj aferoj okazas. Ni havas publikon dosierujo kiu enhavas la kodo ke tuj estos ekzekutita kaj la retpaĝoj kiuj estos vizititaj. Kaj ni ankaŭ havas tiun opinion dosierujo. Kaj vidpunktojn enhavas ŝablonojn. Jen kion la funkcio render-- ni vidis la redonu funkcio en faskon de la PHP-kodo ke CS50 jam skribita por vi, kiu portas en certaj parametroj. Kio tiu kodo faras estas tio okazas en opinioj, kiuj estas aroj de kiel prewritten HTML kodo, kaj ĝin enmeto valoroj en certaj lokoj. Jen kiel kiam vi iri en CS50 Financoj, la sama surskribo estas sur ĉiu paĝo. La sama piedlinio estas sur ĉiu paĝo. Tiu estas ĉar la vojo ke redonu verkoj estas timige aŭtomate fliki en tiu surskribo kaj spektanto kiun vi povas trovi en viditaj. Ni fakte povas iri en kaploko, kaj rigardu, estas HTML dosiero kun kapo. Ĝi havas kelkajn stylesheets. Vi ne bezonas rigardi CSS por pset7 se vi ne volas. Sed vi povas modifi ili se vi volas, fari Via Financoj aspektas iom malsama. Ĝi havas kelkajn PHP la kaplinio iom vidi se estas malsama titolo ĝi devus meti en tiun kaplinion. Sed nur iuj aliaj skriptoj, kaj ligiloj, kaj aliaj aferoj. Kapo finiĝas, korpo komencas, kaj oops, ni havas tiun strangan iom fino iom. Kaj estas div, samkiel a senforma speco de elemento Kiu havas ideon de meza. Kaj tiam, kiam ni vidas piedlinio, ni havas la finon de div. Ni havas fundon, kiu estas kie la piedlinio teksto. Fino de div, fino de korpo, fino de HTML. Do kio redonu estas faras estas render estas speco de flikado supren kaplinion, a malsamaj PHP dosieron kiu enhavos la fakta proprajxon vi vidi, kiel via tablo de akcioj se vi aĉetas aŭ vendante trabon. Kaj tiam ĝi aldonos en la piedlinio. Kaj la modelo vido regilo ideo estas ke ni volas disigi kiom aferojn rigardu de la kodo. Estas ni volas disigi la fasado kaj la backend, kie la fasado estas la aĵoj kiujn la uzanto vidas la belan visuals-- HTML, CSS, tiamaniere, ke bildoj, kaj tiel plu. Kaj la backend estas PHP. Jen kodo kiun vi skribas. Tio estas kie la kodo kiu estas faras faktaj operacioj. Jen kiam vi aldono stokon al via tablo, kiam vi aĉetas kaj vendado, jen backend. Kaj ni povas, kiel vi vidis, Inkluzivanta PHP rekte en HTML. Do kion ni povus fari por tiu tasko estas simple havis HTML-dosiero por ĉiu paĝo, kiel saluto. Kaj tiam en tiu paĝo, havis grandegan blokon de PHP kodo, Inkluzivanta ĉiujn de la kodo kiu ke paĝo specife bezonus. Kaj tiam ni povus havi farita ke por biletujo. Ni povis fari ĉiujn la aĉetado kaj vendanta ene la individuaj paĝoj. Sed ĉar ni desegnadon aparte de kie ni skribas la backend kodo, ni povas facile ŝanĝi kiom tion aspektas sen ŝanĝanta ĉiun unuope. Ni fari aferojn kiel simple aldonu nova div al la malsupro of-- Saluton Mi modifis la piedlinio. Vi povas simple fari aĵoj kiel tiu. Sed ankaŭ, oni povas ŝanĝi la tutan vidan aranĝon sen tuŝi kio estas irante en la backend. Kaj vi povas ŝanĝi la tuta backend kaj ankoraŭ havi ĝin rigardi ĝuste kiel ĝi faris antaŭe. Ĉi Estas la ideo de modelo view adaptilo. Kaj estas vere postulita paradigmo en iuj el la lingvoj de programado vi eble deziras uzi por fina projektoj. Se vi faras IOS disvolviĝo, ili havas opiniojn, Kiu estas kio vi vidas sur la iPhone, kaj tiam backend kiel kiel aparta afero. Vi povas pensi iomete. Ekzistas multe de binaroj en komputiko, kiu estas amuza, ĉar ĉio estas en duuma. Mi ne planas tion. Tio estis vortludo neintencita. Jes, vortludo ne intencis. Sed kiel .h dosierojn kaj c dosierojn, ekzistas multajn disigante de aferoj kiu ni eble ne bezonos. Do ni povas nur redakti la h dosieroj, aŭ iu povas simple vidi .h dosieron kaj scias precize la funkciojn kiuj estas en la .c dosieron sen nepre sciante ilia efektivigo. Tiu ideo de disigi komponantoj kiuj dependas de ĉiu alia sed povas ordigi de aliri reciproke tra malsamaj kanaloj, forpaso de variabloj, ĵus inkluzivi komunikaĵojn, aferoj kiel tio, tiu principo helpas krei aplikojn kiu povas esti pli facile redaktataj de diversaj personoj, povas pli facile ŝanĝita aŭ redaktita je granda skalo, kaj estas pli facilaj elpurigi en multaj vojoj. Vere rapida, mi havas kelkaj konsiletoj por pset7, kiun mi faros tutekrana do vi ne nur rigardante the-- pinto pinto tippee. Ekzistas ne ke multaj pintoj. Sed mi menciis PHP Malfacilas debug. Duobla kaj triobla kontroli ĝin. Se via kodo estas nur ne aperanta sur la paĝo, ĝi estas probable PHP eraro, pardonon. Vi neniam devas rigardi CSS se vi ne volas. Sed iam vi finis, ĝi povas esti belan amuza afero nur iri en kaj salaton kun la CSS parametroj. CSS kaj HTML estas ekzemplo de modelo vido controlador stilo io estas, ĉu ne? Vi povus havi stilo etikedoj ene de HTML elementoj. Sed se vi ia subkontraktado ilin CSS, ili estas pli facile redakti, kaj ludi ĉirkaŭe kun, kaj amuzi kun. Trakti CS50 helper funkcioj kiel nigraj skatoloj. Vi ne bezonas scii precize kion redonu faras, Sed fidi ĝin ĉiam fari la dekstran afero depende kion vi pasi ĝin, aferojn tiel. Kaj mi rekomendus rigardante David walkthrough, trapasis la tutan aĵoj, ne nur la todos, sed vi vere povas trakti tiujn kiel nigraj skatoloj. Ne iru en tiujn funkcioj serĉas cimojn. Kaj bonvenigi la revenon de nia sinjoro Zamyla. Granda. Ĉu estas fina demandojn antaŭ ni ia resalti por la tago? Ĉu mi ankoraŭ vivos? Granda. Saluton Livestream personoj. Granda. Ĉu tie plu demandoj? Neniu? Kaj tiam mi pensas ni estas bona iri por hodiaŭ. Mi persistos ĉirkaŭ iomete poste se homoj havis demandoj ili timis demandi sur la rivereto. Sed alie, havas bonan tagon.