JASON Hirschhorn: Bonvenon ĉiuj semajne ok. Ni havas ekscitan semajno antaŭ ni. Vi infanoj kolombon en tiu pasinta paro de prelegoj al PHP, SQL, HTML, CSS, do kvar tutnova lingvoj kiuj tuj preni la reston ĉi kurso. Ni ankaux lernas kelkaj aliaj lingvojn antaŭ paso de la fino. Sed ĉiukaze, estas diri, tio estas tre ekscita tempo en CS50, nun vi jam majstris C, ŝajne, kaj estas pasi al programado por retejoj. Do tiu semajno, ni tuj iru ventego tour tra la kvar lingvoj mi nur mencias, HTML, CSS, PHP, kaj SQL. Kaj espereble, ni lasos multe da tempo ĉe la fino de sekcio por paroli pri tiu semajno P aro kaj respondon demandojn vi ĉiuj havas. Ĉiusemajne, la sama listo de rimedoj por vi, por helpi al vi kun la semajno problemon agordi kaj irante super la materialo - sed cxi tiu semajno en aparta, por tiuj ttt-bazita problemo aroj, ekzistas gastiganto de aliaj rimedoj ekstere tie vi estos verŝajne trovi nekredeble utila. Mi havas ilin ĉi tie. Mi retmesaĝi al vi ĉi tion post sekcio, kaj tio ankaŭ eblas en linio. Sed precipe, trovigxas multaj de grandaj resursoj por tie. Ekzistas ankaŭ kelkaj ne tiom granda ones, do estu singarda el tiuj. Sed pri tiu diapozitivo, mi havas kvar bonaj rimedojn, por ĉiu el la lingvojn, kiujn vi devos labori kun tiu semajno - unu referenco folio por HTML, referenco folio por CSS. Tiu dekstra jen la PHP-manlibro. Do anstataŭ tajpadon viro kaj tiam PHP komando, ĉi tiu estas kie vi farus iri por serĉi la funkcio prototipo kaj ekzemploj kaj ankaŭ iuj konsiloj kaj trukojn por uzi PHP-funkcioj. Vi uzos ĉi tiun retejon ofte, do mi instigas vin farigxi familiara kun ĝi. Ĝi povas esti iom teknika, sed ankaŭ provizas barelon da rimedoj kaj ekzemploj por ĉiuj funkcioj kaj eĉ aliajn, ekzemple kiel uzi arrays aŭ malsamajn tipojn de variabloj. Tiu paĝaro estas tre helpema por PHP. Kaj tiam, por SQL, se vi kolombo en tiun semajno da problemo aro, vi scios kiuj ni estas uzanta datumbazon. Kaj ni konsentas ke datumbazon per relative agrabla uzantinterfaco. Aŭ tio estas unu maniero por aliro ke datumbazo. La uzulinterfaco estas vokis phpMyAdmin. Ekzistas SQL langeto, kion ni faros rigardi poste hodiaŭ. Kaj vi povas tajpi en sian specimenon SQL pridemandojn, fari aĵoj en via datumbaza kaj poste ekzekuti tiuj mendoj. Kaj se ili estas ĝusta, ĝi malebligos diri, ĉi onia korekta. Se ili estas malĝustaj, ĝi malebligos diru, ĝi estas malĝusta. Tio estas bonega loko por praktiki viajn SQL pridemandojn antaŭ skribi ilin en vian kodon, certigi vin havas la formaton korekta. Fine, unu alia retejo en ĉi tie. Jen la retejo, kie vi povas iru kaj kontrolu certigi vian HTML-kodo estas valida. Do antaŭ ĝiri vian problemojn starigis tiun semajnon, certigu ĉiuj via HTML estas valida. Pasintsemajne, vi estis kurinta Valgrind, al certigi vin, ne havis memoro likas. Tiu semajno, vi devas certigi, ĉiuj de via kodo estas valida HTML5. Se ĝi ne estas valida HTML5, vi estas tuj akiri antaŭ ekstere. Do certigu - nur ĉar ĝi laboras ne signifi estas tute valida. Kuru via kodo tra tiu retejo antaŭ ĝiri it in Denove, jen la retejo. Se vi havas iun opinion pri mi, ni havi paro de pli sekcioj lasis, kaj mi ĉiam volas fari tion, kion mi povas por havigi al vi ĉiuj per la plej bonaj sekcio sperti eblas. Do lasu min scii se estas io mi povas fari por plibonigi aŭ se ekzistas aferoj kiujn vi vidas, ke mi povus fari pli bone. Dankon, Avi. Metu ĝin sur la paĝaro. Tio estis la biciklon mi havis, kiam mi estis, ni diru, kvar hejme. Estas Teenage Mutante Ninja Testudo biciklado, en kazo oni ne povas diri, ĉar ĝi estas iom neklara. Vi povas ricevi ĝin nun en ToysRUs cxar mi pensas, pri $ 100. Sed la trajto de ĉi biciklon, kiun mi volas vi atentu estas tiuj ĝuste ĉi tie. Tiuj estas la trejnado radojn. Ĝis nun, vi estis porteblaj tra C. Kaj ni prenis longan tempo, du monatojn pli, iri tra C. Por tiuj proksima paro de lingvoj, ni ne tuj elspezi tiom da tempo. La trejnado radoj elspezi. Kaj ni iras al plonĝi en tiuj lingvojn rapide kaj movi tra ilin rapide, kio ne estas diri, ke Ni nur tuj forlasos vin naĝado el tie kun neniu maniero subteni vi mem aŭ elkompreni kiel tiuj lingvoj funkcias. Mi nur montris al vi liston de rimedojn por helpi vin. Sed memoru, ke PHP estas nekredeble simila al C. Ni transiru ĝin hodiaŭ kaj kelkaj el la diferencoj. Sed plejparte, ekzistas por maŝojn. Esas se kondiĉoj. Kiam vi volas solvi problemon, vi tuj uzi kombino el tiuj. Ĝi estas tre simila. La logiko devas esti tre simila al kion vi faris en la pasinteco. Kio estas vere nova ĉi tiu semajno estas la sintakso kaj kiamaniere vi esprimi vin mem. Kaj vi volas skribi por ciklo, sed eble aspektas iomete malsamaj. Aŭ vi volas krei tabelon, sed eble aspektas iomete malsamaj. Do memoru, ke, movante antauxen, La logiko estas tre simila al kio vi jam faris en la pasinteco. Sed vi nun tuj iros renkonti multa nova sintakso. Kaj ni ne tuj iru vi per ĉiuj elementoj de la sintakso. Do estas vere supren al vi, por diveni, Interreto aŭ per etendinte sur Diskuti aŭ retpoŝte min aŭ parolas al unu la alian, kiel skribi tion en PHP kaj kiel skribi SQL pridemandojn kaj kiel uzi HTML kaj CSS. Sed ĝuste tial vi scias, ĝi ne estas, ke ni provas ĵeti vin el tie denove naĝi la ŝarkoj. Jen kion vi devos probable faros kun via fina projekto, se vi elektos malsama lingvo, kiel IOS kaj Objective C, aŭ se vi decidas komenci programado en la estonteco kaj plonĝi en aliaj lingvoj: kiel Python aŭ Ruby. Ofte, la logiko estas tre simila tra ĉiuj el ĉi tiuj lingvoj, kaj la sintakso estas kio estas malsama. Kaj estos al vi, kiel la programisto, vojagxi uzi la ttt resursoj disponeblaj al vi kaj figuro , kiel eblas esprimi kion vi scias, kiel esprimi en C, en malsaman lingvon. Do ĉi tiu estas bona praktiko, ambaŭ pro viaj fina projekto, kaj denove, por kion vi kredeble faras post vi lasos CS50. Antaŭ ol ni pluiru, faras neniun havas iujn demandojn pri kio Mi jam faris ĝis nun? Granda. Ni movi plu. Unue, ni volas iri paroli koncize pri la chmod komando. Ĉi, ni faros en la komenco de via problemojn starigis. Unu el la tre unua instrukcioj por vi, post vi elŝutas la dissendo kodon, estas ŝanĝi la permesojn de la dosieroj kaj dosierujojn vi ricevos. Ĉu iu kuraĝas a diveno aŭ scii kial ĝi estas grava por ŝanĝi la permesojn de iuj dosieroj kaj dosierujojn en via komputilo? Avi - Spektantaro: Tiam neniu krom vi povas vidi kion vi faras? JASON Hirschhorn: okej. Do, se ni volas meti ion sur la retejo kaj vi permesojn starigis ke Nur vi povas vidi iom, tiam neniu alia povas vidi kion vi jam kreita. Kion alian? Jes. Spektantaro: Preventi iu alia ke vi ne volas vidi ion, de vidante ion. JASON Hirschhorn: Tio estas vera ankaŭ. Estas probable iu kodo kiu vi skribas, ke vi ne faru ĉu homoj vidi. Vi verŝajne OK kun homoj vidante via HTML kaj via JavaScript. Sed via PHP, dorso fino kodon, multajn la logiko de via kodo, eble la aferoj kiuj stokas iuj viaj pasvortoj por via datenbazo, vi ne ĉu homoj vidi ke tipo de informoj. Do estas grave, ke, ĉiu dosiero kaj dosierujo ni kreas havas permesojn aplikebla al ĉu aŭ ne oni volas personoj por vidi tiujn tipojn de dosieroj kaj dosierujojn kaj povos aliri ilin kaj potenciale eĉ ŝanĝos ilin. Do estas tri tipoj de permesoj. Tie estas legitaj permeson, kio signifas vi povas legi dosieron aŭ lerta la enhavon de la dosierujo. Tie estas la registran permeson, kio signifas ke vi povas ŝanĝi dosieron aŭ ŝanĝo dosierujo kaj tiam la ekzekuti permeson, kio signifas ke vi povas ekzekuti dosiero aŭ pli ĝuste, vi povas movi en dosierujo. Do KD ion se vi havas la permeson por ekzekuti lin, vi povas movi en tiun dosierujon. Ĉi tio estas mallonga ekzemplo. Denove, vi jam trapasis tiun en la problemo metita. Sed mi kreos dosierujon kun la mkdir komando. Mi ŝanĝis la permesojn. Ĉi tiuj du linioj efektive fari la ĝusta sama afero. Ĝi estas por ilustri ke la sintakson por ŝanĝi permesojn, ĉu vi do la a + x aŭ 711, de tiuj estas samaj. Ni rigardu suben ĉe ĉi belan tablon. Ni vidas, ke tie estas uzanto permesojn unue. Tio estas vi, la individuo, kaj via servilo, potenciale. Kaj tiam tie estas grupo kaj aliaj. La diferencoj inter tiuj du estas relative bagatela. Do ĝenerale, ni dispremitan tiuj kune. Sed esence, se ni havas dosieron vokis inkludas, ke ni volas esti povis eldoni mem kaj ke ni volas aliaj por povi ekzekuti, ĝi estas la permeson 711. Kaj ni vidas, ke malsupren tie en ĉi tiu tabelo. Ni havas legi, skribi kaj plenumados. Ĉar ĉiu el ni, ni deziras povi fari tiujn. Grupo kaj aliaj, ni nur volas ili povos ekzekuti. La vojon ni traduki tiun en kelkaj permeso estas per duuma. Do, se ni havas tri aĵoj, tio estas 1 en la ones kolumno, a 1 en la duope kolumno, a 1 la kvarpiede kolumno. Tio 7 rajton tie. Kaj ĉi permeso estas 1. Tiu permeso estas 1. Do 711 kiam estas la sama kiel donante mem legi, skribi kaj ekzekuti, kaj ĉiuj aliaj ekzekuti privilegiojn. Tiu linio ĝuste ĉi tie, ni ĝenerale Mi legis kaj skribu, kiam ni krei dosierujon. Do ĉi tiu lineo tie nur aldonas ekzekuti privilegiojn al ĉiuj. Do kiu estus simila al, en Krom tio, kion ni havas, aldoni 1, 1, 1 por ĉiuj. Dum tio, ĝi estas nenecesa aldoni legi kaj skribi. Sed se vi iras por uzi la numerojn, vi ne povas simple aldoni ion. Vi anstataŭigi ajn permeso estis tie kaj efektivigu ilin kun la nova numeron vi donos. Tio estis sufiĉe rapide. Ĉu iu havas demandojn pri ŝanĝi permesojn? OK. Se mi havas PHP-dosiero, kio permesojn mi volas ĝin havi? Ĉi tio estas en la problemo aro spec. Do vi povas rigardi la specifo kaj tiam legis al mi la respondon. Spektantaro: Vi volas la uzanto rajtas legi-skribi permesojn. Kaj vi volas everybody alie havi nenion. JASON Hirschhorn: Kaj kion nombroj estas tio? Spektantaro: 600. JASON Hirschhorn: 600. Do chmod 600 - kiam ajn vi printi oni PHP-dosiero, chmod ĝin al 600. OK. Mi havas dosierujo. Iu krom Jeff, Mi havas dosieron dosierujo. Kio permesojn mi volas doni al tiu dosierujo - Ankaŭ en la problemo metita spec, dekstre sube tiu respondo aŭ la antaŭan respondon? Ankaŭ potenciale sur la glito - Marcus. Spektantaro: Por la dosierujo, ĝi estas 711. JASON Hirschhorn: 711 - tiel dosierujon, kiun vi volas doni 711. Vi volas povi legi tiu dosierujo, ŝanĝi dosierujojn, movi en tiu dosierujo. Kaj vi volis ĉiuj aliaj por povi por navigi ene de tiu dosierujo, sed Ne nepre ŝanĝi la enhavon. Kion pri ne-PHP-dosiero, diri, JavaScript-dosiero? Kio permesojn cxu ni volas doni al tiu tipo de dosiero? Spektantaro: 644. JASON Hirschhorn: 644 - Kial ni volas doni al ĝi 644? Spektantaro: Por lasi al aliaj homoj legu ĝin. Kaj vi legas aŭ skribas ĝin. JASON Hirschhorn: Do dekstra, ĉiuj alia povas legi ke JavaScript dosieron. Kaj vi povas ŝanĝi tion, krom por povi legi ĝin. Do unu el la plej komunaj cimojn homoj havi kun tiu problemo starigis kaj iliaj fina projekto, se ĝi estas ttt-bazita fino projekto, ili ne metis la korekta permesojn. Kaj ili ne povos vidi ilian retejon. Aŭ aparta parto de sia retejo. Do certigu vi starigis la permesojn korekte. Ne nur supozi ke ĝi volas fari ĝin aŭtomate por vi. OK. Tio estis malgranda afero, kiun ni pasigis bonan kvanton de tempo plu, tiel ni povus najli ĝin. Ni pluiru al HTML. Kaj denove, cxar tiuj sekvantaj kvar temoj, ni tuj iru tra ili relative rapide. Do bonvolu senti libere halti mi je ajna tempo, se vi havas demandojn, ĉu ili estas rilatanta al kio mi kovru aŭ ion de prelego aŭ eĉ el la problemon agordi. Ĉesu min kiam vi bezonos. Kiam ni alvenos al la fino, ni nur komenci iri super la problemo aro. Do HTML staras por hipertekstaj Markup Language. Ĝi ne estas programlingvo. Ĉiuj faras estas strukturo via enhavo kaj ankaŭ provizi iu pridatumon. Do ekzemple, supozeble, multaj el Vi uzas Facebook antaŭe. Kaj vi povas inkludi ligojn en, aŭ vi povas meti ligilon kiel via stato. Kaj tiam, vi rimarkos ke ligilo ĉiam havas belan foton al ĝi, kaj kelkaj tekstoj. Ĝenerale, tio estas iom metadatumoj cxar retpaĝo. Kaj ĝi estas en Facebook-specifa pridatumon. Kaj tiam, kiam Facebook estas legante ke paĝo kaj la enmeto de tiu ligilo, ĝi serĉas la specifa pridatumon, do ĝi scias kion bildon por montri, kio titolo por montri, kaj kio abstrakta teksto por vidigi. Do ni povas inkluzivi metadatumoj kun nian retpaĝon uzante HTML. Kaj ĝi ankaŭ helpas nin strukturo la enhavo, ĝenerale, kio Ni volas iri kien. Ĉio en HTML estas ero. Kaj elementoj ĝuste ĉi tie - ĉi CS50, teksto estas la elemento. Kaj ĝi havas iujn etikedojn. Ĝi havas ĉi etikedon. Kaj ni rimarkos estas a je la komencante kaj tiam oblikvo a, tiel fermante la a etikedo ĉe la fino. Kelkfoje, ne estas malfermita tag kaj proksima etikedo. Ekzistas nur unu aferon. Ni vidos ekzemplon de tiu la sekvantan glito. Do vi ne bezonas malfermita kaj proksima etikedo. Sed por tio, ni estas encasing ĉi CS50 elemento en la a ankron etikedo. Kaj esence, tiuj etikedoj diru la retumilo, kion fari kun la apartan elementon. Do denove, CS50 estas la teksto ni tuj vidos. Kaj ĝi tuj estos tipo de ankro. Ankra estas esence uzataj por ligiloj al io. En aparta, kiel vi povas Jam diri, tio estas alligi la CS50 hejmpaĝo. La sekva parto de la etikedo - aŭ ĝenerale, parton de etikedoj estas atributoj. Kaj ni vidas tie ĉi, por ke la etiketo havas unu atribui, ĉi href atributo. Kaj ili modifas apartan etikedo. Fakte, se vi iros al unu el la retejoj aŭ la referencoj Mi donis al vi antaŭ aŭ serĉi la etiketo enreta, Vi rimarkos ke estas barelon da eblaj atributoj. Tio estas verŝajne unu de la plej komunaj. Tio diras al mi krei ligi al la specifa paĝo. Kaj atributoj ĝenerale estas donitaj, se ne ekskluzive donis, en ŝlosilo-valoro paroj. Do jen la ŝlosilo, href. Kaj la valoro estas ĉi tie ĉi. Kaj kiu venos en oportuna poste, kiam ni ekuzi kelkajn bibliotekojn por helpu nin kodo en JavaScript aŭ skribi HTML-enhavon. Ni ofte tuj esti - same kiel ni farus tabelo krampo 0 kaj ke donus al ni iun valoron. En la estonteco, ke ni faras multajn aferoj kiel iu krampo href. Kaj tio donos al ni la valoron de la href aux se ni volas aktualigi la href klavo kaj poste doni ĝin apartan valoron. Do ĝuste kiel per arrays, kie ni havis ŝlosilo 0 aŭ ŝlosilo 1 aŭ ŝlosilo 2 aŭ eĉ kun hash tablo, nu, kun via hash tabloj tiel, vi versxajne devis - ĝi Estis tabelo, do klavo 0, ŝlosilo 1, ŝlosilo 2. Tio indekso tie, ni povas pensi pri tio kiel ŝlosilo. Kaj la valoro estas kio ajn stokis tie. Ĉiuj el tiuj atributoj estas klavo-valoro paroj. Kaj tio estos grava por ŝanĝi ili aŭ ĝisdatigi ilin aŭ enmeto ilin poste. Fine, vi jam vidis tiun strukturon antaŭe, sed ĉi tiu estas la plej baza strukturon de HTML-paĝo. Ĉe la supro, ni diras al vi ke tio estas fakte HTML. Kaj tiam ni havas malferman HTML tag kaj proksima HTML-etikedo. Do ĉio ene de tio estas la HTML. Ni vidas la kapo kaj la korpo. La kapo de via dokumento ĝenerale inkludas kio? Ajna divenojn por kio vi meti en la kapo? Spektantaro: Vi metu la titolo kaj stilo. JASON Hirschhorn: La titolo. Tio estis granda diveno. Mi eble klinis vin ekstere por la. Kion estas kelkaj aliaj aferoj? Ni menciis unu el tiuj, kiuj povus iri en la kapo. Spektantaro: Li diris, stiloj. JASON Hirschhorn: Stiloj - do se vi volas ligi en JavaScript aŭ eĉ CSS, kiu vi parolas pri kiam vi parolas pri stiloj. Alia dosiero, kiun vi volas ligi en ekster-dosiero, kiu probable irante en la kapo. Kion alian? Ni menciis kelkajn diapozitivoj antaŭ unu el la aferoj ke HTML povas fari por vi. Ĝi povas havigi - komenciĝas per M - Spektantaro: Metadata. JASON Hirschhorn: Metadata - tiom multe el la pridatumo iros en la kapon, ĉar kiu ne nepre bezonas esti parto de la korpo de via kodo. Tio estas ĝenerale - la korpo estas la enhavo, kion iu vidas. Kaj tial mi simple donis do la respondo al mia sekva demando. Sed la korpo estas ĝenerale la enhavo ke tuj montriĝos en la retpaĝo. Kiel ni vidos, komplika retejoj inklinas intermiksas aŭ ŝanĝi tion, kion ili metis en la kapo kaj la korpo. Sed ĝenerale, la kapo enhavas aferojn ke la uzanto ne tuj vidas sur la ekrano. Ĝi kunligas en aliaj dosieroj kaj provizas metadatumojn. Dum la korpo enhavas ĉiun la uzanto tuj vidas. Ĉiu ideo kion ĉi p tag signifas? Spektantaro: Paragrafo? Spektantaro: Print. Spektantaro: tio ne signifas presi. Spektantaro: Ĉu ĝi signifas alineo? JASON Hirschhorn: Alineo - tia ĉi estas alineo. Kaj ĉi p etikedo, mi povus esti simple tajpitan tio sur la ekrano, kaj poste inkludis linerompo fine de ĝi. Iu scias kiel inkluzivi sxnuro ripozon? Spektantaro: pr - JASON Hirschhorn: pr - Spektantaro: Slash pr? JASON Hirschhorn: pr oblikvo staras por linerompo. Sed alineoj havu specifan strukturado. Kaj ni ricevos por formatado en dua, kiam ni parolas pri CSS. Sed kio estas malantaux tiuj p etikedoj Mi havas kelkajn defaŭlta formatado asociita kun ĝi, probable iuj Interspacigo en inter malsamaj paragrafoj. Kaj tio estos unu vojo diferenci blokoj da kodo. Ajna alia etikedoj - kio estas aliaj etikedoj ke vi vidis? JASON Hirschhorn: H1 tra h6. h1 tra h6, kaj kio estas tio? Spektantaro: Ĝi estos signifi kiom granda kaj aŭdaca la literojn are. JASON Hirschhorn: dekstra, Ĝi staras por kaplinion. Kaj tiel header1 estas granda titolo. Ĝi verŝajne, implicite, kuraĝi, a granda tiparo, probable fokusita la ekrano, la tutan vojon malsupren al h6, kiu estas pli malgranda tiparo, malpli elstaris. Kompreneble, vi povas, vi estas la CSS-dosiero aŭ ie en via kodo - kiu, denove, ni ricevos por ke en la dua - ŝanĝi kion la defaŭlta konduto de h1 etikedo estas. Sed memoru, ke Chrome, Safari, Firefox, Internet Explorer ĉiuj havas defaŭlta serĉas multajn tiuj normo etikedojn. Vi povas, denove, ĉiam ŝanĝi kion ili aspektas. Ajna alia etikedoj ke ĉiuj vidis? Jes - Spektantaro: A div ejo. JASON Hirschhorn: A div etikedo - div etikedon ne havas ajnan integrita en formato, por si mem, kiu estas uzata por bloki ekstere malsamaj tipoj de kodo. Ajna alia etikedoj? Jes. Spektantaro: Li - JASON Hirschhorn: Li - kio estas li por? Spektantaro: Listo. Spektantaro: Listo JASON Hirschhorn: li estas por listo elementoj. Ekzistas du specoj de listoj. Kio estas la du tipojn? Spektantaro: Ordema kaj neordigitaj. JASON Hirschhorn: Ordema kaj neordigitaj - do ul bazaĵojn por neordigitaj listo. Tio estas, se vi volas kuglo noti, liston de kugloj. Ordigita listo estas numerita listo. Kaj tial vi devos fari malferman ul etikedon kaj poste tunoj de lerta elementoj kaj poste fermi la ul-etikedo. kaj tiu volo krei neordigitan liston. Ni tuj vidi iujn ekzemplojn de HTML en iom. Sed antaŭ tiam, mi volas ricevi por la CSS. Kaj CSS staras por Laŭtemaj Stilo Sheets. Kaj tiu estas tre proksime rilatanta al HTML, sed iomete malsama. Tio helpas vin formati tuta enhavo ke HTML strukturoj. Do en CSS, ni ĝenerale ne volas stiligi ĉiu sola kaplinio aŭ ĉiu solan bildon aŭ ĉiu solan alineon. Ni volas stiligi iuj elementoj aŭ eble specifa elemento. Kaj la vojon ni stiligi specifa elemento estas doni al ĝi ID. Do tiu estas atributo. Ĝi havas ŝlosilon kaj valoro. ID estas la ŝlosilo. Logo estas la valoro. Mi plukis logo hazarde. Kaj se vi donos ion al ID, Ĝenerale, kiu devus nur esti donita al unu elemento. Kaj tiam, en via stilo tukon, vi povas stilo kiu aparta elemento, tamen vi volas rigardi. Se vi volas stiligi nombro de elementojn, eble estas certa klaso de titolaj, nur kelkaj el viaj titolaj. Eble ĝi estas kaplinio kaj bildo kaj alineo vi ĉiuj volas esti centrita. Tiam vi povas doni al tiuj grupoj de elementoj tuta klaso. Kaj vi povas doni al la klaso specifaj stiloj. Do IRU kaj klaso estas du manieroj rompi vian kodon, do vi povas helpi estos pli specifa en kio vi stilo. Ekzistas tri manieroj stilo. La unua estas, kun tiu stilo atributo. Do vi vidas, la stilo ŝlosilo estas stilo. La stilo valoro estas reale alia klavo valoro listo. En ĉi tiu kazo, mi plukis unu klavon, text-align. Kaj mi diris, centro. Vi povus demandi vin mem je tio punkto, kiel estiĝis mi scias pri text-align. Kion tio eĉ fari? Tio estas bonega demando demandi, kaj Ni tuj atingi tien en sekundo. Do jen unu vojo stiligi ion, nur donu al ĝi la stilo atributo. Alia maniero por stiligi io estas - tio estas Akshar menciita antaŭe. Vi povas uzi stilo etikedoj kaj metis tiun en la kapo de via HTML dokumento. Do vi estas esence dirante: la enhavon ene tien Estas iuj stilo enhavo. Kaj la formato por tio estas la vortoj vi ĉu stiligi kaj poste, ene de krispa krampoj, la ŝlosilo valoro paro da atribuas ke vi volas doni al ke aparta tipo de elemento. Fine, kaj tio estas la plej komuna vojo. Kaj jen estas la maniero ni faru ĝin en p aro 7. Ĝi estas ekstera stilo folio. Do vi havas. Css-dosiero. Kaj interne de gxi, vi vidos multajn aferoj kiuj aspektas kiel ĉi tio, la nomo de iu tipo de elemento aux ID aŭ klaso kaj poste, ene de krispa krampoj, liston de ŝlosilaj valoro paroj. Kompreneble, se vi krei eksterajn dosiero, vi tuj bezonas inkluzivi ĝin - akra inkluzivi, kiuj volas esti la C analogio - en via HTML-dosiero. Do vi devos inkluzivi tiun kodo en via HTML-dosiero. Tiu estas la nomo de la dosiero kaj alprenanta ĝi estas en la sama dosierujo. OK. Tio estis tre. Kaj ni nun tuj spiri kaj vidi en iu reala, vivas retejo kaj esplori tiun pli. Sed antaŭ ol ni faras tion, ĉu iu havas iujn demandojn? Do se vi volas fari ĉi kune kun Mi, ni povas iri al la aparato. Kaj mi elektis la CS50 ĉefpaĝon. Vi povas fari tion kun ajna TTT-ejo. Sed kial ni ne komenciĝas per la CS50 hejmpaĝo? Ni fortigu. Mi fakte tre rekomendas vin fari ĉi kune kun mi, ĉar kion ni tuj faros nun tuj estos nekredeble utila por vi, ne nur en P-Serio 7, sed en P-Ara 8 tiel. Jes. Spektantaro: Ĉu ekzistas maniero por fari komentojn en HTML, sen uzi PHP? JASON Hirschhorn: Jes, vi povas fari komentojn en HTML. Spektantaro: Kio estas la sintakso? Spektantaro: Exclamation markon haltostreko haltostreko. Spektantaro: okej. JASON Hirschhorn: Jes. Tio estas la sintakso. Vi povas fari komentojn en HTML. Vi povas fari komentojn en PHP. Kiel vi vidos, komenti en HTML volo ankoraŭ montras supre, kiam ni rigardas la HTML-fontkodo de aparta retejo. Do tiu cs50.net. Se vi rajtas klaki en plej modernaj retumiloj en plej neniun paĝon, vi rigardi la paĝon fonto. Do ni faru ke sur CS50. Kaj jen kaj jen ni vidas giganto afero. CS50 efektive aspektas bela agrabla. Multaj retejoj ne volas rigardu ĉi bela. Se vi iras al Google-hejmpaĝo kaj malfermu ĝin. Ĝi ne serĉos ĉi bela. Sed vi rimarkas ke, ĉe la supro - tio estas speco de malgranda. Ni faras ĉi granda. OK. Ĉe la supro, DOCTYPE HTML, tio estas familiara. Tiam ni vidu la malferma HTML-etikedo kaj la kapon, ĝuste ĉi tie, tuta de tiuj meta-etikedoj. Kaj vi povas vidi ĉi og, ne tuj iru en kiu nun. Sed mi estas preskaŭ pozitiva en tiu tiuj estus Facebook. Tio estas fakte la Facebook. Mi kredas, ke staras por malferma grafeo. Do memoru, mi menciis ekzistas Faceboook-specifa metadatumoj vi povas doni al iu paĝo. Tio estas kion estas korekta ĉi tie. Do kiam vi ligas ĉi paĝon en Facebook, la bildo tuj montris Estas ĉi tiu bildo ĉi tie. Kaj vi reale vidi, ke ĝi estas Facebook, ĉar estas la Facebook bildo. Sed ĉiukaze, estas duumaj flanken. Do ni havas kelkajn metadata-etikedoj ĉi tie. Ni vidas la CS50 titolo. Kaj denove, la titolo estas kio eliras ĝis ĉi tie en la retumilo langeton. Oni vidas ĉi estas kunligi, ĝuste ĉi tie, ekstera JavaScript-dosiero. Ni ne parolis pri JavaScript multe, sed venontan semajnon - kaj certe se vi faras ttt-bazita problemo aro, vi estos uzanta JavaScript. Jen kiel vi ligas en ekstera Javascript dosierojn. Ni vidas, ĝuste ĉi tie, fine, la CSS stilo tukon, kiu dokumentas tiuj stiloj de tiu kodo. Ni efektive malfermi ke supre kaj rigardu vere rapide. Tio aspektas freneze. Ne estas maniero mi estus povis tralegi. Do vi povas reale tamen, se vi prenas rigardo, vi povos ia vidas, ke estas - tie ni iru. Tio aspektas kiel iu kiu vidis antaŭe, fonkoloro, fiksante ŝin egala al iu ruĝa-verda-blua valoro. Ĉi stuff ia devus ne ŝajnas, ke fremda, kvankam, kiam prezentis kiel tiu, ĝi povas esti iom superfortaj. Ni ne tuj rigardi ĉi CSS dosieron aŭ elspezi multan tempon sur ĝi, ĉar tio estas, denove, belaj malfacile legi. Ni revenu al tio HTML-paĝo por CS50. Kaj ni rulumu malsupren por la korpo. Kaj interne ni vidas ĉi div etikedo. Ni vidas header right here. Ni vidas la ankran etikedo. Kaj tiu listo elemento estas donita al specifa klaso. Kaj ni vidas, ke la klaso ripetis denove kaj denove. Tie vi trovas Curtis. Tie estas la komento en HTML5. Kaj kiel vi rimarkas, ni povas ankoraŭ vidi ĝin, sed ĝi ne montrante supren. Ĝi estas vere vere interesaj. Ĝi aspektas kiel ĉi partituroj listo elemento estas komentis eksteren. Se ni iras al tiu paĝo, denove, ankoraŭ Aperas tie, tiel interesaj. Ho, jen kial, ĉar de tiu sekva linio. Kion alian ni vidas de intereso? La resto de ĉi tiu estas pli konfuza, en trakti tiun dekstran duonon de la TTT-ejo, kiu estas iom iom pli kompleksa. Do ĉi tiu estas kion iuj HTML tuj aspekti. Por mi, tamen, tio estas iom blindiga, kaj ĉi tiu ne helpas al mi, ke multon. Tamen, estas iu kiu tio, fakte, helpu min a lot. Kaj tio estas kion mi uzas kiam mi estas provi elkompreni kiel io aspektas tiel, kiel ĝi faras, aŭ kiel vi povas Mi faros ŝanĝojn al mia paĝaro. Kaj tio estas developer ilo ke estas konstruita en Chrome. Do, se vi iros al oriento tri trinkejoj dekstra tien kaj iru malsupren al ilojn klaki sur Developer Iloj, iom fenestro pop supren ĉe la malsupro de la paĝo. Kaj precipe, Chrome, ĉar ĝi estas mirinda, estos formati ĉi fenestro kaj preni la HTML kaj fari gxin rigardu multe pli agrabla por vi. Do nun estas reale kelkaj faldeblan HTML, kiun vi povas esplori inspekti la elementoj de la paĝo. Se ni volas rigardi la korpon, gxi vere elstaras. Kiam vi rulumu super parto de la HTML, malsupre en ĉi tiu fenestro, ĝi volas reliefigi la parto ĝi estas parolante pri la granda fenestro. Do mi denove provi blovi ĉi supren iom. OK. Do ni malfermu la korpo. Kaj mi rulumado super tiu maldekstra div. Kaj vi rimarkos ke ĝi estas reliefigante tiu maldekstra duono de la ekrano. Do ni alklaki sur tiu kaj pligrandigi tio. Interne de ĝi, ĝi aspektas kiel ekzistas du divs. Tie estas tio unua div. Mi ne vidas ke ĝi elstaris. Mi ne scias, sed ĝi aspektas kiel tiu dua, lasis interna, estas la enhavo sur la maldekstra flanko de la ekrano. Tiam ne estas tiu afero nomata kaplinion. Ĝi aspektas kiel tio estas reliefigante la CS50 parto. Se ni malfermos kiuj supre, oni vidas ke ĝi estas nenio pli ol kaplinio 1. Ĝi estas donita ID, kaj ĝi estas donis la tekston cs50. Do denove, rigardante ŝin per ĉi konzolo aŭ uzante la developer iloj pane ĉe la malsupro de la ekrano fabrikas esplori ĉi retejo, espereble, oni multe malpli impona kaj multe pli atingebla. Ĝi ankaŭ permesas al ni kompreni ke tiu TTT-ejo, kvankam ĝi aspektas tre bela kaj agrabla, ne estas ĉiuj kiuj multe pli ol kion vi tuj estos faranta Problem Ara 7. Kaj tio estas plene ene vian kapablon krei. Se ni deziras - la aliaj cool afero pri uzante tiujn iloj estas, se vi dekstre alklaku la titolo, vi povas redakti la HTML. Do ni nomas ĝin Jason. Kaj nun vi rimarkos Mi ŝanĝis la HTML de ĉi tiu paĝo. Kompreneble, mi ne ŝanĝiĝis gxi konstante. Se mi trankviligi mian retumilo, tiam ĝi farus reiru al la originalo de HTML. Sed foje mi volas elpurigi mia kodo, kaj mi ne volas rigardi nur devas mia gedit fenestro kaj provi kompreni kio okazas. Mi volas vidi, kio okazos vivas. Do mi devos redakti kodo ŝatas ĉi kaj instigi ĝi la vojo mi deziras gxin rigardi. Kaj tiam mi devos fari la ŝanĝojn en mia kodo. Kaj mi trovas, ke ĝi estas multe pli facile kiam vi povas fari tion, fulmobatita, kiel tiu. Diru, denove, ni volas fari alian hazardo, ĉar ni esploras kun HTML kaj CSS ĝuste nun. Mi povas redakti la HTML nun. Kaj mi tuj inkluzivi ligilon. Do mi tuj ŝanĝos CS50 hejmo paĝon, do ĝi estos ligas al - diru - mia hejmpaĝo. Kio estas la nomo, se iu memoras, aŭ kio estas la atributo mi volas doni ankro langeto kiam mi volas gxi ligi aliloke? Spektantaro: href? JASON Hirschhorn: href - Do nun, vi vidos ke tie Estas Substreki sub Jason. Tio estas ĉar Chrome, implicite, donas ankrojn an Substreki. Vi verŝajne vidis ke antaŭ kiam vi jam iris al retpaĝo. Aĵoj kiuj estas ligiloj estas substrekita kaj en bluaj. La defaŭlta stilo por ligilo estas ĝenerale substreki kaj metis gxin en bluo. Se mi ne ŝatas tion, Mi povas ŝanĝi tion. Kaj ni ŝanĝos ĝin en sekundo. Sed nun, ĝi ankaŭ rimarkas ke, se mi ŝvebi super tio, en la fundo kaj restis el la ekrano, dekstre supre la vorton elementoj estas la ligilo, kiun mi donis ĝin. Do, se mi faris alklaki ĉi - kaj ni povas dekstre klaku sur tion, malfermi novan folion. Ĉi tio ne estas vere mia hejmpaĝo. Ĝi estas nur mia nomo. Tie vi iros. Ni nun turni ĝi enen ligilo. Ni esploros kelkajn CSS tiel. La belega afero - kaj mi tuj fari ĉi iom pli malgranda - pri ĉi konzolo estas, ke freneza CSS folio ni vidis antaŭe, kiu estis vere malfacile analizi, nun estas bele elspezata por ni sur la maldekstra flanko de tiu panelo. Do ni povas rigardi. Kaj se ni disvastigi ĉi stiloj langeto, ni povas vidi ĉion de la malsamajn stilojn kiuj asocias kun, en ĉi tiu kazo, tiun apartan elementon, tiu ligilo elemento. Se ni faru la komponaĵo stiloj langeto, ke nur montras al ni, ne tie, kie ĉiu devenas, sed esence ĉiu el tiuj stiloj kiu operacias sur tiun apartan elementon ĝuste nun. Kaj diru, ni volas ŝanĝi ĝin iom. Do tiu estas ĉiuj stiloj, kiuj estas funkcianta en tiu aparta elemento. Diru ni ja volas ŝanĝi ĝin, ĉar ni deziras vidi kiel io aspektas. Kaj ni nur ludas ĉirkaŭ ĝuste nun. Aŭ ni volas testi ion, antaŭ skribi gxin en la kodo kaj puŝante tio kaj farante ĝin vivi. Ni povas iri al la stiloj langeton. Kaj en la unua skatolo diras, element.style. Kaj en tie, vi povas enmeti, vi povas aldoni ion. Do mi deziras - ni iru al mia ligilo kaj la agordi la fonan koloron. Kaj ĝi efektive autofills ĝin por vi, ĉiuj eblaj ecoj. Fona koloro, kaj mi volas fari, ke blua. Blus ne estas vorto. Blua estas vorto. Ĉu mi vidos sin levas? Ho, estas ke ĉar ĝi estas en la href? OK. Do mi ne vidas ian ŝanĝon tie ĉi. Kaj tio estas ĉar, se ni reliefigas la ligilo, vi rimarkos ke la ligilo ne vere kontrolis la ecoj de tiu aparta elemento. Estas vere, se oni malfermas la ligilo, ĉi header right here tio estas kontroli kion gxi aspektas. Do se mi volas fari la fono blua, mi vere devas ŝanĝi fonkoloro de la kaplinio elemento. Nun ni vidas, ke la fono estas blua. Do denove, ĉi rapide povus esti iri per tiu materialo bela rapide. Sed tio estas esence kio vi tuj faros. Ĝi ne estas Problem Ara 7, sed certe kiam vi estas kodigo de la TTT. OK. Mi volas fari la fono blua. Eĉ se, en tiu kazo, blua aspektas bela malbela. Mi povos iri tien, amuziĝu. Mi vidas ke ŝanĝi ĝin al blua ne funkcias en la a. Mi devas efektive ŝanĝas la kaplinio ero por inkludi la bluan fono. Kaj tiam, se tiam mi iros al mia CSS dosiero, kiel mi reale povas tion fono esti blua kaj faru tiun ŝanĝon bastono? Ĉar se ni rimarkos se mi refreŝigos la paĝon, ĉiuj ŝanĝoj Mi faris foriris. Do mi komprenis, OK, mia fono estas blua. Mi bezonas iri en tiun header1 elemento kaj ŝanĝas fonkoloron al blua. Kjel mi reale fari tiun ŝanĝon? Nu, memoru, ke, se ni iras ene de tie ĉi, ĉi kaplinio, la titolo havas ID. Kaj tio estas titolo. Kaj tiel en nia CSS-dosiero, ni povas diri, OK, prenu ion kun ID de titolo kaj donu lin ĉi aldona propraĵo. Kiel ni referencas iun kun la ID de titolo, iu ajn ideoj, aŭ iu ajn scias kiel ni referencas IDs en niaj CSS-dosiero? A hash, tio estas ĝuste pravas. Kaj vi havas aludo ke ĝuste ĉi tie. Do ie en ĉi CSS-dosiero, ne estas tiu linio de kodo - # Lasis # maldekstra-ena # header # titolo. Kaj gxi donos gxin rando malsupro, difinanta la rando malsupro de tiu ĉi apartan elementon. Nu, se mi volis ŝanĝi tion, Mi devus iri en tiun CSS-dosiero. Kaj mi povis nek trovas tiun parton de la CSS-dosiero. Aux mi povus skribi miajn proprajn. Mi povus fari hash titolo krispa streĉa kaj tiam fonkoloro dupunkto blua punktokomo kaj proksima ke krispa streĉa. Kaj kiu ŝanĝus la fono koloro de ĉi tiu ero al la bluo. La kialo ke ili donu al vi tiel multaj tie estas ke, ĝi estas necesa en tiu kazo, ĉar titolo estas unika identigilo. Sed kion vi povas fari estas nesto aferojn. Do tiu estas diranta, OK, iru maldekstren. Tio estas tre malgranda. Mi pardonpetas pro tio. Sed iru al la afero kun ID maldekstren. Interne de tiu, serĉi aferon kun ID lasis ena. Interne de tiu rigardo, serĉi la afero kun ID kaplinion. Interne de tiu, serĉi la afero ID titolon kaj ŝanĝi la ID titolo. Do tiu estas nur vojo de nestumado aferojn. Kelkaj homoj ŝatas nesto, ĉar tio faras ĝin iom pli klara. Vi vidos ĉi tie ankaŭ, dekstra ĉi tie, ne estas hash. Ĝi simple h1. Tio estas ĉar h1 estas donita la nomo de ĝenerala etikedo. Kaj tie estas kelkaj CSS propraĵoj asociita kun ĉiu sola h1. Do, se mi trovis alian h1 sur ĉi paĝo: Mi ankaŭ vidas, ke ĉi tiu stilo estis aplikita al ĝi ankaŭ. Se mi volis apliki stilon al klaso, Kiel do mi referenci klaso aŭ paroli pri klaso en CSS-dosiero? Spektantaro: Dot. JASON Hirschhorn: Ĝi estas per punkto. Do ni revenu al tiu paĝo antaŭe. Se mi faras hash ID. Tio ŝanĝas la stilon de la afero per identigilo. Aŭ bedaŭras, se mi faras hash logo, jen trovi la aferon kun la ID de logo kaj donante al ĝi apartan CSS stilo. Se mi faras ion. Supro, tio trovi ĉiu kun la klaso de supro kaj ŝanĝanta ĝia stiloj. Se mi simple h1, kiu trovu ĉiun sola h1 kaj donas gxin la kiom stilon mi volas doni ĝin. Se mi faras h1 spaco kaj tiam. Supro. Kiu iros trovi ĉiujn h1s kaj poste ĉiuj aĵoj kun la klaso de supro kaj tiam nur ŝanĝi tiujn stilojn por kion ajn mi volas doni ĝin. Kaj denove, ni povus esti skribita iuj de ĉi sur nia propra. Sed ni ne estus alveninta kiu for. Multe pli bone, ŝajnas fakte iri sur reala vivas retejo kaj vidi kiel Ili faras tion, kaj rigardi ĉiujn fantazia tion vi ricevas fari. Ni rigardu unu pli retejo antaŭ ol ni pluiru. Kaj jen estas unu, ke vi probable igi konanta. Ĉi tio estas CS50 Financoj. Do denove, vi povas efektive iros kaj observi ĉi CSS dosieron sur vian komputilo, ĉar vi jam elŝutis ĉi CSS-dosiero, se vi elŝutis la problemo metita. Ni povas iri al Iloj kaj Developer Iloj. Kaj ni vidas multe pli simplaj HTML-aranĝo. Ni havas supro, mezo kaj malsupro. Kaj cetere, iu vi devus esti familiara kun, ĉar vi jam rigardis tra la dissendo kodo cxar cxi tiu semajno problemon agordi. Ĉe la supro estas, por la kodo, sola bildo nomata. Kaj kiu estas fonto de la bildo. Diru, mi finis ĉiujn kio Mi volis por Problemo Ara 7. Kaj ĝi laboras korekte, sed Mi volas ŝanĝi kiel aspektas. Kaj mi volas ŝanĝi la fonon el la supro de la paĝo, por, ekzemple, blua. Se estis mi, ke mi venas en tie kaj eltrovi, OK kio do mi volas ŝanĝi. Ni vidu, div ID supro, ke rigardojn kiel la supro de la paĝo. Do ni iru tien. Ni provu ŝanĝi la fonkoloro. Ni iru do Alico bluaj, ĉar tio estas pli agrable unu. Kaj vi rimarkos, ke - vi verŝajne ne povas vidi tion. Sed estas helbluaj, apud la CS50 logo. Ni ŝanĝu ĝin anstataŭ al ruĝa. Kaj vi rimarkos nun mi ĵus ŝanĝis la fonkoloro al ruĝa. Do nun mi irus en mian CSS-dosieron kaj tajpi # supro krispa paren ĝuste ĉi tie. Vi povas vidi la kodo dekstra ĉi tie, krispa streĉa. Kaj poste, mi aldonus fono koloro: ruĝa. Kaj tiam, tie volus esti krispa streĉa. Do jen kiel mi devus esplori kaj eksperimenti kun formatting sur la CS50 Financoj ejo. Mi povus fari ĝin ĉi tie kaj provo ĝin sur mia retumilo. Kaj poste, mi povis iri en mia reala kodo kaj faru al la ŝanĝoj kiuj volas efektive iru vivas kaj ke homoj reale vidi, se oni venu al mia specifa loko. OK. Tio estis tre. Mi pardonpetas pro irante tra tiel rapide. Ĉu iu havas demandojn ĉe ĉion pri HTML aŭ CSS? Spektantaro: Cxu vi povas simple transiri kiel vi ligita kio igis Jason, denove? JASON Hirschhorn: Kio Ĉu vi volas diri ligita? Spektantaro: Vi provizis ligilon al alia retejo, uzante la ankron. JASON Hirschhorn: Do vi demandante, nur genéricamente, kiel vi faras ligon? Spektantaro: Jes. JASON Hirschhorn: okej. La kodo por fari ligon - Spektantaro: Neniu, same kiel en la HTML. JASON Hirschhorn: Sube tie, vi aludas? Do se mi volas enmeti ligilon ie, dirante: CXi tiu estas la HTML en mia paĝo ĝuste ĉi tie. Tiu estas la HTML. Eble estas malfermita en dosiero, index.html. Mi volis eniri; Ni havas ĉi kopirajto John Harvard ligas al io. Do ni devos redakti ĉio ĉi kiel HTML. Ĉiuj vi faras inkluzivas la a, do heligas proksiman krampo ĉe la komencante, kaj tiam krampo oblikvo proksiman krampo ĉe la fino. Do nun mi inkludis ankron etikedo. Kaj efektive, se vi alklakos el tio, gxi nun formati gxin redaktanton kiel HTML. Kaj diru, ni volas ligi ĝin. Ni ŝatus vin href atributo. Kaj ni diras - Kaj nun, kiel vi rimarkos, kopirajto John Harvard estas blua. Kaj kiam mi rulumas super ĝin, ĝi estas nun ligilon. Do vi povas skribi, ke kodo. Vi povas ĉirkaŭi pretty much ion vi volas en ankron etikedon kaj igi ĝin enen ligilo. Spektantaro: okej. Havas ĝin. JASON Hirschhorn: Kaj se mi ne volas ĝin - kompreneble, foje homoj inklinas pensi pri tio, ke ĝuste rigardu blua genéricamente kaj substrekitan estas Ne la plej bela maniero por fari ligon. Do, se mi venos ĉi tien, vi vidos ke, ie en CSS-dosiero, tie estas skribita ĉi a kaj tiam du krispa krampoj. Do diru ke, ligiloj, mi ne faras volas ilin fariĝi blua, prefere mi ĉu la koloro de ligo al estu ĉi tiu bela magenta. Ni donu al ĝi la koloron. Ni reprenos magenta. Nun, ĉiuj ligiloj sur mia paĝo havas fariĝis ĉi belan koloron de magenta. Kelkaj homoj ne ŝatas kolorojn ĉe ĉiu. Kelkaj homoj ne ŝatas substrekas. Vi atingos pick. Kun ligiloj, vi povas stiligi kiel ili aspektas unufoje vi jam vizitis ilin. Kiel vi rimarkos sur tereno de paĝoj, Ligiloj turni purpura je vi vizitas ilin. Vi povas ŝanĝi tiun koloron kiel bone. Jes. Spektantaro: Do ​​vi anstatauxigos por ĉiu simpla ligilo. Sed se vi nur volis fari tiu ligilo mem, ĉu vi nur faras en la ID malsupro aŭ ion? JASON Hirschhorn: Tiel granda demando. Kiel vi rimarkis, tie, mi sxangxis kelkajn parton de la CSS kiu aplikas al ĉio tio estas A. Se mi volis nur faru tion ligilo malsupre, mi irus al mia CSS-dosiero kaj probable fari same kiel vi diris, hash malsupro spaco. Kaj tio donus al mi ĉiuj Kiel en la fundo. Aux mi povus, alternative, doni al ĝi unika ID kaj tiam nur faru hash ligilo. Kaj kiu permesus min por ŝanĝi ĉi tion. Tamen, ĝuste doling el IDs willy-nilly estas ĝenerale malbona praktiko, ĉar tiuj devus esti unika. Kaj ju pli vi havas tiuj, gxi povas akiri iom konfuza. Jes. Spektantaro: Cxu vi povas doni la saman IRU al multnombraj posedantoj? JASON Hirschhorn: Teknike, jes. Nenio okazas halti vin, sed vi ne devus Vi devus doni ĝin al klaso. OK, ajnan alian demandoj pri HTML aŭ CSS? OK. Estu ni pluiru al PHP. Ho, jes. Spektantaro: Kio estas pri tiuj retejoj kiujn signifas ke ni povas redakti ilin antaux ni fortigu. Sed iam ni fortigu lin revierta Reen al la komencan HTML? JASON Hirschhorn: Granda demando - do kiam ni ŝarĝis ĉi retpaĝo, ĝi estas en HTML. Kaj ĝi estas JavaScript. Lia PHP estas ekzekutita kaj doni al ni kion ajn Tipo de paĝo ni vidas. Kaj ĝi estas kreitaj kelkaj HTML, iuj Javascript, kaj iuj CSS. Kaj kiu estas nun atingebla de nia komputilo. Kaj kopion de tiuj dosieroj estas savita loke sur nia komputilo, dumtempe. Do ni povas eldoni, ke loka kopio. Sed kompreneble, ni ne redaktado La servilo kopion. Kaj kiam ni refreŝigi la paĝon, ni preni alian servilon kopion. Kaj tial ni vidas aĵojn reen kiel ili estis. Se ni sukcesis, de tie, por redakti la oficiala TTT-ejo, ni volas havi multajn de problemoj. Spektantaro: Jes, tiel ni povas legi kaj skribi ke kopion. JASON Hirschhorn: Ĝuste. Ni nur fari lokajn ŝanĝoj ĉi tie, sed denove, tre helpema por esplori, ofte. Kiam mi skribas mian fina projekto, por Ekzemple, mi volas vidi, kiel iuj retejo faris ion rigardo la vojo ili faris. Mi iros en kaj uzi tiun pane malsupren ĉi tie, por rigardi kion CSS ili donis al aŭ kia koloro ili plukis aŭ kiel ili havas ĝin tiel ke, kiam vi ŝvebis super io, la listo mallevigxis en bela kaskadan modo. Ĝi estas granda vojo por inspekti kion aliaj retejoj fari kaj prunti de ili. Ni movi antaŭen al PHP. PHP signifas, en rekursia senco, PHP Hypertext Processor. Kaj PHP, kio okazas fari estas ekzekuti kodon servilo flanko. Do ni neniam tuj vidu la PHP-kodo. Tamen, ĝi ludas bele kun HTML kaj ofte generas multe da HTML-kodo. Sed kiel vi estos familiara kun Problemo Ŝanĝu 7, via PHP-kodo faros, generi iujn HTML, kaj tio estas kio la uzanto finos vidanta. PHP estas nekredeble similaj al C. Tamen, tie estas kelkaj diferencoj, kaj tiuj diferencoj Estas grave noti. Unu diferenco estas, ke variabloj en PHP estas lakse tajpita. Ĉu iu havas senco kion tio signifas? Spektantaro: Neniu bezono por elpeli ĝin vi mem. Kiel ne bezonas skribi en teksto. JASON Hirschhorn: mi ne uzus la vorto dividon, sed jes, ne necesas deklari tipo por specifa variablo. Kiom anstataŭe ni deklari variablon? Spektantaro: Uzu dolaro signo. JASON Hirschhorn: Uzu dolaro signo. Do $ x estas variablo. $ 1 estas variablo. $ Cxeno estas variablo. Tiuj variabloj, $ x povis esti entjero. Tiam, ĝi povus esti kordo. Tiam, ĝi povus esti karaktero. Ĝi vere ne gravas. Ankaŭ, la malvarmetajn afero pri PHP estas, diru, $ x estas la kordo tiu. Kaj $ y estas la karaktero tiu. Vi povas aldoni $ x kaj $ y, kaj ĝi malebligos doni al vi 2, kion vi volas atendi. Do estas operacioj en PHP. Ĉar ĝi estas lakse tajp variabloj, iuj implicitan fandon estas farita por vi kaj kelkaj operacioj. Vi povas fari operaciojn sur aĵoj de malsamaj specoj. Dum antaŭe, vi ofte ricevas erarmesagxon en C diron, tiu ne estas la tipo kiuj supozas iri tien. Nur aferoj de tiu tipo povas iri tien. Vi ne estas tuj akiri tiu tipo de eraro, ĝenerale, en PHP. Do jen unu granda diferenco - kiom ni trakti variablojn. La dua granda diferenco estas, ke PHP-kodo estas interpretita. Wheres, C kodo estas kompilitaj. Kion tio signifas? Nu, por C-kodo vi kuris ĝin tra tradukilo. Vi generita duuma dosiero. Kaj vi kuris ke duuma dosiero. Vi zorgis pri ĉiuj eraroj antaŭ ol vi generis la duuma dosiero. Kompreneble, tie povus esti Segmentación kulpoj, kiam vi kuris de la duuma dosiero. Sed ĝi ne plaĉas al vi forgesis inkluzivi la difino de printf, aŭ ke vi ne uzu variablo kaj simple kreis malŝparema variablo. Aŭ vi ne difini funkcio prototipo. Ĉio ĉi okazis antaŭ vi kompilitaj. Ĝi donis al vi cxiujn el la eraroj aŭ malbonaj aferoj kiuj pensis povus okazi. Kaj tiam, vi havis vian 0 kaj 1 dosiero kiun vi kuris. PHP-kodo ne funkcias tiel. Vi tuj skribos vian PHP-kodo. Tiam, vi tuj konservu ĝin, supozeble. Kaj almenaŭ en P-Serio 7, vi tuj por refreŝigi vian foliumilon kaj vi iras por vidi kio okazis. Vi tuj vidos la eligo de tiu PHP-kodo. Vi povus ankaŭ vidi, cxe la supro de via pagxo, eraro. Ĉar vi havis iun eraro en via PHP. Vi povus ankoraŭ vidi la cetera La retpaĝo estas bone aspektas. Sed unu parto estas erara, kaj estas eraro en tiu loko. Kaj tio estas ĉar tiu parto de via PHP-kodo ne funkciis. Efektive, kiam oni ekzekutos, kiam vi iru al iu kiel by.php. Ĝi tuj iros tra via PHP- dosiero linion per linio kaj ekzekuti ŝin tiam kaj nur tiam. Oni ne tuj kompili ĝin antaŭ tempo aux kompili unu kopion kaj poste doni kiu kompilis kopio al ĉiuj. Ĉiufoje, ĝi tuj iros tra linio por linio kaj ekzekuti lin. Do kelkaj linioj povus labori kaj eligo ion korekta. Kaj aliaj linioj povus esti rompita kaj eligo eraro anstataŭe. Do kiam elpurigi kun PHP, ni donas vi paro de helpemaj aferoj helpi vin debug, kiel la escorial funkcio. Sed ĝenerale, oni tuj vidi tiujn erarojn. Kaj tio estas kiel vi tuj scias vi faris ion malbonan. Sed vi estas nur tuj vidas la eraro iam vi vere kuras la kodon. Alia grava aspekto de PHP kaj retejo evoluo estas la ideo de Get kontre post. Ĉu iu ajn eksplikas kio estas la diferenco inter get kaj post estas? Neniu - jes. Spektantaro: Ĉu ne unu el ili lasi la uzanton vidi la datumojn, kaj unu el ili ne? JASON Hirschhorn: Granda. Jes, ĉu vi havas ion por aldoni? Spektantaro: Mi maldika fosto estas super-malloka variablo. JASON Hirschhorn: Do ambaŭ el ĉi tiuj variabloj estas donita al vi. Ĉi tiuj estas nur variabloj. Kaj vi scias ke ili estas variabloj, ĉar ĝuste ĉi tie mi uzi la dolaro signo. Tiuj estas variabloj donita al vi per PHP. Kiam vi movas inter retpaĝojn, vi volas ŝpari iom da informo. Vi probable volas ŝpari se la uzanto estas ensalutinta Tio ne savis en GET kaj POST. Tio savis en io alia, malsama variablo. Iu scias kio variablo kiu estas savitaj en, aux kion variablo vi uzas en P-Ŝanĝu 7, por certigi ke la uzanto estas ensalutinta en? $ _session, Tio estas ĝuste pravas, verŝajne grave esti konanta la nomoj de tiuj aferoj vi uzas ofte. Do vi uzas la kunsido variablo por savi informo de paĝo al paĝo. Tio estas super variablo. Ĝi ekzistas en ĉiu paĝo, eble kiel malloka variablo, se vi volas kredi pri tio kiel tio. Tie estas kelkaj aliaj variabloj ke vi permesas transdoni informon de paĝo al paĝo. En aparta, la ones ni enfokusigi estas la GET kaj la POST variabloj. En PHP ili aspektas kiel $ _GET Kaj $ _POST. Kaj la diferenco, kiel Marcus pintaj ekster, inter ili ambaux estas tiu, informoj en $ _GET estas montrata en la URL. Do, se ni rigardas malsupren tie, ni vidas YouTube ligilo. Oni vidas ĉi demandosigno. Ni vidas, v = kaj tiam iu valoro. Reen al tiu ideo de klavo valoro paro, la v estas la ŝlosilo. Kaj super cxi tie estas la valoro. Do, se ni devis iri al tiu pagxo aux al kodigo en tiu paĝo, ni havus variablon nomitan $ _GET. Se ni iris al $ _GET malferma krampo "v" proksime krampo, tre simila al tabelo skribmaniero, ĉi tiu estas asociita tabelo Ĉar ni ne uzante indeksoj. Uzis kordojn kiel ŝlosilojn. Sed tre simila ideo. Se ni iris ni, devus ricevi tiun valoron. Sur ĉi tiu paĝo, ni povos uzi tiun valoron. Se ni vere aspektas, ni iru al paĝo de YouTube. Kio video ni rigardas? Ĉi tiu, estas homoj Hobito ŝatantoj? Spektantaro: Jes. JASON Hirschhorn: Do mi kopiado ilian porcion URL kaj alglui ĝin en nova fenestro. Kaj nun, se vi rigardas supren ĉi tien, vi rimarki ke, refoje - Mi tuj kopii kaj almeti ĉi tion en gedit, do ni povas vidi ĝin pli granda. Vi rimarkos ke ĝi havas tiu demandosigno. La demandosigno designan ke ĉiun post tiu tuj estos savita en la Get variablo. Ĝi do havas la v, jen la unua ŝlosilon kaj tiun unuan valoron. Ampersand estas speciala. Ampersand estas diranta, OK, ni Finis la unuan valoron. Ni nun movas en alian ŝlosilo valoro paron. Tie, la ŝlosilo estas nomata trajto, kaj la valoro estas youtu.be. Do se mi estis kodigon ĉi paĝo kaj iu iris al tiu retadreso kaj mi havis eble watch.php. Kaj mi ricevis kodigo ĉi. Kaj mi povus uzi la $ _GET variablo. Kaj mi havus v, kaj Mi havus funkcion. Kaj se mi uzas la v-klavon, mi akirus ĉi valoro. Kaj se mi ja $ _GET krampo "trajto" proksime krampo, mi akirus ĉi valoro. Denove, tio ne nepre apliki al - evidente, la YouTube klavoj kaj valoroj kaj akiri informon ne aplikas al Nia problemo Ŝanĝu 7. Sed estas iuj aferoj kiujn ni pasas tra GET en nia Problemo Ara 7. Kaj certe, kiam vi iros al retpaĝo aŭ estas kodiga via propra paĝo, la $ _GET Venos en oportuna kiam via kodigo. Kio estas unu kialo por uzi $ _GET tiam, se ĝi havigas neniun privatecon? Vi vidas ĉiujn tiujn informojn tio estas esti kopiita. Estas ĉio montrata al la uzanto. Sed kio estas unu kialo por ke vi deziras savi ion en $ _GET, kiel kontraste al $ _POST? Kial eble vi volas fari tion? Ĉiuj pravas. Mi petis vin en Kvizo 1. Kio estas la avantaĝo de $ _GET? Kio estas unu avantaĝo? Jes - Spektantaro: Estas pli facile interŝanĝi informojn. JASON Hirschhorn: Mi opinias tio estas granda. Ĝi estas pli facile interŝanĝi informojn. Ĝi facilas al legosigno. Vi povas bookmark nun, YouTube.com / watch? V = io kaj iri al tiu specifa video. Se YouTube ĉiam faris POST petojn malsamaj paĝoj, ĉiu YouTube URL estus YouTube.com. Vi ne povus bookmark sola video. Ĉar se vi diros dividis tiun ligilon kun iu alia, oni ne faru aŭtomate ricevos vian postenon variablo. Ili estas nur nun tiun ligilon kaj la ligilo estas la sama por ĉiuj. Do kiu estas unu avantaĝo. Ĝi permesas vin legosigno ĉi informojn aŭ dividi tiun informon aŭ fari ĝin iomete pli uzantamika. Kompreneble, ne ekzistas privatecon, do ni havos afiŝo variablo. Kaj post tiuj informoj estas ne montrata en la URL. Ĝi ne estas tute privata. Sed tio estas bagatele pli privata. Kaj tial vi vidos ĉi retadreso cxi tie, cs50.net. Ĉu vi ensalutinta en la TTT-ejo, ĝi tuj havi la sama URL cs50.net. Evidente, io estas malsama, se vi estas ensalutinta en la retejo. Vi havas, oni, verŝajne enigo via PIN. Kaj ĝi konfirmis ke kun la servilo. Kaj ĝi estas probable ŝparante iuj aliaj informoj. Sed la URL ne ŝanĝas je ĉiuj. Kaj tiel tio estas la kazo, kiam io estas senditaj per poŝto. La retadreso ne ŝanĝiĝas. Ĉi POST informo ne montrata en la URL. Sed iuj stato ŝanĝiĝis, kaj eble tie estas kelkaj informoj savita en la POST variablo. Pardonon. Antaux ol mi foriros en SQL, ia demandoj pri PHP, precipe, demandojn pri la aĵojn ni ne transiru ke vi trovis aŭ ajna sintakso aŭ logiko demandoj pri PHP? OK. La fina lingvo vi estos interagantaj kun ĉi tiu semajno estas la Strukturita Query Language, SQL, prononcata sekvo ofte. Tio ebligas al vi interagas kun la datumbazo per formaligita vojo. Kaj ĝi ludas tre bele kun PHP. Kiel vi vidos en Problemo Ara 7, ni vi donita funkcio nomita konsulto. Kaj ĝi prenas SQL kordo kaj ekzekutas ke informpeto al la datumaro. En la jaroj pasintaj, vi ne estis donita ĉi tiu funkcio. Vi devis uzi PHP-funkcioj por fari la demando pri la datumbazo kaj ĉeko por eraroj kaj poste atingi la rezultojn. Kaj vere, ĝi ne estas tiel malfacila, ĉar denove, ĝi ludas tre bele kun PHP. Kaj PHP donas al vi multajn funkciojn interagi kun SQL datumbazo. Do ofte, la du tiuj iras kune. Kompreneble, vi povus interagi kun la SQL datumbazo kun ajna numeron de aliaj lingvoj. Sed PHP estas granda elekti. Datumbazo - ni iros trans ĉi rapide, ĉar tio estas zumado vorton ni tuj ekuzi ofte - estas kolekto de tabeloj. Do ni povas pensi pri ĝi kiel Excel dosiero. Excel dosiero havas kelkajn foliojn sur la fundo de la ekrano. Ĉiu langeto ni nun nomas tablo, kie tablo estas kolekto de vicoj. Kaj kio estas vico? Nu, unu vico estas, ke saman aferon en la Excel-dosiero. Ke nur havas iujn valorojn por ĉiu donita kampo aŭ ĉiu donita kolumno. Estas kiel eniro en la tabelo. Ĝi estas studento, kiu havas IRU, a specifaj ID, kaj specifa nomo kaj specifa domo. Do datumbazo estas kolekto de tabeloj. Kaj tabloj sin trovas nombro de vicoj aŭ diskoj. Tie estas ankaŭ, en ĉiu tablo, iuj kampoj. Kaj kiu specifas kion ĉiu registro estas tuj havas, kampoj iam nomata kolumnojn sed ĝenerale nomas kampojn. En ĉi tiu tre simpla tablo, I have three kampoj, IRU kampo, salutnomon kampo, kaj oni hash kampo. Kaj mi havas tri vicoj. Ĝuste nun, ili estas malplena. Ili probable ne estus malplena se tiu estis mia vera datumbazo. Do, se vi jam uzis Excel, simila ideo kion vi faras en Excel, though, evidente, nun ni iras por povi fari multe pli potenca, kusxanta sur la informon kiu estas stokitaj en nia datenbazo. Vi estos kreado mem unu datumbazon por Problemo Ara 7. Sed vi estos krei multnombrajn tabloj en la datumbazo. Vi estos krei datumbazon aŭ tablo por la uzantoj. Vi estos ankaŭ krei tabelon por verŝajne stock transakcioj, teni spuro de ili, ĉar vi devas praktikigi historio trajto. Ambaŭ tiuj tabloj havos malsamaj kampoj. Ekzemple, en uzanto kampon, vi probable volas lian uzantan nomon kaj ID kaj dispecigu sian pasvorton. En la Stocks tablo, kiu tenas spuro de historio aŭ la historio tablo, vi probable ne bezonas la nomon de uzanto kaj la hash kaj la ID. Vi verŝajne nur bezonas unu el tiuj, valorojn kiuj estas solaj, asocii gxi kun donita de uzanto. Sed tiam, vi volas konservi aliajn aferoj kiel, pri la tempo Estis transakcio faris. Kio stoko estis aĉetita aŭ vendis? Kiom da agoj de la stoko estis aĉetita aŭ vendis? Kio estis la prezo, je kiu la stock aĉetis aŭ vendis? Do denove, vi tuj povas interagi kun datumbazoj tio tuj havi multoblajn tabeloj. Ĉiu tablo tuj havos lia propra aro de kampoj. Tamen, probable estos simila kampo en ĉiu tabulo, kiu raportu ilin al unu la alian. Kutime ĉi tiu estas ID kampo. Ĉar se ĉiu uzanto havas unikan ID kaj vi asocii ke ID kun ĉiu transakcio tiu uzanto faras aŭ ĉiuj de tiu uzanto historio. Kaj vi havas uzanto-identigilo. Vi povas ricevi informojn de ĉu tablo. Vi povas akiri ilian salutnomon, kaj vi povas akiri ĉiujn siajn transakciojn. Demandojn pri datumbazoj, aŭ specifaj demandoj? Efektive, ni tenu tion. Ni estos tie en du flankoj. Do estas kvar operacioj sur datumbazojn kiujn vi uzos en Problemo Ŝanĝu 7 kaj verŝajna iam uzos. La unua afero, kiun vi volas fari estas insert novan rekordon en tabelo aux novan vicon en tabelo. Ĉi tio estas la ĝenerala funkcio, la ĝenerala formo, de kiuj SQL query. INSERT INTO la tablo, kion ajn kolumnoj vi volas enmeti kaj poste la valoroj kiujn vi tuj volas metu gxin en tiuj kolumnoj aux kampojn. Se vi havas plurajn tabloj en datumbazo aŭ plurajn datumbazojn, vi eble ankaŭ bezonos specifi la datumbazo kaj la tablon, ke vi volas meti tion en. Sed tre simpla, se vi volas enmeti en ion, vi diras, tie estas la kampoj mi volas enmeti en. Kaj jen estas la valoroj. En kelkaj tabloj, ankaŭ, kaj ĉi tiu uzanto tablo estas bona ekzemplo. Probable en ĉi tiu uzanto tablo kaj probable en vian uzanto tablo en P-Ara 7, tie estas ne nur salutnomo valoro. Tie estas ne nur kontanta valoro, aŭ kampo, prefere. Tie estas ankaŭ ID kampo. Mi ne tuj enigi ke ID kampo. Tio tuj estos transdonita al min aŭtomate, kiam novan rekordon estas enmetitaj. Do tie estas iu kampo, ke vi povas tuj estos aŭtomata. Eble vi volas doni al ĉiu uzanto $ 10,000 de mono sur la vesperton. Do mi ne bezonas por enmeti numeron de cash tie. Mi nur bezonas enmeti estas la nomo de uzanto. Kaj tiam, la mono kampo estos pre-popolita, kaj la ID kampo estos estos antaŭ-popolita. Do ofte, ni ne enmeto io en cxiun kampon, ĉar tiuj aliaj kampoj estas antaŭ-loĝataj. Pro tio, kiel ni starigis tiu tablo. La dua afero vi tuj volas fari estas delete record. Forigo io estas tre simpla. Vi donas al la tablo, kie vi volas forigi ion el. Kaj vi diru, OK, mi volas forigi la rekordo kiu havas salutnomon de Milo. Aŭ mi volas forigi cxiujn rekordojn ke havas salutnomon de Milo aŭ kiu estis transakcio el uzantidentigilon numero 2. Demandojn je tiuj du tipoj de konsultoj? Spektantaro: [inaudibles]. JASON Hirschhorn: Jes. Do mi tuj uzos vico kaj rekordon interŝanĝebla kaj kelkaj kun kolumno kaj kampo. Sed unu vico estas unu rekordon. Unu kolumno estas unu kampo, irante Reen al tiu tablo. OK. La sekva afero vi verŝajne tuj fari estas atingi iom informoj el la tablo. Tio estas Selektu konsulto. Kaj denove, kio tablo ĉu mi elektu el? Kaj kion kolumnon mi volas elekti, aŭ kio valoro mi volas elekti kaj el kiu vico? Do la Elektu estas iom specifa. Mi diras, OK, mi volas ke tiu tabulo. Kaj tiam mi deziras la kolumno salutnomon, kaj Mi volas ĝin el la vico kun ID 2. Tio estas unu maniero por fari Select. Aŭ mi povas diri, donu al mi ĉiun sola uzantnomon. Aŭ mi povas diri, donu al mi tutan remi el tiu tablo, kie la uzantnomo estas 1. Do tie estas kelkaj malsamaj manieroj fari Elektu pridemandojn, dependanta sur kiel da informo vi volas, Vi ĉiam povas simple elekti ĉiun de tiu specifa tablon kaj poste buklo tra ĝi, prenante el tion vi deziras. Sed memoru, se vi estas elektanta Multon el tablon kaj vi havas vere grandan tablon, kiu prenos iom da tempo, tiom pli bone nur elektu aferoj kiujn vi iras por fini uzante. Ankaŭ, kun Select kaj kun ĉiuj el tiuj aliaj SQL ordonas tiel, mi estas doni al vi la nuda-ostoj versio. Sed diru: Mi estas elektanta uzantoj kaj mi volas presi ilin alfabete, Mi povus elekti ĉiuj uzantoj kaj tiam speco ilin alfabete en mia kodo. Aux tie estas maniero skribi la unuaranga informpeto, kiu selektas aĵojn en alfabeta modo, bazita ekstere de specifa kolumno, ĉu suprenira aŭ malsuprenirantaj. Do memoru, ke multe de kion vi volas fari probable povas esti farita en la demando pere de plia atribui. Do rigardu tiujn pridemandojn online aŭ la aliaj aferoj, kiujn vi povas fari kun tiuj pridemandojn pligrandigi ilin. Fine, la lasta afero ke vi volas fari ne enŝovu iun aŭ forviŝi io, sed prefere ĝisdatigi ion. Kaj kiuj estas farataj kun la ĝisdatigo informpeto, kaj denove, kio tablo. Kaj kia ŝanĝo mi volas fari? Kaj al kiu vico aŭ rekordo fari Mi volas fari tiun ŝanĝon? Demandojn en SQL? OK. Tial ni havas proksimume 15 minutojn. Kaj jen estas la lasta slide mi havas. Kaj espereble, ĉi lasta glito estas bona segue en la problemo metita, ĉar kompreni kie ni volas enŝovu registrojn, forigi ilin, elektu ili, kaj ĝisdatigi ilin helpos nin kompreni la pli granda logiko kaj fluas el Problemo Ara 7. Do mi konas ĉiujn respondojn al ĉi tiuj demandoj. Mi ne diros vin ĉiuj el la respondoj. Sed se iu alia volus prezenti demandon al la grupo aŭ respondu al unu el tiuj demando, ni povas uzi tion kiel saltante punkto paroli pri la problemo aro. Aŭ, se iu havas pli ĝenerala demando for la problemon aro, senti libere demandu kiu siavice. Kaj ni povas starti tie. Memoru ke ci estos silenta estas vundi ĉiuj. Jes. Spektantaro: Tia estas la sola maniero pasi variablojn al kaj el diversaj ttt paĝojn, aŭ la plej konvena vojo, uzante POST aŭ GET? JASON Hirschhorn: Do jes, tio estas la plej oportuna maniero por diri - kiam iu plenigas formularon - akiri informojn en alia retejo paĝo, uzante GET aŭ post. Pro la kadro ni uzas en ĉi tiu problemo aro, vi rimarkos ke, multe da fojoj, ni redonu al alia paĝo. Ni Aŭ ni redonos alian dosieron, ne nepre alia paĝo. Do ni pasas en variablo. Kaj tiam, li pruntas unu HTML-paĝo, uzante la informoj de tiu variablo. Tio ne estas teknike pasante informon inter malsamaj ttt-paĝoj. Tio preterpasas informoj inter malsamaj dosierojn. Kaj tial ni povas uzi iun ajn variablo por fari tion. Sed jes, se ni volis pasi informo de aparta paĝo alia paĝo, GET kaj POST farus esti la maniero por fari tion. Ajna alia demandojn pri la problemo starigis? OK. Ni iru tra, tiam, specifa parton de la problemo metita. Vi tuj bezonos, je unu punkto, montri ies biletujo sur la ekrano. Kion mi volas diri, kiam mi diras biletujo, en la kunteksto de tiu problemo starigis? Spektantaro: Estas kiel la akcioj, ke ili havi kiel, multaj agoj ili posedas, la prezon, kaj kiom mono ili lasis. JASON Hirschhorn: That sounds great. Do mi volas montri ĉiujn akcioj ili posedas por ĉiu stock kompanio agoj kaj probable des tio valoras, kaj poste aparta variablo, kiom da mono ili posedas. Do diru mi volas priskribi tion. Ni komencu paroli pri tio, kiel mi povis irad fari tion, kion tabloj min tuj bezonos devas povi fari tion. Jes - Spektantaro: Nu uzantoj, kaj tiam, mi supozas vi povas fari tabelon nomitan Akcioj aŭ io kiel tio, kion estus kiom oni aĉetis. JASON Hirschhorn: okej. Do mi tuj bezonas tabelon nomitan Uzantoj, kiuj gardas la spuro de la username, supozeble, probable iuj ID, verŝajne individua pasvorto. Kio estas io alia, kiun vi nur diris ke estas asociita? Iu krom Mihxael, kio estas io tio estas asociita kun ĉiu uzanto, unika por ili? Spektantaro: ID. JASON Hirschhorn: ID - kio estas alia afero, kiun ni estas probable tuj volas vidigi sur ĉi paĝo? Spektantaro: Ilia nomo. JASON Hirschhorn: Ilia nomo - kio estas alia afero rilate al tio apartan problemon agordi? Spektantaro: Kio akcioj posedas - JASON Hirschhorn: Tie iras al estos multe da kio akcioj posedas. Kio estas unu la specifa valoro though, ke ili tuj devos asociita kun ili? Kiel ili aĉeti kaj vendu iliajn akcioj? Spektantaro: Cash. JASON Hirschhorn: Ili estas tuj havi mono. Do ĉiu uzanto tuj havos unu valoron por kontanta. Kaj tiu tuj estos unika por ĉiu uzanto. Do, en la uzanto tablo, gxi faras senco de meti en kontanta mono. Vi povus, kompreneble, krei alian tabelo kiu havas uzanto IDs kaj iliaj valoro de mono. Sed ĝi ne havas sencon. Ĝi havas sencon nur meti ĉiuj ke en unu tablo. Do ni tuj havos tablon kun tiu informo. Kaj tiam, kio estas la alia tablo Ni tuj havas? Vi diris, Stocks tablo. Kion ni meti en la Stocks tablo? Iu ajn, ideoj - Spektantaro: La kompanio. JASON Hirschhorn: Ni iras meti en la nomo de la kompanio, do AAPL por Apple. Jes. Spektantaro: Kiom da agoj kaj kiom ili valoras. JASON Hirschhorn: Kiom da agoj, kiom ili valoras - kio estas io alia, ni bezonas en tiu tablo? Spektantaro: Uzanto ID indeksi ĝin. JASON Hirschhorn: A Uzantnumero. Do, en tiu tabelo, ni probable havas - diru, se ĝi estas iu, kiu posedas tri akcioj, tri vicoj, ĉiun kun ke uzantidentigilon aŭ ke individua uzanto IRU, sed malsama nomo de la kompanio, oni malsama nombro de agoj supozeble, kaj malsaman prezon valoron por ĉiu de tiuj stokoj. Denove, kion mi diras nun ne nepre la efektivigo, ĉar vi rimarkos ke estas iuj pli efikaj manieroj por apliki ĝin. Sed ĉi tiu estas bona loko komenci. OK. Do tiuj estas la du tabeloj, ni havas. Nun ni volas montri ĉi paĝo. Kio estas la unua tipo de informpeto ni bezonus fari. Sur ĉiu paĝo, supozis, ke estas uzanto estas ensalutita, ni havas siajn uzantidentigilon. Do kio estas la unua tipo de Query ni bezonos fari? Jes. Spektantaro: Liaj uzantidentigilon. JASON Hirschhorn: Ni havas siajn uzantidentigilon, Kiam ni komencas kodo en la komencante de nia paĝo. Do kio estas la unua tipo de informpeto ni bezonas fari, donita de uzanto ID? Ni iris super la kvar tipojn. Ekzistas nur kvar eblajn respondojn. Spektantaro: Estas elektu rekordo. JASON Hirschhorn: A Select - ni volas elekti el la uzanto tablo akiri, ni diru, ilia sumo de mono. Kaj ni povas presi la kvanto de mono sur supro de la ekrano. OK. Kio estas la sekva tipo de Query ni volas fari? Ni havas kelkajn aliajn aferojn Ni bezonas montri. Tiuj estas savitaj en alia tabelo. Do kiel ni tuj ricevas tion? Spektantaro: Vi elektu por ili. JASON Hirschhorn: A Select - denove, ekzistas nur kvar ebloj. Elektu probable sonoj kiel la gxustan. Do ni bezonas por fari alian select query, denove uzas tiun uzantidentigilon. Kaj nun, ni volas reveni ne nur unu vico, bu ĉiuj vicoj kiuj kongruas nia kriterioj, kie uzanto ID egalas 1. Kaj tiam ni povas iri kaj lasu loop nur presi cxiujn tiujn sur la ekrano, eble presi la kompanio el ĉiu el tiuj sur la ekrano. Granda, tio sonas kiel tio montri biletujo, Ne multe pli komplika ol tio. OK, vikipediista tiam decidas ke ili esti multe da mono restis super. Kaj ili volas acxeti iun pli la agoj de la sako. Ni diru, ke ili jam posedas ĉi kompanio stock tro. Do ili iru al via aĉeto paĝo. Ili enigo de la kompania nomo. Kio estas la demando, post la eniro de la kompania nomo, kiun vi bezonas por ekzekuti poste? Jes. Spektantaro: Update. JASON Hirschhorn: Aktualigo - kaj kio tablo vi volas aktualigi? Spektantaro: Ilia tablo, bazita sur iliaj ID numeron? JASON Hirschhorn: Do ĝisdatigi Ne al la uzanto la tablo - tiel ĝisdatigante la Stocks tablo, kie la uzantidentigilo ne nur kongruas, sed la stock nomo ankaŭ kongruas. Vi ricevos iom da valoro. Kaj tiam, vi volas preni tiun valoron kaj aldoni tamen multaj akcioj ili ĉu vi aĉetus ĝin. Do vi ne volas blinde anstataŭigi tiun valoron. Sed vi povas, fakte, oferportos komenca valorigi kaj ĝuste ĝisdatigi ĝin. Vi povas fari kiel pli egalaj, prefere ol nur egaluloj. Kio estas io tamen - se ni estas pensante pri tio kaj ni volas esti tiel fortika kiel eble - ni devas fari antaŭ ol ni kuris ke update query? Ili volas aĉeti kvin jaroj de Apple. Ĉiu parto de Apple estas $ 200. Spektantaro: Ni devus kontroli mono unue. JASON Hirschhorn: Ni devus kontrolu mono unue. Ni devas certigi ke ili havi sufiĉe da mono. Kia demando ĉu ni povas ekzekuti certigi ke ili havas sufiĉe da mono? Spektantaro: Alia Select. JASON Hirschhorn: A Select - ni elektu bazita sur ilia uzantidentigilon, akiri ilian valoron de mono. Ĉu iujn rapidajn math. Kaj se tiu pasas kunveni, ili havas sufiĉan monon. Poste ni povas kuri nia ĝisdatigon. Aŭ eble, se ne, ni pasas tiam. Ni donu ilin averto. OK. Diru ili ne havas entreprenon. Ili aĉetas novan kompanion. Ili aĉetas Mikrosofto. Kiajn pridemandojn cxu ni volas fari, se ili volas acxeti Microsoft? Kaj ili ne posedas ajnan Mikrosofto. Ne Manu, iu alia, neniu krom Marcus? Karolo - Spektantaro: unuaranga, por certigi ili havas sufiĉan monon. JASON Hirschhorn: Sonas bone. Spektantaro: Kaj tiam vi enmetas sur la [inaudibles]. JASON Hirschhorn: Ekzakte, ni estas tuj volas enŝovu en la Stocks tablo. Kaj ni tuj volas enmeti. Ni povas enmeti sian uzantidentigilon, la nomo de la kompanio, kaj kiom da agoj ili volas aĉeti. Kion estas kelkaj aliaj operacioj kiuj estas paĝoj aŭ funkciaro vi estas tuj devos apliki en P-Ara 7, ke ni devus iri super? Spektantaro: Efektive, mi specon de havi demandon pri ĉi tiu. Antaŭ vi montri la biletujo, devus vi kontrolas Yahoo afiŝinto al certigi la stoko prezoj ne ŝanĝiĝis? JASON Hirschhorn: Tio estas sonoj kiel bona ideo. Do kio Marcus estas diranta estas, OK, borso prezoj senĉese ŝanĝiĝas. En karceron, kiu posedas tablo, nia tablo nomata Stocks, ni povus savi la prezo de la trunko kaj acxetis gxin antaux. Sed tio ne ŝajnas, ke fortika, ĉar la prezo de la sako estas senĉese tuj ŝanĝos. Do fakte, vi verŝajne ne bezonas ŝpari la prezon de la stoko. Sed ĉiufoje vi montri sian biletujo, vi refreŝigi aŭ ĝisdatigi la prezo de la stoko. Kaj se vi havas - kaj vi jam disponas. Mi konas vin jam ĉiuj rigardis en la problemo aroj reen jam. Vi rimarkis, ke ni skribas iu kodo por vi, ke tio permesos vin por ricevi la prezon de ligno: donita kompania nomo. Do jes, tio verŝajne sonas iom pli fortika. Sed tiu tablo ne nepre bezonas ŝpari la prezon de la stoko. OK. Kion estas kelkaj aliaj funcionalidades vin bezonas apliki ĉi tiun semajnon, ke ni povas paroli? Mi volas paroli pri ili. Kion vi volas paroli pri? Ĝi estas verŝajne en ĉi spec. Mi farus nur rulumu malsupren al la malsupro de la spec kaj peti al mi la unuan vorton vi vidos ke ne havas sencon. Unu alia funcionalidad - ni parolu pri tiu. Ni komencos tie. Spektantaro: Registrado de la historioj. JASON Hirschhorn: Registrado la historio, granda. Do vi tuj devas konservi trako de historio de transakcioj. Do vi volas konservi spuron de ĉiu tempo ili aĉeti aŭ vendi akciojn. Mi aĉetis mian stoko. Ni ĵus diris, tio verŝajne havas sencon inkludi Select, por akiri ilian kvanto da mono kaj kontrolu dorso. Ĝi probable estas inteligenta tiam inkludi enŝovu aŭ ĝisdatigon, depende de ĉu aŭ ne ili posedas tiu stoko. Se ni volas ankaŭ sekvigi historion, kiel oni povas fari tion? Ĉu tiu iru en la Stocks tablo? Spektantaro: N-ro JASON Hirschhorn: Neniu ĝi probable iras en malsama tablo. Ĉar vi diras aĉeti 10 agoj de Apple. Tiam vi aĉetos alian 10 agoj. Vi volas treni apartaj registroj. Tiuj estas du apartaj transakcioj. Do ni havas alia tablo, Historio tablo. Do denove, ni aĉetas. Ni ekzekuti Select, tiam an Enmeti aŭ ĝisdatigon. Kion ni faru? Kio estas la venonta konsulto oni ekzekutos kiam ni aĉetas ion? Ni volas konservi trako de la historio. Jes. Spektantaro: Vi volas konservi trako de malsukcesis transakcioj tro. JASON Hirschhorn: Nu, antaŭ ol ni diri kion tipo de transakcio, Kion ni deziras - Kia demando, Karolo, volus permesi al ni konservi trako de aferoj ĝenerale? Vi havas kvar divenojn. Kiun vi pensas? Spektantaro: Aktualigante. JASON Hirschhorn: Not ĝisdatigi. Kio estas via dua diveno? Spektantaro: Selekti. JASON Hirschhorn: Se vi volas konservi spuro de io, vi verŝajne volas skribi ĝin ie aŭ por poste reenmeti ĝin. Do, se ne ĝisdatigi, tiam - Spektantaro: Enmetu ĝin. JASON Hirschhorn: Insert, tie ni iru. Jes, do vi elektu la kvanto de kontanta mono ili havas, sonas grandan. Ili ne havas sufiĉe da mono. Tio transakcio ne tuj funkcias. Ne, vi ne bezonas konservi spuron de transakcio, se ĝi ne funkcias. Aŭ vi povas, se vi volas donu al ili malfacilan tempon. Sed vi ne devas. Tiam, vi enmetas aŭ ĝisdatigo en ilia Stocks tablo. Kaj nun, vi havas vian alia tablo. Vi havas vian historion tablo aŭ kion ajn vi volas nomi ĝin. Kaj en tiu tabelo, vi tuj enmeti novan vicon. Tio probable tuj havi la uzanto ID. Ĝi estas verŝajne tuj havi la nomo de la stoko. Ĝi estas verŝajne tuj havi tempo, ke ili faris ĝin. Kaj en ĉi tiu kazo, vi LL verŝajne deziras enmeti la prezo. Ĉar dum la historio, vi ne zorgi kia estas la nuna prezo estas. Vi zorgas kio la prezo estas kiam Ili aĉetis aŭ vendas ion. Do tio sonas kiel, por apliki aĉetado tute engaĝas nombro de malsamaj SQL-sercxoj, Sed honeste, ne ke multe kodo entuta. OK. Kaj kiu prizorgas la historio. Ni diru, ni volas montri nian historion. Ni parolis pri montrado nia katalogo. Kiel ni montras nian historion? Spektantaro: Supozeble kronologie. JASON Hirschhorn: Supozeble kronologie - kio informpeto ĉu vi kredas ke ni uzus? Spektantaro: Unuaranga. JASON Hirschhorn: Unuaranga - selektu eble ĉiuj vicoj de tiu tabelo kiuj kongruas la uzantidentigilon kaj poste montri ilin kronologie, sonas bona. Kion ni bezonas por skribi kodon por ordigi tra tiu listo? Spektantaro: Ne, ĉar vi rakontis ni estas suprenira kaj malsuprenirantaj afero. JASON Hirschhorn: Aĵo? Spektantaro: Jes. JASON Hirschhorn: Jes. OK, ne eniru kodo al mi, ke permane ordigas tra viaj sercxoj, ordigi ilin. Ke kodo jam donis. Vi povas skribi Elektu informpeto kiuj ordigas aferojn. Ordigi ilin antauxzorgu kaj tiam presi ilin. Ĝi faras tiel multe pli da senco fari ĝin tiel, ol la alia vojo. Jes. Spektantaro: Cxu ni bezonas ordigi ilin antauxzorgu? Ĉu tio signifas ke vi speco ilin en la datumbazo? JASON Hirschhorn: La Elektu informpeto redonas ilin al vi ordo. Do fari tion, prefere ol nur havi ilin revenu al vi en hazarda ordo kaj tiam ordigi ilin mem. Jes. Spektantaro: Ĉu ekzistas maniero konservi ĝin ordo en la datumbazo mem, por ke Vi ne devas ordigi ĝi ĉiufoje vi - Spektantaro: Ĉu vi povas enmeti gxin ordo? JASON Hirschhorn: Demando - gravas, ke aferoj estas ordo en la datumbazo? Spektantaro: N-ro JASON Hirschhorn: Nu, Ili estas ordigitaj. Ili estas ordigitaj kronologie. Sed ni supozu, ke tio estas ordo kronologie, de supro al malsupro. Ni havas Google formo. Kiam ajn iu respondas al nia Google formi, gxi simple gets metis en la malsupro de tiu tabelo. Ĉu ĝi gravas ke aferoj estas ordo ne kronologie? Spektantaro: Se tio ne estas kronologia, ĉu vi ne devas ordigi gxin ĉiufoje vi prenas info eksteren. Sed se ĝi estas jam ordo, ĉu ne ne devas fari tion aldonan funkcio alvokon? JASON Hirschhorn: Do jen vere bonan punkton. Por ni kiel programistoj, eble gravas. Kaj ni povus voli trovi datumbazon ke tio ne ordigi aferojn kronologie. Aŭ starigis nian datumbazon, do ĝi subtenas aferojn ordo laŭ uzantidentigilon. Do tiu vojo, diru: Ni havas 1.000 uzanto IDs. Aŭ Facebook, ni havas milionojn de uzanto IDs. Ni ne volas ke nia tablo por esti simple hazarda aŭ nia datumbazo esti hazarda. Estus agrable, se ĉiuj la uzanto IDs estis ordo. Tial do ni povus kuri duuma serĉoj sur nia tablo kaj tiam nur trovi la specifaj chunk. Do jes, depende - se ni grimpis supren, ni povus voli trovi datumbazon kiuj plenumadis tion ordo en malsama maniero, tiel ke tiuj pridemandojn prenus malpli da tempo. Kaj ni ne devas iri tra nia tuta datumbazo en ĉiu unuopa vico en donita tabelo. Sed la nivelo ni laboras ĉe ni ne bezonas zorgi pri subtenante aferojn ordo. Ni povas supozi ke la tempa ĝi prenas ke informpeto kuri tuj estos bagatela, donita kio ni pritraktas. Sed jes, bonega ideo - kiel ni grimpi supren, eble havas sencon por desegni nia datumaron en iom de malsama maniero. Unu fina datumbazo dezajno aferon mi volas mencii ankaŭ, ĉar vi volas, esti gradita aux notis ĝuste, je la dezajno de via datumbazo. Ni parolis pri tiu. Cash estas unika por ĉiu uzanto. Do vi havas tabelon nomitan efektiva kiu havas siajn uzantidentigilon kaj ilia kvanto de kontanta mono kaj poste tabelon nomitan uzantoj kiuj havas siajn uzanto ID kaj iliajn uzantnomon. Tiuj tabeloj mapi sur ĉiu aliaj unu-al-unu. Ĝi verŝajne havas sencon por ili estu unu tablo. Do ni supozu ke vi havas uzanto tablo, kiu tenas spuro de uzulnomoj kaj mono. Vi nun havas tabelo kiu havas la stokoj individuo posedas. Kaj individuo povus posedi pli ol unu stoko. Do tiuj ne mapi sur reciproke unu-al-unu. Ĝi ne havas sencon havi unu giganto tablo, kiu havas 30 registrojn ke ĉiuj ripeti salutnomon, ke ĉiuj ripeti pasvorton, ke ĉiuj ripeti kelkajn kontanta. Sed ĉiu havas eble malsaman stoko nomo aŭ malsama stock prezo. Ĝi ne havas sencon havi ke multaj grandaj diskoj. Be smart pri kiam oni kreas tiujn datumbazoj, tiel ke vi ne faras io stulta kiel tiu, ripetante multan nenecesan informon. OK. Ni havas du minutoj forlasis. Homoj ekster ekscitiĝas aliĝi ni kaj probable, supozeble, komenci sian propran klason. Ĉu iu havas demandojn antaŭ ol ni finos? OK, tio estis ja ventege tra ĉio. Mi pardonpetas, ke ĝi devis esti tiel rapida kaj ke ni ne povus esti tiel manoj-on ĉi-semajne mi estus jam ŝatis estis. Sed se vi havas demandojn pri ion ni transiris aŭ ion ĉi problemo starigis - paradante vi legis ĝin kaj metis en bonfidaj peno - bonvolu retposxtu min aux kontaktu min. Mi estas pli ol feliĉa labori per via kodo kun vi aŭ respondi ajnan demandojn vi havas. Rememoru ke, tiu semajno, multaj Via tempo estos elspezita por lerni la nova sintakso kaj klopodante kompreni kiel skribi SQL pridemandojn aŭ PHP- funkcioj aŭ interkonsenton kun a MVC kadro. Multa vian tempon ĉi semajno probable ne estos provi elkompreni la freneza logiko, ke ni estas demandi se vi devas fari. Multon pri tio ni nur iris super estas relative simpla. Do tio ne signifas atendi ĝis la lasta minuto. Sed tio ne signifas, ĝustigi, kiel vi faras vian labori laŭe, certigi vi kompreni kaj lernado de la sintakso. Do vi ne estas, subite, sciante ekzakte kion vi volas fari, sed kun neniu ideo kiel akurate skribos ĝin. OK, mi vidos vin venontsemajne.