JASON Hirschhorn: Bine ați venit toată lumea la opt saptamani. Avem o saptamana interesanta înaintea noastră. Voi s-au scufundat în acest cuplu trecut de prelegeri la PHP, SQL, HTML, CSS, așa patru de brand nou de limbi care vor pentru a prelua restul acestui curs. Vom afla, de asemenea, o serie de alte limbi înainte de sfârșitul cursului. Dar oricum, e nevoie să spun, acest lucru este o moment foarte interesant în CS50, acum te au însușit C, aparent, și sunt de a trece la programarea pentru site-uri web. Deci, în această săptămână, vom merge mai departe un vârtej de vânt tur prin cele patru limbi tocmai am menționat, HTML, CSS, PHP, și SQL. Și sperăm că vom lăsa o multime de timp de la sfârșitul secțiunii pentru a vorbi despre P set și răspuns în această săptămână orice întrebări pe care le au toate. În fiecare săptămână, aceeași listă de resurse pentru tine, pentru a vă ajuta cu săptămânii problema set și merge peste materialul - dar în această săptămână, în special, pentru aceste seturi de probleme bazate pe web, există o serie de alte resurse în acolo că veți probabil găsi incredibil de util. Le am aici. O să-ți e-mail această după secțiune, și acest lucru este, de asemenea, on-line. Dar, în special, există o mulțime resurse de mare acolo. Există, de asemenea, unele nu atât de mare cele, astfel încât să fie precaut de cele. Dar pe acest diapozitiv, am patru bun resurse, câte unul pentru fiecare din limbi care veți fi de lucru cu această săptămână - o foaie de referință pentru HTML, o foaie de referință pentru CSS. Acest drept este aici manualul de PHP. Deci, în loc de om dactilografiere și apoi un PHP comandă, acest lucru este în cazul în care ar fi du-te să te uiți în sus prototipul functiei și exemple și, de asemenea, câteva sfaturi și trucuri pentru utilizarea funcțiilor PHP. Veți folosi acest site de multe ori, așa că am să vă încurajez pentru a deveni familiarizat cu ea. Acesta poate fi un pic tehnic, dar furnizează, de asemenea, o tona de resurse și exemple pentru toate funcțiile și chiar alte, cum ar fi modul de utilizare a matrice sau diferite tipuri de variabile. Acest site este foarte util pentru PHP. Și apoi, pentru SQL, dacă porumbel în acest problema set săptămână, veți ști că suntem folosind o bază de date. Și noi accesa baza de date prin intermediul o interfata destul de frumos. Sau asta e un fel de acces baza de date. Interfața cu utilizatorul este numit phpMyAdmin. Există o filă SQL, pe care vom uita-te la mai târziu pe ziua de azi. Și aveți posibilitatea să tastați în SQL lor de probă interogări, de a face lucrurile în baza de date și apoi executați aceste interogări. Și dacă acestea sunt corecte, se va spune, corect acest cuiva. În cazul în care acestea sunt incorecte, va să zicem, e incorect. Acesta este un loc minunat pentru a practica dvs. Interogări SQL înainte de a scrie-le în codul, pentru a vă asigura că au formatul corect. În cele din urmă, un alt site de pe aici. Acesta este site-ul unde puteți du-te și asigurați-vă că dvs. Codul HTML este valabil. Deci, înainte de a porni problemele tale setat această săptămână, asigurați-vă că toate HTML-ul este valid. Săptămâna trecută, ai avut alerga Valgrind, la asigurați-vă că nu a avut pierderi de memorie. În această săptămână, aveți nevoie să vă asigurați că toate de cod este valid HTML5. În cazul în care nu este valid HTML5, esti mergi la a lua puncte de pe. Deci, asigurați-vă că - doar pentru că funcționează nu înseamnă că este complet valabil. Rula cod dumneavoastră prin intermediul acestui site înainte de a porni-l inch Din nou, aici e site-ul web. Dacă aveți orice feedback-ul pentru mine, ne-am un cuplu de mai multe secțiuni, și am mereu vreau să fac ceea ce pot pentru a vă toate oferi cea mai bună secțiune experiență posibilă. Deci, lasă-mă să știu dacă e ceva ce se poate face pentru a îmbunătăți sau dacă există lucruri pe care le vedeți pe care am putea face mai bine. Vă mulțumesc, Avi. Pune-l pe site-ul web. Acest lucru a fost bicicleta am avut când am a fost, să zicem, patru la domiciliu. Este un Teenage Mutant Ninja Turtle ciclism, în cazul în care nu se poate spune, pentru că este un pic neclare. Puteți să-l obțineți acum la ToysRUs pentru, cred, aproximativ 100 de dolari. Dar caracteristica a acestei biciclete pe care vreau să acorde o atenție la sunt acestea chiar aici. Acestea sunt roți de instruire. Până acum, ai fost cu camera în mână prin C. Și am luat un lung timp, cu două luni plus, pentru a merge prin intermediul C. Pentru aceste următoarea pereche de limbi, noi nu vom petreacă atât de mult timp. Roțile de formare vin off. Și vom arunca cu capul în aceste limbi rapid și a vă deplasa prin le repede, ceea ce nu este de a spune că suntem doar de gând să te las înot de acolo cu nici o modalitate de a sprijini te sau dau seama cum aceste limbi de lucru. Tocmai ți-am arătat-o ​​listă de resurse pentru a vă ajuta. Dar păstrează în minte faptul că PHP este incredibil similar cu C. Vom merge peste ea astăzi și unele dintre diferențele. Dar pentru cea mai mare parte, există pentru bucle. Există în cazul în care condițiile. Atunci când doriți pentru a rezolva o problemă, ai de gând să utilizeze un combinație a acestora. Este foarte asemănător. Logica ar fi foarte asemănătoare cu ce-ai făcut în trecut. Ce e cu adevărat nou în această săptămână este sintaxa și modul în care te exprimi. Și doriți să scrieți o pentru buclă, dar ar putea arata un pic diferit. Sau doriți să creați un tablou, dar ar putea arata un pic diferit. Deci, ține cont de faptul că, merge mai departe, Logica este foarte similar cu ceea ce care le-ați făcut în trecut. Dar tu acum va fi întâmpină o mulțime de noi sintaxă. Iar noi nu suntem de gând să te plimbi prin toate elementele de sintaxă. Deci, este într-adevăr până la tine să dau seama, on-line sau prin a ajunge pe Discuta sau mă email sau să vorbesc cu unul pe altul, cum să scrie lucruri în PHP și cum să scrie interogări SQL și modul de utilizare a HTML și CSS. Dar doar ca să știi, nu-i asta noi încercăm să te arunc acolo din nou să înoate cu rechinii. Aceasta este ceea ce va face probabil cu proiectul final, dacă alegeți un diferite limbi, cum ar fi IOS și Objective C, sau în cazul în care vă decideți să începeți de programare în viitor și se arunca cu capul în alte limbi, cum ar fi Python sau Ruby. Deseori, logica este foarte asemănătoare în toate aceste limbi, și sintaxa este ceea ce este diferit. Și acesta va fi de până la tine, ca programator, pentru a merge folosesc web-ul resurse disponibile pentru tine și figura cum să-și exprime ceea ce stii cum să-și exprime în C, într-o altă limbă. Deci, aceasta este o practică bună, atât pentru dvs. final al proiectului, și din nou, pentru ceea ce va face probabil după ce pleci CS50. Înainte de a trece mai departe, nu oricine aveți întrebări cu privire la ceea ce Am făcut până acum? Mare. Să trecem mai departe. În primul rând, vom vorbi pe scurt despre comanda chmod. Aceasta, vom face la începutul de problemele tale stabilit. Unul dintre primele instrucțiuni pentru tine, după ce descărcați cod de distribuție, este de a schimba permisiunile de fișiere și directoare pe care le primiți. Poate cineva să se aventureze o presupunere sau știu de ce este important pentru a schimba permisiunile de anumite fișiere și directoarele de pe computer? Avi - Audiența: Apoi, nimeni, cu excepția pentru puteți vedea ceea ce faci? JASON Hirschhorn: OK. Deci, dacă vrem să pună ceva pe web și aveți permisiuni stabilit că doar tu poți vedea ceva, atunci nimeni altcineva nu poate vezi ce ai creat. Ce altceva? Da. Audiența: Prevenirea oricine altcineva pe care le Nu vreau să văd ceva, de la văd ceva. JASON Hirschhorn: Este adevărat, de asemenea. Există, probabil, un cod care scrii, că tu nu faci Vreau ca oamenii să vadă. Esti, probabil, bine cu oamenii văd HTML și JavaScript. Dar PHP-ul, un cod de back end, o mulțime de logica a codului, poate lucruri care stochează unele dintre parolele pentru baza de date, nu aveți Vreau ca oamenii să vadă că tip de informații. Deci, este important ca, fiecare fișier și director vom crea are permisiuni aplicabile sau nu vrem oameni pentru a vedea aceste tipuri de fișiere și directoare și să fie capabil să le acceseze si, posibil, chiar să le schimbe. Deci, există trei tipuri de de permisiuni. Există o permisiune de citire, ceea ce înseamnă puteți citi un fișier sau o listă conținutul directorului. Există permisiunea de scriere, care înseamnă că puteți schimba un fișier sau schimbare un director și apoi executa permisiune, ceea ce înseamnă că puteți executa un fișier sau, mai degrabă, tu se poate muta într-un director. Deci CD ceva, dacă aveți permisiunea să-l execute, puteți muta în acel director. Acesta este un scurt exemplu. Din nou, ai trecut peste asta în problema setat. Dar am crea un director cu comanda mkdir. Am schimba permisiunile. Aceste două linii de fapt, nu exact același lucru. Este pentru a ilustra faptul că sintaxa pentru schimbare permisiuni, dacă faceți a + x sau 711, acestea sunt la fel. Ne-am uita în jos la masa frumos. Vedem că există utilizator permisiuni primul. Asta-i tu, individul, și server-ul dvs., potențial. Și apoi există de grup și altele. Diferențele dintre cele două sunt relativ banale. Deci, în general, vom forfetare cei împreună. Dar, în esență, dacă avem un fișier numit include că vrem să fim posibilitatea de a ne modifica și pe care ne-o dorim alții pentru a fi în măsură să execute, e permisiunea 711. Și vedem că în jos aici, în acest tabel. Avem o citire, scriere și execuție. Pentru fiecare dintre noi, dorim să să fie capabil să facă cele. De grup și alții, vrem doar ele să poată fi executate. Modul în care traduce ca într-un număr de permisiune este prin binar. Deci, dacă avem trei cele, care este un 1 în coloana celor, un 1 în câte două coloane, o coloană 1 de patru. Asta-7 acolo. Și această permisiune este 1. Această permisiune este 1. Deci, atunci 711 este același ca dând ne citi, scrie, și să execute, și toată lumea executa privilegii. Această linie de aici, noi, în general va fi citească și să scrie, atunci când ne-am a crea un director. Deci, aceasta linie de aici doar adaugă executa privilegii pentru toată lumea. Astfel că ar fi înrudit cu, în plus față de ceea ce avem, adăugarea de 1, 1, 1 la toată lumea. Întrucât acest lucru, este necesar pentru a adăuga citească și să scrie. Dar dacă ai de gând să folosească numerele, nu puteți adăuga ceva. Vă suprascrie orice permisiunea au fost acolo și să le pună în aplicare cu noul număr da. Asta a fost destul de repede. Are cineva intrebari despre schimbarea permisiunilor? OK. Dacă aș avea un fișier PHP, ce permisiuni Nu vreau să aibă? Acest lucru este în spec. set problemă. Deci, poti sa te uiti la spec. și apoi mi-a citit raspunsul. Audiența: Vrei ca utilizatorul să au permisiuni de citire-scriere. Și tu vrei toată lumea altcineva să aibă nimic. JASON Hirschhorn: Și ce numere este asta? Audiența: 600. JASON Hirschhorn: 600. Deci, chmod 600 - de fiecare dată când imprimați un fișier PHP, ea chmod la 600. OK. Am un director. Cineva în afară de Jeff, Am un dosar. Ce permisiuni vreau pentru a da la acel folder - De asemenea, în problema set spec., chiar sub acest răspuns sau răspunsul anterior? De asemenea, potențial pe diapozitiv - Marcus. Audiența: pentru folder, e 711. JASON Hirschhorn: 711 - astfel încât un dosar, pe care doriți să dea 711. Vrei să fi capabil să citească acel folder, schimba directoare, se mute în acel folder. Și vrei toată lumea să fie în măsură pentru a naviga în acest dosar, dar nu schimbă în mod necesar conținutul său. Ce zici de un fișier non-PHP, spun, un fișier JavaScript? Ce permisiuni vrem pentru a oferi acest tip de fișier? Audiența: 644. JASON Hirschhorn: 644 - de ce nu vrem să-l 644 da? Audiența: Pentru a lăsa alte persoane să-l citesc. Și tu citi sau scrie-l. JASON Hirschhorn: Deci, chiar, toată lumea altfel se poate citi că depune JavaScript. Și aveți posibilitatea să modificați că, în plus, pentru a fi capabil să-l citească. Deci, una dintre cele mai comune bugs oamenilor au cu această problemă stabilite și lor final al proiectului, în cazul în care acesta este un final de web-based Proiectul este, ei nu vor fi stabilite permisiunile corecte. Și ei nu vor putea pentru a vedea site-ul lor. Sau o anumită parte din site-ul lor. Deci, asigurați-vă că ați setat permisiunile corect. Nu doar presupune că va face-o în mod automat pentru tine. OK. Asta a fost un lucru mic pe care am petrecut o sumă bună de timp pe, așa am putea prinde. Să trecem la HTML. Și din nou, pentru urmatorii patru subiecte, vom trece prin ele relativ repede. Deci, vă rugăm să nu ezitați să mă opresc la orice timp, dacă aveți întrebări, indiferent dacă acestea sunt legate de ceea ce am acoperi sau ceva de la curs sau chiar de stabilit problema. Oprește-mă ori de câte ori aveți nevoie. Când vom ajunge la final, vom doar începe să mergi peste setul de problemă. Deci, HTML vine de la HyperText Limbaj de marcare. Acesta nu este un limbaj de programare. Tot ce face este structura dvs. de conținut și, de asemenea, oferă unele metadate. Deci, de exemplu, probabil, mulți dintre le-ați folosit pe Facebook înainte. Și puteți include link-uri la, sau poate pune un link ca de stare. Și apoi, veți observa că link-ul are întotdeauna o imagine frumoasă să-l și un text. In general, adică unele metadate pentru o pagina web. Și e metadate Facebook-specific. Și apoi, când Facebook este citit că pagină și inserarea că link-ul, acesta caută metadatele specific, așa că stie ce imagine pentru a afișa, ceea ce titlu pentru a afișa, și ce Textul abstract pentru a afișa. Deci, putem cuprinde cu metadate pagina noastră de web, folosind HTML. Și, de asemenea, ne ajută structura conținutul, în general, ce vrem să mergem unde. Totul în HTML este un element. Și elemente de dreapta de aici - acest CS50, textul este elementul. Și ea are unele etichete. Ea are aceasta o etichetă. Și am observat că este un o la început și apoi un slash o, așa închiderea unui tag la capătul. Uneori, nu e un deschis tag-ul și o etichetă aproape. Există doar un singur lucru. Vom vedea un exemplu de care pe slide-ul urmator. Deci, nu aveți nevoie de un dialog deschis și o etichetă aproape. Dar pentru aceasta, suntem cofraje acest Element de CS50 în o etichetă ancoră. Și, în esență, aceste tag-uri spune browser-ul ce să facă cu Elementul special. Deci, din nou, CS50 este textul vom vedea. Și va fi un tip de ancoră. Anchor este utilizat în principal pentru link-uri către ceva. În special, după cum puteți deja spune, aceasta este o link-ul la pagina de pornire CS50. Următoarea parte a etichetei - sau, în general, o parte din tag-uri sunt atribute. Și vedem chiar aici, că un tag-ul are un atribut, acest atribut href. Și ele modifica o anumită etichetă. De fapt, dacă te duci la unul dintre site-uri web sau referintele pe care le-am dat înainte sau căutați un tag-ul on-line, veți observa, există o tona de potențiale atribute. Aceasta este, probabil, una dintre cele mai comune. Acest lucru îmi spune pentru a crea o link către site-ul specific. Și atribuie, în general, sunt date, în cazul în care nu li se acordă exclusiv, în perechi cheie-valoare. Deci, aici e cheia, href. Iar valoarea este acest drept aici. Și că va veni la îndemână mai târziu, atunci când vom începe să utilizați unele biblioteci la ajuta-ne de cod în JavaScript sau scrie de conținut HTML. Suntem de multe ori va fi - la fel ca noi ar face suport matrice 0 și că ne-ar da o anumită valoare. În viitor, vom face o mulțime de lucruri cum ar fi suport de ceva href. Și că ne va da valoarea a href, sau dacă vrem să actualizeze href cheie si apoi da-l o anumită valoare. Deci, la fel ca și cu tablouri în care am avut Tasta 0 sau tasta 1 sau tasta 2 sau chiar cu un hash masă, bine, cu tabele de dispersie la fel de bine, probabil ai avut - o a fost o matrice, astfel cheie 0, tasta 1, tasta 2. Că indicele de acolo, putem cred că de asta ca o cheie. Iar valoarea este orice a fost depozitat acolo. Toate aceste atribute sunt perechi cheie-valoare. Și că va fi important pentru a schimba le sau actualizarea acestora sau le introduce mai târziu. În cele din urmă, ați văzut această structură înainte, dar acest lucru este cel mai de bază structura de pagini HTML. In partea de sus, am să vă spun că aceasta este, de fapt, HTML. Și atunci avem o HTML deschis tag-ul și o etichetă HTML apropiat. Deci, tot ceea ce în interiorul aceasta este HTML. Vedem cap și corp. Șeful document include, în general, ce? Orice presupuneri pentru ceea ce a pus în cap? Audiența: Ai pus titlul și stilul. JASON Hirschhorn: titlul. Asta a fost o mare presupunere. S-ar putea fi te-a avertizat la. Care sunt alte lucruri? Am menționat unul dintre ei, care s-ar putea merge în cap. Audiența: El a spus, stiluri. JASON Hirschhorn: Stiluri - deci, dacă doriți să se leagă într-un JavaScript sau chiar un CSS, care vorbești când vorbești despre stiluri. Un alt dosar, pe care doriți să se leagă într-un în afara fișier, care, probabil, va merge în cap. Ce altceva? Am menționat o serie de diapozitive în urmă unul din lucrurile pe care HTML se poate face pentru tine. Aceasta le poate oferi - începe cu un M - Audiența: metadate. JASON Hirschhorn: Metadata - atât de mult a metadatelor va merge în cap, pentru că nu va fi nevoie neapărat să facă parte din corpul de cod. Acesta este, în general, - corpul este conținut, ceea ce vede cineva. Și așa am dat de gol răspunsul la următoarea întrebare. Dar în organism este în general conținutul care va fi afișat pe pagina de web. Așa cum vom vedea, site-uri complicate au tendinta de a amesteca sau a schimba până ce au pus în cap și corp. Dar, în general, șeful conține lucruri că utilizatorul nu este de gând să vezi pe ecran. Ea leagă în alte dosare și furnizează metadate. În timp ce, corpul conține tot ceea ce utilizatorul se va vedea. Orice idee ce înseamnă această etichetă p? Audiența: Paragraful? Audiența: Print. Audiența: nu înseamnă imprimare. Audiența: Înseamnă punctul? JASON Hirschhorn: Paragraful - astfel încât acesta este un paragraf. Și această etichetă p, am fi putut doar tastat acest lucru de pe ecran și apoi a inclus un sfârșit de linie la sfârșitul anului acesta. Știe cineva cum să includă un sfârșit de linie? Audiența: pr - JASON Hirschhorn: pr - Audiența: Slash pr? JASON Hirschhorn: slash pr standuri pentru sfârșit de linie. Dar punctele au specific formatare. Și vom ajunge la formatarea într-o în al doilea rând, atunci când vorbim despre CSS. Dar tot ceea ce în interiorul aceste tag-uri p va avea unele de formatare implicit asociate cu aceasta, probabil, unele spațiere între diferite alin. Și va fi o modalitate de a diferenția blocuri de cod. Orice alte tag-uri - ceea ce sunt alte tag-uri pe care le-ați văzut? JASON Hirschhorn: h1 prin h6. h1 prin H6, și ce-i asta? Audiența: Se va indica cât de mare și îndrăzneț literele sunt. JASON Hirschhorn: Corect, sa actuală pentru antet. Și așa header1 este un antet mare. Va probabil, în mod implicit, să fie îndrăzneț, un de mari dimensiuni de font, probabil, centrat pe pe ecran, tot drumul până la h6, care este caractere mai mici, mai puțin accentuat. Desigur, puteți, în esti fișier CSS sau undeva în codul - care, din nou, vom ajunge la faptul că într-un al doilea - schimba ceea ce comportamentul implicit de un tag H1 este. Dar păstrează în minte faptul că Chrome, Safari, Firefox, Internet Explorer tot au implicit caută o mulțime de aceste tag-uri standard. Puteți, din nou, schimbă mereu ceea ce arata ca. Orice alte tag-uri ca toata lumea a văzut? Da - Audiența: Un site div. JASON Hirschhorn: O etichetă div - div tag-ul nu are nici un format încorporat, per se, care este folosit pentru a bloca diferite tipuri de cod. Orice alte tag-uri? Da. Audiența: li - JASON Hirschhorn: Li - ceea ce-i li pentru? Audiența: List. Audiența: List JASON Hirschhorn: li se pentru elemente de listă. Există două tipuri de liste. Care sunt cele două tipuri? Audiența: Comandat și neordonate. JASON Hirschhorn: Comandat și neordonate - standuri astfel ul pentru lista neordonata. Asta este, dacă doriți un glonț punct, o listă de gloanțe. O lista ordonata este o listă numerotată. Și astfel veți face un tag ul deschis și apoi tone de elemente de listă și apoi inchide tagurile ul. și că voința a crea o lista neordonata. Vom vedea câteva exemple de HTML într-un pic. Dar, înainte de asta, vreau să ajung la CSS. Și CSS vine de la Cascading Style Sheets. Și acest lucru este foarte strâns legată pentru a HTML, dar ușor diferit. Aceasta vă ajută să formatați tot conținutul că structurile de HTML. Deci în CSS, noi, în general, nu doresc să stilul fiecare antet sau fiecare singură imagine sau fiecare singur paragraf. Vrem să stil unele elemente sau, poate, un element specific. Și modul în care un anumit stil element nu este să-i dea o identitate. Deci, acest lucru este un atribut. Ea are o cheie și o valoare. ID-ul este cheia. Logo este valoarea. Am ales logo-ul la întâmplare. Și dacă vă dau ceva un act de identitate, în general, că ar trebui să se acorde numai la un element. Și apoi, în foaie de stil, aveți posibilitatea să stil care element particular, cu toate acestea vrei să te uiți. Dacă doriți să stil de un număr de elemente, poate este o anumită clasă de antete, doar o parte din anteturile. Poate e un antet și o imagine și un punctul ce dorim cu toții să fie centrat. Apoi, puteți da aceste grupuri de toate elementele unei clase. Și vă pot da clasa stiluri specifice. Deci, o identitate și o clasă sunt două moduri de a rupe codul dvs., astfel încât să puteți ajuta fi mai specific în ceea ce stil. Există trei moduri de stil. Prima dintre ele este, cu acest atribut stil. Deci, vedeți, cheia stil este stilul. Valoarea de stil este de fapt o altă listă de valori-cheie. În acest caz, am ales o cheie, text-align. Și i-am spus, centru. S-ar putea fi te intrebi la această punct, cum am stiu despre text-align. Ce vrea să facă? Asta este o întrebare bună de a cere, și vom ajunge acolo într-o secundă. Deci asta e un mod de a stil ceva, doar da atributul de stil. Un alt mod de a aranja ceva este - aceasta este Akshar menționat mai devreme. Puteți utiliza tag-uri de stil și a pus că în capul documentului HTML. Deci vrei să spui, practic, conținutul în interiorul aici este o parte a conținutului de stil. Și formatul pentru care este lucrul pe care Vreau să stil și apoi, în interiorul acolade, perechea valoarea cheie a atribute pe care doriți să o dea acel tip particular de elemente. În final, iar acest lucru este modul cel mai comun. Și acest lucru este modul în care ne-am fă-o în p. set 7. Este o foaie de stil extern. Deci, aveți un fișier CSS.. Și în interiorul de ea, veți vedea o mulțime de lucruri care arata ca aceasta, numele de un anumit tip de element sau un ID sau o clasă și apoi, în interiorul creț bretele, o listă de perechi de valori-cheie. Desigur, dacă veți crea un exterior fișier, ai de gând să Trebuie să-l includă - includ ascuțite, care ar fi analogia C - în fișierul HTML. Deci, va trebui să includă această cod în fișierul dvs. HTML. Aceasta fiind numele fișierului și presupunând că este în același director. OK. Asta a fost o foarte mult. Și vom merge acum să respire și să caute la unele site-ul reale, vii și a explora acest mai mult. Dar inainte de a face asta, nu oricine aveți întrebări? Deci, dacă doriți să faceți acest lucru, împreună cu mă, putem merge la aparatul. Și am ales pagina de start CS50. Puteți face acest lucru cu orice site web. Dar de ce nu începe cu pagina de pornire CS50? Să reîmprospătare. Eu de fapt foarte recomandăm să faci aceasta, împreună cu mine, pentru că ceea ce ne-am sunt de gând să faci acum va fi incredibil de util pentru tine, nu doar în P-Set 7, dar în P-Set 8, de asemenea. Da. Audiența: Există o modalitate de a face comentarii în HTML, fără a utiliza PHP? JASON Hirschhorn: Da, aveți posibilitatea să face comentarii în HTML. Audienta: Care este sintaxa? Audiența: Semnul exclamării bord bord. Audiența: OK. JASON Hirschhorn: Da. Aceasta este sintaxa. Puteți face comentarii in HTML. Puteți face comentarii în PHP. După cum veți vedea, comenta în HTML va încă arată în sus, atunci când ne uităm la Codul sursă HTML de un anumit site. Deci, acest cs50.net. Dacă faceți clic dreapta în cea mai modernă browsere de pe aproape orice pagină, să vizualizați pagina sursă. Deci, haideți să facem acest lucru pe CS50. Și iată și iată, ne-am vezi un lucru gigant. CS50 de fapt, arata destul de frumos. O mulțime de site-uri nu va fi uite acest frumos. Dacă te duci la pagina de start Google și-l deschide. Acesta nu va uita acest frumos. Dar observați că, în partea de sus - aceasta este un fel de mic. Să facem acest lucru mai mare. OK. În partea de sus, DOCTYPE HTML, asta e familiar. Apoi, vom vedea tag-ul HTML deschis și cap, chiar aici, toate din aceste meta tag-uri. Și puteți vedea acest og, nu de gând să meargă în acea acum. Dar eu sunt aproape sigur, la care cei care ar fi Facebook. Care este de fapt Facebook. Cred că vine de la grafic deschis. Deci, amintiți-vă, am menționat există Metadate-Faceboook specific poți da la o pagină. Asta e ceea ce este chiar aici. Deci, atunci când vă conectați această pagină pe Facebook, imaginea se va arăta este această imagine aici. Și veți vedea că de fapt e Facebook, pentru că este imaginea Facebook. Dar, oricum, ne apropiem deoparte. Deci avem niște etichete de metadate aici. Vedem titlul CS50. Și din nou, titlul este ceea ce se aici, în tab-ul browser-ului. Vedem acest lucru se leagă în, chiar aici, un fișier extern JavaScript. Nu am vorbit despre JavaScript mult, dar săptămâna viitoare - și cu siguranță dacă faci un set de probleme de web-based, vă va fi folosind JavaScript. Acesta este modul în care se leagă în exterior JavaScript fișiere. Vedem aici, în cele din urmă, CSS foaie de stil, care documentează aceste stiluri de acest cod. Să deschidem de fapt, că până și arunca o privire foarte repede. Acest lucru pare o nebunie. Nu e nici un fel mi-ar fi posibilitatea de a citi prin intermediul. Astfel încât să puteți de fapt, deși, dacă luați o privire, puteți vedea un fel de care există - acolo mergem. Care arata ca ceva ce am văzut înainte, culoarea de fundal, aceasta setare egală cu o valoare roșu-verde-albastru. Chestia asta un fel de a nu părea că ar trebui să , chiar dacă, atunci când a prezentat străine în acest fel, ea poate fi un pic copleșitoare. Noi nu vom uita la acest fișier CSS sau petrece mult timp pe ea, pentru că este, din nou, destul de greu de citit. Să ne întoarcem la acest Pagina HTML pentru CS50. Și să defilați în jos pentru a organismului. Și în interiorul vedem această etichetă div. Vedem un antet chiar aici. Vedem tag-ul ancora. Și acest element listă este având în vedere o anumită clasă. Și vom vedea că clasa repetate de peste si peste din nou. Nu ești Curtis. Există comentariu în HTML5. Și, după cum observați, putem vedea în continuare ea, dar nu este manifestare sus. Este de fapt foarte interesant. Se pare ca aceasta lista scoruri element este comentat. Dacă vom merge la această pagină, din nou, încă apare acolo, atât de interesant. Oh, de aceea, pentru că din această linie viitor. Ce altceva mai vedem de interes? Restul este mai confuz, în care se ocupă cu acest jumătatea din dreapta a ul, care este un pic pic mai complex. Deci, asta este ceea ce unii HTML se va arăta. Pentru mine însă, acest lucru este un pic copleșitoare, iar acest lucru nu ajută-mă atât de mult. Cu toate acestea, există ceva care este, de fapt, ajuta-ma foarte mult. Și asta este ceea ce am folosi ori de câte ori am încercând să dau seama cum ceva arată modul în care o face, sau cum se poate Am face modificări la site-ul meu. Și că este un instrument de dezvoltator care este construit în Chrome. Deci, dacă te duci la aceste trei baruri drept de aici și du-te în jos pentru instrumente faceți clic pe Instrumente pentru dezvoltatori, o fereastra mica se va apărea în partea de jos a paginii. Și, în special, Chrome, din moment ce este minunat, va formata această fereastră și ia HTML și să-l arate o mult mai frumos pentru tine. Deci, acum este de fapt ceva pliabil HTML pe care le puteți explora pentru a inspecta elementele paginii. Dacă vrem să se uite la corp, de fapt evidențiază. Când derulați peste o parte din HTML, în această fereastră, se va evidențiază rolul pe care vorbește cu privire la fereastra mare. Asa ca lasa-mă să încerc din nou și arunca în aer asta un pic. OK. Deci, haideți să deschidem corpul. Și eu sunt de defilare pe acest div stânga. Și observați că este evidențierea această jumătate din stânga a ecranului. Deci, haideți să faceți clic pe acea și să se extindă acest lucru. În interiorul de ea, se pare ca există două divs. Nu e prima div. Eu nu văd că subliniat. Nu știu, dar se pare ca aceasta doilea, lăsat interior, este conținutul în partea stângă a ecranului. Apoi, există acest lucru numit antet. Se pare că este evidențierea partea CS50. Dacă deschidem asta, vom vedea că este nimic mai mult decât antet 1. Acesta a dat o identitate, și este având în vedere CS50 text. Deci, din nou, se uită la ea prin acest consolă sau utilizarea instrumentelor pentru dezvoltatori panou în partea de jos a ecranului mărci a explora acest site, sperăm, un mult mai puțin intimidant și mult mai accesibile. De asemenea, ne permite să înțelegem că acest site, deși se pare foarte destul de frumos, nu este tot atât de mult mai mult decât ceea ce ai de gând să fie face pe Problemă Set 7. Și acest lucru este total în capacitatea de a crea. Dacă vrem să - Un alt lucru misto despre utilizarea acestor instrumente este, dacă faceți clic dreapta pe titlu, puteți edita HTML. Deci, haideți să-l numim Jason. Și acum veți observa m-am schimbat HTML de pe această pagină. Desigur, nu m-am schimbat ea permanent. Dacă am reîmprospătați browser-ul meu, atunci ea ar fi du-te înapoi la HTML original. Dar, uneori, vreau pentru a depana codul meu, și nu vreau să se uite doar meu fereastra gedit și să încercați și să înțeleagă ceea ce se întâmplă. Vreau să văd ce se va întâmpla în direct. Deci, voi edita cod ca acest lucru și de a lua ea modul în care am dori să se uite. Și apoi voi face schimbări în codul meu. Și mi se pare că este mult mai ușor atunci puteți face lucrurile instantaneu, așa. Să zicem, din nou, dorim să facem o altă șansă, pentru că suntem explorarea cu HTML și CSS chiar acum. Eu pot edita HTML chiar acum. Și am de gând să includă un link. Așa că am de gând să schimbe casa lui CS50 pagină, astfel încât acesta va lega la - să zicem - mea pagina de start. Care este numele, dacă cineva își amintește, sau ceea ce este atributul vreau să dau la o filă ancoră când vreau aceasta pentru a lega în altă parte? Audiența: href? JASON Hirschhorn: href - Deci, acum, veți vedea că acolo este o subliniere sub Jason. Asta pentru ca Chrome, în mod implicit, oferă ancore o subliniere. Ați văzut, probabil că înainte atunci când te-ai dus la o pagină web. Lucruri care sunt link-uri sunt subliniate și în albastru. Stilul implicit pentru un link este de a sublinia, în general, și pune-l în albastru. Dacă nu-mi place asta, Pot schimba asta. Și vom schimba într-o clipă. Dar acum, de asemenea, observa că, dacă am hover peste aceasta, în partea din stânga jos a ecran, chiar deasupra elementele verbale este link-ul pe care l-am dat. Deci, dacă am făcut clic pe aceasta - și putem click dreapta pe aceasta, deschideți o filă nouă. Acest lucru nu este de fapt pagina mea de start. E doar numele meu. Acolo te duci. L-am transforma acum într-un link. Să exploreze unele CSS, de asemenea. Frumos lucru - și am de gând să face acest lucru un pic mai mic - aproximativ această consolă este, ca foaie CSS nebun am văzut mai înainte, că a fost într-adevăr dificil de a analiza, este acum frumos prevăzute pentru noi de pe partea stângă din acest panou. Astfel încât să putem privi. Și dacă ne vom extinde această filă stiluri, ne-am pot vedea toate din diferite stiluri care sunt asociate cu, în acest caz, acest element particular, această element de legătură. Dacă facem fila stiluri compuse, care doar ne arată, nu în cazul în care totul provine de la, dar, în esență, toate acestea stiluri care operează pe acest element special chiar acum. Și să spunem, ne-o dorim pentru a schimba un pic. Deci, acest lucru este toate stilurile care sunt care operează pe acest element particular. Spune că vrea să-l schimbe, pentru că noi vrei sa vezi cum arata ceva. Și noi suntem doar joc în jurul chiar acum. Sau vrem pentru a testa ceva, înainte scris-o în cod și împingând l și făcându-l trăiască. Putem merge la fila stiluri. Și în prima casetă se spune, element.style. Și aici, puteți introduce, puteți adăuga ceva. Deci, vreau să - să mergem la link-ul meu și seta culoarea de fundal. Și de fapt, AutoFills pentru tine, toate proprietățile posibile. Culoarea de fundal, și vreau pentru a face asta albastru. Blus nu este un cuvânt. Albastru este un cuvânt. Am văzut-o veni? Oh, este că, deoarece este în href? OK. Deci, eu nu văd nici o schimbare aici. Și asta pentru că, dacă vom evidenția link-ul, veți observa că link-ul nu este de fapt controlul proprietăți ale acestui element particular. Este de fapt, dacă am deschide link-ul, acest antet aici e controla ceea ce pare. Așa că dacă vreau să fac fundalul albastru, de fapt, trebuie să se schimbe culoarea de fundal pe element de antet. Și acum vedem că fond este albastru. Deci, din nou, acest lucru repede s-ar putea merge prin acest material destul de repede. Dar acest lucru este, în esență, ceea ce ai de gând să faci. Nu e pe Problemă Set 7, dar cu siguranță atunci când sunteți codificare pe web. OK. Vreau sa fac albastru fundal. Deși, în acest caz, albastru arata destul de urat. Pot să merg aici, joacă în jurul. Văd că schimbarea aceasta de albastru nu funcționează pe un. Trebuie să se schimbe de fapt antetul Element să includă albastru fundal. Și apoi, dacă apoi mă întorc la CSS meu fișier, cum am stabilit de fapt, acest fundal pentru a fi albastru și face această schimbare băț? Pentru că dacă vom observa dacă am reîmprospăta pagina, toate modificările le-am făcut s-au dus. Asa ca am dat seama, OK, meu fond este albastru. Am nevoie pentru a merge în acel element header1 și de a schimba culoarea de fundal la albastru. Cum pot face de fapt, această schimbare? Ei bine, amintim că, dacă vom merge în interiorul de aici, acest antet, Titlul are o identitate. Și asta e titlu. Și astfel în dosarul nostru CSS, putem spune, OK, ia nimic cu ID-ul de titlu și da această proprietate suplimentar. Cum putem referi ceva cu ID-ul de titlu, orice idei, sau oricine știu cum referință ID-uri din dosarul nostru CSS? Un hash, asta e exact dreapta. Și ai un indiciu de care chiar aici. Deci, undeva în acest fișier CSS, există această linie de cod - # # Stânga stânga-interior # header # titlu. Și-l dă o marjă de jos, definind partea de jos a acestei marje anumit element. Ei bine, dacă am vrut să schimb asta, Mi-ar merge în acest fișier CSS. Și am putut găsi nici aceasta parte a fișierului CSS. Sau aș putea scrie propria mea. Aș putea face hash titlu ondulat bretele și apoi albastru fundal de culoare colon punct și virgulă și aproape că acoladă. Și că ar schimba fundalul Culoarea acestui element de albastru. Motivul pentru care vă oferă atât de multe aici este că, este necesar, în acest caz, pentru că titlul este un ID unic. Dar ceea ce pot face este lucruri cuib. Deci, acest lucru este de a spune, OK, du-te la stânga. Asta e foarte mic. Îmi cer scuze pentru asta. Dar du-te la chestia cu ID-ul din stânga. In interiorul că, uita-te pentru lucru cu ID-ul stânga interior. În interiorul de acea privire, uita-te pentru chestia cu antet ID. În interiorul de care, uita-te pentru lucrul Titlu ID-ul și de a schimba titlul de identitate. Deci, aceasta este doar o modalitate de lucruri cuiburi. Unii oameni, cum ar fi cuib ea, pentru că ea face un pic mai clar. Veți vedea aici, de asemenea, dreptul de aici, nu exista nici hash. E doar h1. Asta pentru ca h1 este dată numele de o etichetă generic. Și există unele proprietăți CSS asociate cu fiecare h1. Deci, dacă am găsit un alt h1 pe această pagină, Mi-ar vedea, de asemenea, că acest stil a fost aplicat la ea, de asemenea. Dacă am vrut să aplicați un stil de clasă, cum fac referire la o clasă sau vorbim despre o clasă într-un fișier CSS? Audiența: Dot. JASON Hirschhorn: E cu un punct. Deci, haideți să ne întoarcem la această pagină înainte. Dacă fac ID hash. Asta e schimbarea stilului de lucru cu ID-ul. Sau rău, dacă eu fac hash logo-ul, care este găsirea de lucru cu ID-ul de logo- și dându-i un anumit stil CSS. Dacă fac ceva. Top, care este găsirea tot cu clasa de top și schimba stilurile sale. Dacă eu pur și simplu h1, care își găsește fiecare h1 singur și-l dă orice altceva stil vreau să-l dau. Dacă fac spațiu H1 și apoi. Top. Care va merge găsi toate H1S și apoi toți cei cu clasa de top și apoi schimba numai acele stiluri de ceea ce vreau să-l dau. Și din nou, am fi putut fi scris o parte din acest lucru pe cont propriu. Dar nu ne-ar fi ajuns atât de departe. Mult mai bine, se pare că pentru a merge de fapt, pe un site web real, viu și a vedea cum ei o fac si uita-te la toate a lucrurile fantastice pe care le obține pentru a face. Să ne uităm la unul mai mult site-ul înainte de a ne muta pe. Și aceasta este una pe care o voi, probabil, deveni familiar cu. Acest lucru este CS50 Finance. Deci, din nou, poti sa te duci de fapt, în și respecta acest fișier CSS pe dvs. calculator, pentru că le-ați descărcat această Fișier CSS, dacă ați descărcat problemă set. Putem merge la Tools și Instrumente pentru dezvoltatori. Și vom vedea un aspect HTML mult mai simplu. Avem de sus, de mijloc, și de jos. Și din nou, ceva ce ar trebui să fie familiarizat cu, pentru că te-ai uitat prin codul distribuție pentru a seta o problemă din această săptămână. In partea de sus este, pe codul, o singură imagine numit. Și care este sursa a imaginii. Spun că am terminat tot ceea ce Am vrut sa pentru problema Set 7. Și este de lucru în mod corect, dar Vreau să schimbe modul în care arată. Și vreau să se schimbe fundalul din partea de sus a paginii pentru a, de exemplu, albastru. Dacă ar fi după mine, mi-ar veni în aici și dau seama, OK ce Nu vreau să se schimbe. Să vedem, div top ID, care arată ca partea de sus a paginii. Deci, haideți să mergem acolo. Să încercați să schimbați culoare de fundal. Să mergem să facem Alice albastru, deoarece care este unul mai frumos. Și veți observa că - probabil că nu poate vedea asta. Dar există un albastru deschis, alături de logo-CS50. Să se schimba in loc de rosu. Și veți observa acum doar am schimbat culoarea de fundal de culoare roșie. Deci, acum, aș intra în dosarul meu CSS și tip # paren cret de top chiar aici. Puteți vedea dreptul codul aici, acoladă. Și apoi, aș adăuga fundal culoare, roșu. Și apoi, nu ar fi fie o acoladă. Deci, care este modul în care mi-ar explora și experimenta cu formatarea pe CS50 Site-ul de finanțare. Am putea-o face de aici și de testare l pe browser-ul meu. Și apoi, am putea merge în codul meu real și să facă schimbările care vor de fapt, du-te direct și pe care oamenii a se vedea de fapt, în cazul în care acestea au fost de a veni la site-ul meu specific. OK. Asta a fost o foarte mult. Îmi cer scuze pentru a merge prin atât de repede. Are cineva intrebari la toate despre HTML sau CSS? Audiența: Poți să te duci peste modul în care legate de ceea ce a devenit Jason, din nou? JASON Hirschhorn: Ce Cum adică legat? Audiența: Ați furnizat o legătură la un alt ul, folosind ancora. JASON Hirschhorn: Deci, vă cerem, doar generic, cum ai face un link? Audienta: Da. JASON Hirschhorn: OK. Codul pentru a face o legătură - Audiența: Nu, ca și în HTML. JASON Hirschhorn: jos aici, vrei să spui? Așa că dacă vreau să includă un link undeva, să zicem, aceasta este HTML pe meu pagina de aici. Aceasta este HTML. Poate că este deschis într-un fișier, index.html. Eu merg inch Să aibă acest drept de autor John Link-ul de la Harvard la ceva. Deci, vom edita toate astea ca HTML. Tot ce faci este includ A, așa bracketing un suport atentă la început, și apoi suport slash un suport aproape la sfârșitul anului. Deci, acum am inclus o etichetă ancoră. Și de fapt, dacă faceți clic pe din aceasta, ea va fi acum formatați edita ca HTML. Și spune, vrem să-l lega. Noi v-ar atributul href. Și noi spunem - Și acum, așa cum observați, drepturi de autor John Harvard este albastru. Și când am defila peste ea, este acum o legătură. Astfel încât să puteți scrie codul. Puteți înconjura ceva destul de mult vrei într-o etichetă ancoră și porniți-l într-un link. Audiența: OK. Am prins-o. JASON Hirschhorn: Și dacă nu am vrut ea - desigur, uneori, oamenii tind pentru că aceste lucruri care arată la fel albastru generic și a subliniat sunt nu cel mai frumos mod de a face o legătură. Deci, dacă am venit aici, veți vedea că, undeva într-un fișier CSS, există scris aceasta o și apoi două acolade. Deci, haideți să spunem că, de link-uri, eu nu fac ca ei să devină albastru, mai degrabă am Vreau culoarea de un link către fi acest magenta frumos. Să dăm culoare. Să alege magenta. Acum, toate link-urile de pe pagina mea au deveni aceasta culoare frumoasa de magenta. Unii oameni nu le place de culori la toate. Unii oameni nu le place subliniază. Ai de a alege. Cu link-uri, vă puteți aranja modul în care acestea uita-te odata ce le-ai vizitat. După cum veți observa pe o mulțime de pagini, link-uri rândul său, violet pe care le vizitați. Puteți schimba culoarea la fel de bine. Da. Audiența: Deci ai schimba pentru fiecare link. Dar, dacă ai vrut doar să fac asta link în sine, ar fi pur si simplu face în ID-ul de jos sau ceva? JASON Hirschhorn: Deci, o mare întrebare. După cum ați observat aici, mi-am schimbat ceva parte a CSS care se aplică tot ceea ce este o A. Dacă am vrut să doar face că link-ul în partea de jos, am ar merge la dosarul meu CSS și, probabil, face exact cum ai spus, hash spațiu de jos o. Și asta mi-ar da Ca toate în partea de jos. Sau aș putea, alternativ, da un ID-ul unic și apoi face doar link-ul hash. Și care mi-ar permite pentru a schimba acest lucru. Cu toate acestea, doar doling ID-uri vrând-nevrând este, în general, un rău practică, pentru că cei ar trebui să fie unic. Și cu atât mai mult ai celor, ea se poate obține un pic confuz. Da. Audiența: Ne puteți da la fel ID-ul pentru proprietarii de mai multe? JASON Hirschhorn: punct de vedere tehnic, da. Nimic nu te va opri, dar tu nu ar trebui să Tu ar trebui să dea o clasă. OK, orice alte intrebari despre HTML sau CSS? OK. Să trecem la PHP. Oh, da. Audiența: Despre ce este vorba aceste site-uri care înseamnă că putem edita le înainte de a reîmprospăta. Dar odata ce am refresh acesta revine Înapoi la HTML inițială? JASON Hirschhorn: Marea întrebare - asa ca atunci cand ne-am încărcat această pagina web, e HTML. Și e JavaScript. PHP său este executat pentru a ne da orice tip de site-ul vom vedea. Și este creat unele HTML, unele JavaScript, CSS și unele. Și care este acum accesibil de computerul nostru. Și o copie a acestor dosare este salvat local, pe calculatorul nostru, pentru moment. Deci, putem edita această copie locală. Dar, desigur, nu suntem de editare copia de server. Și când ne-am necesară încărcarea paginii, vom obține o altă copie de server. Și așa vedem lucrurile înapoi așa cum au fost. Dacă noi am fost capabil, de aici, pentru a edita site-ul oficial, vom avea o mulțime de probleme. Publicul: Da, astfel încât să putem citi și să scrie că copie. JASON Hirschhorn: Corect. Facem doar modificările locale aici, dar, din nou, foarte util pentru a explora, de multe ori. Când am scris proiectul meu final, pentru exemplu, vreau să văd cum unii site-ul a făcut ceva aspect modul în care au făcut-o. Voi merge în și de a folosi acest panou jos aici, să se uite la ceea ce CSS-au dat la sau ce culoare au luat sau modul în care acestea luat-o, astfel încât, atunci când a plutit peste ceva, lista de venit într-un mod în cascadă frumos. Este o modalitate foarte bună de a inspecta ce alte site-uri web face și împrumut de la ei. Să trecem la PHP. PHP standuri pentru, într-un sens recursiv, PHP Hypertext Processor. Și PHP, ce se va face se executa pe partea de server de cod. Deci, noi nu vom vedea codul PHP. Cu toate acestea, ea nu joacă frumos cu HTML și de multe ori generează o mulțime de cod HTML. Dar, după cum veți fi familiarizat cu problema Set 7, codul PHP va executa, genera unele HTML, și asta e ceea ce utilizatorul va ajunge vedea. PHP este incredibil de similar cu C. Cu toate acestea, există o serie de diferențe, și aceste diferențe sunt importante de reținut. O diferență este că variabilele în PHP sunt liber tipizat. Are cineva un sens de ce înseamnă asta? Audiența: Nu este nevoie să-l arunce singur. Ca nu este nevoie pentru a scrie în text. JASON Hirschhorn: Eu nu ar folosi turnat cuvânt, dar da, nu trebuie să declare un tip pentru o anumită variabilă. Cum în schimb putem declara o variabila? Audiența: Folosiți un semn dolar. JASON Hirschhorn: Folosiți un semn dolar. Deci $ x este o variabilă. 1 dolar este o variabilă. $ String este o variabilă. Cei variabile, $ x ar putea fie un număr întreg. Apoi, ar putea fi un șir. Apoi, ar putea fi un personaj. Acesta nu contează cu adevărat. De asemenea, cool thing despre PHP este, să zicem, $ x este cel șir. Și $ y este caracterul una. Puteți adăuga $ x și y $, și-l voi da 2, ceea ce te-ai aștepta. Deci, există operațiuni în PHP. Pentru că este scris vag variabile, unele turnare implicit se face pentru tine și unele operațiuni. Puteți face operații pe lucruri de diferite tipuri. Întrucât înainte, veți obține de multe ori o eroare în C spune, acest lucru nu este tipul care ar trebui să meargă aici. Numai lucruri de acest tip poate merge aici. Tu nu ești mergi la a lua acest tip de eroare, în general, în PHP. Deci asta este o mare diferență - modul în care avem de a face cu variabile. A doua diferență mare este că Codul PHP este interpretat. Wheres, cod C este compilat. Ce înseamnă asta? Ei bine, pentru cod C ai fugit printr-un compilator. Ai generat un fișier binar. Și tu ai fugit ca fișier binar. Ai avut grijă de toate erorile înainte ați generat fișierul binar. Desigur, nu ar fi putut fi Segmentarea defecte, atunci când a fugit fișier binar. Dar nu e ca si cum ai uitat să includă definirea printf, sau nu ați folosit o variabilă și doar creat o variabilă risipă. Sau nu te-ai defini un funcția de prototip. Tot ce sa întâmplat înainte de compilat. Ea ți-a dat toate erorile sau rele lucruri care se credeau s-ar putea întâmpla. Si apoi, ai avut-ul 0 și 1 fișier pe care ai fugit. Cod PHP nu funcționează așa. Ai de gând să scrie cod PHP. Apoi, ai de gând să salvați-l, probabil. Și, cel puțin în P-Set 7, ai de gând pentru a reîmprospăta browser-ul web, și ai de gând pentru a vedea ce sa întâmplat. Veti vedea de ieșire din acest cod PHP. S-ar putea vedea, de asemenea, în partea de sus a paginii dvs., o eroare. Pentru că ai avut ceva eroare în PHP dumneavoastră. S-ar putea vedea în continuare restul de pagina de web este în căutarea de bine. Dar o parte este greșită, și nu e o eroare în acel loc. Și asta pentru că acea parte din codul PHP nu funcționează. Într-adevăr, atunci când executa, atunci când du-te la ceva de genul by.php. Se va merge prin intermediul PHP-ul fișier linie cu linie și executa o atunci și numai atunci. Nu o să-l compilați înainte de timp sau compila o copie și apoi da care compilat copie la toată lumea. De fiecare dată, se va merge prin linie cu linie și să execute el. Deci, unele linii ar putea să funcționeze și ieșire ceva corect. Și alte linii ar putea fi spart și de ieșire o eroare în loc. Deci, atunci când depanare cu PHP, ne-am dat un cuplu de lucruri utile pentru a vă ajuta să depanare, cum ar fi funcția de depozit. Dar, în general, ai de gând pentru a vedea aceste erori. Și asta e cum ai de gând să că ai făcut ceva greșit. Dar tu esti doar de gând pentru a vedea eroarea După ce executați de fapt codul. Un alt aspect important al PHP și dezvoltare web este ideea de a obține față de mesaj. Poate cineva să explice în ce constă diferența obține între și post sunt? Nimeni - Da. Audiența: Nu unul dintre ei permite utilizatorului vedea datele, și unul dintre ei nu? JASON Hirschhorn: Mare. Da, ai ceva de adăugat? Audiența: Am posta subțire este o variabila super-global. JASON Hirschhorn: Deci, ambele variabile sunt date de tine. Acestea sunt doar variabile. Și știi că sunt variabile, pentru că aici am folosi semnul dolar. Acestea sunt variabile date la tine de PHP. Și atunci când vă deplasați între paginile web, doriți să salvați niște informații. Probabil doriți să salvați în cazul în care utilizatorul este logat Care nu este salvat în GET și POST. Care este salvat în altceva, o altă variabilă. Știe cineva ce variabilă care este salvat în, sau ceea ce variabilă le utilizați în P-Set 7, pentru a se asigura că utilizatorul este logat? $ _SESSION, Asta e exact dreapta, probabil important să fie familiarizați cu numele acestor lucruri le utilizați frecvent. Astfel încât să utilizați variabila de sesiune pentru a salva informații de la o pagină la alta. Asta este o variabilă foarte. Ea există pe fiecare pagină, poate ca o variabilă globală, dacă doriți să se gândească despre ea ca asta. Există o serie de alte variabile care vă permit să transfere informații de la o pagină la alta. În special, cele pe care le vom concentra pe sunt EEG și variabilele POST. În PHP arata ca $ _GET Și $ _POST. Iar diferența, așa cum a arătat Marcus afară, între cele două dintre ele este faptul că, informații în $ _GET este afișat în adresa URL. Deci, dacă ne uităm aici, vom vedea un link YouTube. Noi vedem acest semn de întrebare. Vedem v = și apoi o anumită valoare. Înapoi la această idee de valoare cheie pereche, v este cheia. Și aici este valoarea. Deci, dacă am fost pentru a merge la această pagină sau codificare pe această pagină, vom avea o variabilă numită $ _GET. Dacă ne-am dus la $ _GET suport deschis "v" suport aproape, foarte asemănătoare cu matrice notație, aceasta este o matrice asociat pentru că noi nu îl utilizați indici. Au fost folosind siruri de caractere ca și chei. Dar idee foarte asemănătoare. Dacă ne-am dus noi, s-ar obține această valoare. Pe această pagină, vom putea pentru a utiliza această valoare. Dacă ne uităm, de fapt, să du-te la o pagina YouTube. Ce film ar trebui să ne uităm? Aceasta, sunt oameni Hobbit fani? Publicul: Da. JASON Hirschhorn: Deci, eu sunt copierea URL-ul social al acestora și lipiți-l într-o fereastră nouă. Și acum, dacă te uiți aici, veți observa că, încă o dată - Am de gând să copiați și inserați acest lucru în gedit, astfel încât să putem vedea mai mare. Veți observa că acesta are acest semn de întrebare. Semnul de întrebare care desemnează totul după ce aceasta va fi salvate în variabila GET. Ea are atunci v, care este primul cheie și această primă valoare. Ampersand este special. Ampersand spune, OK, ne-am terminat prima valoare. Suntem acum de a trece la un alt pereche valoare-cheie. Aici, cheia este numit caracteristică, iar valoarea este youtu.be. Deci, dacă am fost o codificare această pagină și cineva a mers la această adresă URL și am avut poate watch.php. Și am fost de codificare asta. Și am putea folosi variabila $ _GET. Și aș avea un v, și Mi-ar fi o caracteristică. Și dacă am folosi v cheia, am ar obține această valoare. Și dacă am făcut $ _GET suport "facilitate" suport aproape, mi-ar lua această valoare. Din nou, aceasta nu neapărat se aplică - evident, cheile și valorile YouTube și a obține informații nu se aplică pentru Problema noastră Set 7. Dar există anumite lucruri pe care le trece prin GET la problema noastră Set 7. Și cu siguranță, atunci când te duci la o pagină web sau sunt de codificare propria pagina, $ _GET Va veni la îndemână atunci când codificare dumneavoastră. Ceea ce este un motiv de a folosi $ _GET apoi, în cazul în care se oferă nici o intimitate? Veți vedea toate aceste informații care a fost transferat. Totul este afișat pentru utilizator. Dar ceea ce este un motiv pentru care s-ar putea doriți să salvați ceva in $ _GET, ca spre deosebire de $ _POST? De ce s-ar putea vrei să faci asta? Bine. Te-am rugat în Quiz 1. Ceea ce este pro de $ _GET? Ce este un pro? Da - Audiența: Este mai ușor să schimb de informații. JASON Hirschhorn: Cred că Asta-i grozav. Este mai ușor să facă schimb de informații. Este mai ușor de marcaj. Puteți marca acum, YouTube.com / ceas? V = ceva și du-te în acest film specific. În cazul în care YouTube a făcut întotdeauna cereri POST la pagini diferite, fiecare URL-ul YouTube ar fi YouTube.com. Nu ai putea să marcați un singur videoclip. Pentru că dacă spui comun care se leagă cu altcineva, ei nu fac obține în mod automat variabila dvs. post. Sunt doar obtinerea acest link, iar link-ul este la fel pentru toată lumea. Astfel că este un pro. Acesta vă permite să marcaj această informații sau împărtășiți aceste informații sau a face un pic mai user-friendly. Desigur, nu există nici o intimitate, așa că avem acest post variabilă. Și informații mesaj nu este afișat în adresa URL. Nu e complet privat. Dar este puțin mai privat. Și așa veți vedea acest URL aici, cs50.net. Indiferent dacă sunt sau nu sunteți conectat la site-ul, acesta va avea aceeași URL-ul, cs50.net. În mod evident, ceva este diferit, în cazul în care sunteți conectat la site-ul web. Ai, o, probabil, introducerea codului PIN-ul. Și a confirmat faptul că cu serverul. Și este, probabil, de economisire și alte informații. Dar URL-ul nu se schimbă deloc. Și astfel acesta este cazul, atunci când ceva este trimis prin poștă. URL-ul nu se schimbă. Aceste informații POST nu este afișat în adresa URL. Dar unele de stat s-au schimbat, și, poate, există unele informații salvate în POST variabilă. Scuze. înainte de a merge în SQL, orice întrebări despre PHP, în special, întrebări cu privire la lucruri pe care nu am trece peste pe care le-ați găsit sau orice sintaxă sau intrebari logice despre PHP? OK. Limba finală va fi interacționează cu această săptămână este Structured Query Language, SQL, pronunțat continuare de multe ori. Care vă permite să interacționeze cu baza de date într-un mod formal. Și joacă foarte bine cu PHP. După cum veți vedea în Problema Set 7, ne-am ai dat o funcție numită interogare. Și este nevoie de un șir SQL și execută că interogare la baza de date. În ultimii ani, nu au fost dat această funcție. Ai avut de a utiliza funcțiile PHP pentru a face interogare în baza de date și verificarea pentru erori și apoi a obține rezultatele. Și, de fapt, nu e așa de greu, pentru că, din nou, pe care îl joacă foarte frumos cu PHP. Și PHP vă oferă o mulțime de funcții de a interacționa cu o bază de date SQL. Deci, de multe ori, cei doi acestea merg împreună. Desigur, ai putea interacționa cu baza de date SQL cu orice serie de alte limbi. Dar PHP este una foarte bună de a alege. O bază de date - vom trece peste acest lucru rapid, deoarece acesta este un cuvânt noutate vom începe să utilizați de multe ori - este o colecție de tabele. Deci, ne putem gândi la ea ca un fișier Excel. Un fișier Excel are mai multe file pe partea de jos a ecranului. Fiecare filă vom numi acum un tabel, în cazul în care un tabel este o colecție de rânduri. Și ceea ce este un rând? Ei bine, un rând este faptul că același lucru în fișierul Excel. Care are doar anumite valori pentru fiecare câmp sau fiecare coloană dat dat. E ca o intrare în tabel. Este un student, care are o identitate, o ID-ul specific, precum și un nume și o anumită casă specific. Deci, o bază de date este o colecție de tabele. Și tabelele în sine sunt o numărul de rânduri sau înregistrări. Există, de asemenea, în fiecare masă, anumite domenii. Și care specifică ce fiecare înregistrare este Va trebui, domenii numit uneori coloane, dar, în general, numite domenii. În acest tabel foarte simplu, am trei câmpuri, un câmp de identitate, un nume de utilizator teren, și un câmp hash. Și am trei rânduri. Chiar acum, sunt goale. Ei, probabil, nu ar fi gol în cazul în care acest lucru a fost baza mea de date reale. Deci, dacă ați folosit Excel, idee similară la ceea ce faci în Excel, deși, în mod evident, acum am de gând să fie în măsură să face mult mai puternice lucruri pe informațiile stocate in baza noastra de date. Va fi crearea te un Baza de date pentru problema Set 7. Dar veți fi crearea de multiple tabele în baza de date. Veți fi crearea unei baze de date sau un tabel pentru utilizatori. Veți fi, de asemenea, crearea unui tabel pentru probabil tranzacții bursiere, pentru a păstra cale de ei, pentru că aveți nevoie pentru a să pună în aplicare o caracteristică istorie. Ambele aceste tabele vor avea diferite domenii. De exemplu, într-un câmp de utilizator, probabil ca numele de utilizator și o ID-ul și un hash al parolei. În tabelul de stocurile care ține evidența istorie sau masa de Istorie, te probabil că nu au nevoie de numele de utilizator și hash și ID-ul. Probabil ai nevoie de doar unul din cei valori care sunt unice, pentru a asocia acesta cu un anumit utilizator. Dar apoi, pe care doriți să stocați alte lucruri cum ar fi, la ce ora a fost făcut tranzacție. Ce stoc a fost cumpărat sau vândut? Cât de multe acțiuni ale stocului a fost cumpărat sau vândut? Care a fost prețul la care stoc a fost cumpărat sau vândut? Deci, din nou, ai de gând să fie interacționează cu baze de date, care e va avea mai multe tabele. Fiecare tabel va avea propriul set de domenii. Cu toate acestea, nu va fi probabil un asemănătoare câmp în fiecare tabel, care ele se referă la unul pe altul. De obicei, acesta este un domeniu de identitate. Pentru că în cazul în care fiecare utilizator are un ID unic și asociați care ID-ul cu fiecare tranzacție care utilizatorul face sau toate din istorie care utilizatorului. Și aveți ID-ul utilizatorului. Aveți posibilitatea să obțineți informații fie din tabel. Puteți obține numele de utilizator, și tu puteți obține toate tranzacțiile lor. Orice întrebări cu privire la bazele de date, sau întrebări specifice? De fapt, hai să susțin că. Vom fi acolo în două părți. Deci, există patru operații pe baze de date pe care le va folosi în Problema Set 7 și probabil vreodată să fie folosind. Primul lucru pe care doriți să faceți este să inserați un nou record într-un tabel sau un nou rând într-un tabel. Aceasta este funcția generică, formă generică, de care interogare SQL. INSERT INTO tabel, indiferent de coloane doriți să inserați și apoi valorile pe care ai de gând să doriți să a pus în aceste coloane sau câmpuri. Dacă aveți mai multe tabele într-o baze de date sau mai multe baze de date, vă s-ar putea, de asemenea, trebuie să se precizeze baza de date și tabelul pe care doriți pentru a pune lucrurile în. Dar foarte simplu, dacă doriți să inserați în ceva, ai spus, aici sunt domenii pe care vreau să introduce în. Și aici sunt valorile. În unele tabele, de asemenea, și acest utilizator tabel este un exemplu bun. Probabil în tabelul acestui utilizator și probabil în tabelul dvs. de utilizator în P-Set 7, nu e doar o valoare nume de utilizator. Nu e doar o valoare în numerar, sau câmp, mai degrabă. Există, de asemenea, un domeniu de identitate. Eu nu am de gând să introduceți acest domeniu de identitate. Care va fi dat la în mod automat mă, atunci când o se introduce nou record. Deci, există unele domeniu pe care îl se poate seta pentru a fi automat. Poate vrei să dea fiecare utilizator 10.000 dolari în numerar de la inceput. Așa că nu trebuie să introduceți un număr de bani aici. Tot ce am nevoie pentru a insera este numele de utilizator. Și apoi, domeniul de numerar va fi pre-populate, iar câmpul ID va fi pre-populate. Deci, de multe ori, nu ne inserarea ceva în fiecare domeniu, deoarece celelalte câmpuri sunt pre-populate. Pentru că așa ne-am înființat masa. De-al doilea lucru pe care ai de gând să doriți să faceți este să ștergeți o înregistrare. Ștergerea ceva este foarte simplu. Ai da tabelul în care doriți pentru a șterge ceva de la. Și tu spui, bine, vreau să ștergeți înregistrare, care are un nume de utilizator de Milo. Sau Vreau să ștergeți toate înregistrările care au un nume de utilizator de Milo sau care au un tranzacție de număr de identificare de utilizator 2. Orice întrebări cu privire la aceste două tipuri de interogări? Audiența: [inaudibil]. JASON Hirschhorn: Da. Așa că am de gând să utilizeze rând și înregistrare interschimbabil și unele cu coloană și de câmp. Dar un singur rând este o înregistrare. O coloană este un domeniu, va înapoi la acest tabel. OK. Următorul lucru pe care esti, probabil, de gând să faci este obține unele informații de la masă. Care este o interogare de selectare. Și din nou, ceea ce de masă eu selectarea de la? Și ce coloana vreau pentru a selecta, sau ce valoare vreau pentru a selecta și de la care rând? Deci, Select este un pic mai specific. Eu spun, OK, vreau acest tabel. Și apoi vreau numele de utilizator de coloană, și Îl vreau din rândul cu ID-ul 2. Acesta este un mod de a face o Select. Sau pot să spun, da-mi orice un singur nume de utilizator. Sau pot să spun, da-mi un întreg rând din acest tabel, unde numele de utilizator este 1. Deci, există câteva moduri diferite de a selectați interogări, în funcție de modul în care mai multe informații pe care doriți, Întotdeauna aveți posibilitatea să selectați pur și simplu totul de la masa specifică și apoi bucla prin ea, alegem lucrurile pe care le doriți. Dar păstrează în minte, dacă sunteți selectarea o mulțime de lucruri de la o masă și tu au o masă foarte mare, care va avea de ceva timp, așa că cel mai bine pentru a selecta numai lucruri pe care ai de gând pentru a ajunge folosind. De asemenea, cu Select și, cu toate acestea alte SQL comenzi la fel de bine, eu sunt oferindu-vă versiunea goale-oase. Dar spun, eu sunt utilizatorii selectarea și vreau pentru a le imprima în ordine alfabetică, Am putea selecta toți utilizatorii și apoi un fel le în ordine alfabetică în codul meu. Sau există o modalitate de a scrie select interogare, care selectează lucrurile într-o moda alfabetică, bazat pe o coloana specific, fie ascendentă sau descendent. Deci, ține cont de faptul că, o mulțime de ceea ce vrei sa faci poate fi, probabil, realizat în interogarea printr-o suplimentar atribut. Deci, nu uita-te la aceste întrebări on-line sau alte lucruri care le puteți face cu aceste interogări pentru a le extinde. În cele din urmă, ultimul lucru pe care doriți să faceți nu se introduce ceva sau șterge ceva, ci mai degrabă actualiza ceva. Și asta se face cu actualizarea interogare, și din nou, ceea ce masă. Și ce schimbare vreau sa fac? Și la care rând sau înregistrare face Vreau să fac această schimbare? Orice întrebări cu privire la SQL? OK. Deci, avem aproximativ 15 minute. Și aceasta este ultima diapozitiv am. Și sperăm că, acest ultim slide este un segue bun în problema stabilit, pentru că înțelegerea în cazul în care dorim să inserați înregistrări, ștergeți-le, selectați ei, și să le actualizeze ne va ajuta înțelege logica mai mare și flux Problema de Set 7. Asa ca stiu toate raspunsurile la aceste întrebări. Eu nu am de gând să-ți spun toate răspunsurile. Dar, în cazul în care altcineva ar dori să prezintă o întrebare la grupul sau un răspunsul la una dintre aceste întrebări, putem folosi ca punct de sari de pe la vorbesc despre setul de problemă. Sau dacă cineva are o mai generic întrebare de pe setul de probleme, se simt liber pentru a cere la fel de bine. Și putem începe acolo. Țineți minte că ai fost tăcut este doare toată lumea. Da. Audiența: Deci, este singura cale de a trece variabile de la și de la diferite web pagini sau mai convenabil Astfel, folosind POST sau GET? JASON Hirschhorn: Deci, da, că este cel mai convenabil mod de a spune - când cineva completează un formular - a obține informații pe un alt web pagină, folosind GET sau POST. Datorită cadrului folosim în acest set de probleme, veți observa că, de multe ori, ne-am face o altă pagină. Sau ne vom face un alt fișier, nu neapărat o altă pagină. Așa că am trecut într-o variabilă. Și apoi, se face o Pagina HTML, folosind informații de la acea variabila. Care nu este punct de vedere tehnic trece informații între diferite pagini web. Care trece informații între diferite fișiere. Și astfel încât să putem folosi orice variabilă a face acest lucru. Dar, da, dacă am vrut să treacă informații de la o anumită pagină a o altă pagină, GET și POST ar fi fi mod de a face acest lucru. Orice alte întrebări cu privire la stabilit problema? OK. Să mergem prin, apoi, o anumită parte a problemei stabilit. Aveți de gând să nevoie, la un moment dat, afișa portofoliul cuiva pe ecranului. Ce vreau să spun când spun portofoliu, în contextul acestei probleme stabilit? Audiența: E ca stocurile care acestea au cum, mai multe acțiuni pe care le dețin, prețul, și cât de mult bani care le-au lăsat. JASON Hirschhorn: Sună grozav. Deci, vreau să afișeze toate stocurile pe care le dețin pentru fiecare societate pe acțiuni de acțiuni și, probabil, cât de mult e valoare, și apoi o variabilă separată, cât de mult bani pe care le dețin. Deci, spune vreau să descriu asta. Să începem să vorbim despre cum am putut du-te despre a face asta, ceea ce mese sunt Va trebui să aibă la putea face asta. Da - Audiența: utilizatori Ei bine, și apoi, cred puteți face un tabel numit Acțiuni sau ceva de genul asta, care ar fi cât de multe le-am cumpărat. JASON Hirschhorn: OK. Așa că am de gând să nevoie de un tabel numit Utilizatori, care ține evidența numele de utilizator, probabil, probabil, un act de identitate, probabil parola unui individ. Ceea ce este cu totul altceva pe care le a spus doar că este asociat? Cineva în afară de Michael, ceea ce este ceva care este asociat cu fiecare utilizator, unic pentru ei? Audiența: ID. JASON Hirschhorn: ID - ceea ce e un alt lucru pe care suntem probabil de gând să doriți să afișate pe această pagină? Audiența: Numele lor. JASON Hirschhorn: Numele lor - ceea ce este un alt lucru legat de această set special problema? Audiența: Ce stocurilor pe care le dețin - JASON Hirschhorn: Nu sunt de gând să să fie o mulțime de ceea ce stocurilor pe care le dețin. Ce este o valoare specific, deși, că acestea sunt de gând să aibă asociate cu ei? Cum au de gând să cumpere și vândă stocurile? Audiența: Cash. JASON Hirschhorn: Sunt va avea bani. Astfel încât fiecare utilizator va avea o valoare pentru bani. Și care va fi unic pentru fiecare utilizator. Deci, în masa utilizatorului, se face sens pentru a pune în numerar. Ai putea, desigur, de a crea un alt tabel care are ID-urile de utilizator și lor Valoarea de numerar. Dar ea nu are nici un sens. Se face sens doar pentru a pune toate că într-un tabel. Așa că am de gând să aibă o masă cu aceste informații. Și apoi, ce-i celălalt tabel vom avea? Ai spus, o masă Stocuri. Ceea ce ne pune în Stocurile tabelul? Oricine, de idei - Audiența: Compania. JASON Hirschhorn: Mergem pentru a pune în numele a Compania, deci AAPL pentru Apple. Da. Audiența: Cât de multe acțiuni și cât de mult valorează. JASON Hirschhorn: Cât de multe acțiuni, cât de mult valorează - ceea ce e cu totul altceva ne-am nevoie în acest tabel? Audiența: Un ID de utilizator pentru a indexa. JASON Hirschhorn: Un ID utilizator. Deci, în acest tabel, vom probabil au - să zicem, dacă e cineva care deține trei stocuri, trei rânduri, fiecare cu că ID-ul de utilizator sau utilizator care individual ID-ul, dar un alt nume companie, un număr diferit de actiuni Probabil, și o valoare diferită de preț pentru fiecare a acestor stocuri. Din nou, ceea ce spun acum nu este în mod necesar la punerea în aplicare, pentru că vă dați seama că există ceva mai mult modalități eficiente de a-l pună în aplicare. Dar acesta este un loc bun pentru a începe. OK. Deci, acestea sunt cele două tabele pe care le avem. Acum vrem să afișeze această pagină. Care este primul tip de interogare am avea nevoie pentru a face. Pe fiecare pagină, presupune că este un utilizator este conectat, avem ID-ul de utilizator. Deci, ceea ce este primul tip de query avem nevoie pentru a face? Da. Audiența: ID-ul lor de utilizator. JASON Hirschhorn: Avem ID-ul de utilizator, atunci când vom începe să cod la începutul paginii noastre. Deci, ceea ce este primul tip de interogare ne trebuie să facă, dat ID-ul unui utilizator? Ne-am dus pe cele patru tipuri. Sunt doar patru răspunsuri posibile. Audiența: Este selectați o înregistrare. JASON Hirschhorn: A Select - ne-o dorim pentru a selecta de la utilizator de masă pentru a obține, să zicem, valoarea lor de numerar. Și putem imprima suma de bani pe partea de sus a ecranului. OK. Care este următorul tip de query vrem să facem? Avem alte lucruri avem nevoie pentru a afișa. Cei care sunt salvate într-un alt tabel. Deci, cum vom obține că? Audiența: Selectați pentru ei. JASON Hirschhorn: A Select - din nou, există doar patru opțiuni. Selectați probabil sunete cum ar fi cea din dreapta. Deci, avem nevoie pentru a face o altă interogare de selectare, din nou, folosind acel ID de utilizator. Și acum, vrem să se întoarcă, nu doar una rând, bu toate rândurile care se potrivesc noastră criterii, în cazul în care ID-ul de utilizator este egal cu 1. Și apoi putem merge și să o buclă doar imprima toate cele de pe ecran, poate imprima companiei de la fiecare din cele de pe ecran. Mare, că sună ca asta e afișarea unui portofoliu, nu cu mult mai mult complicat decât atât. OK, utilizatorul decide apoi că ei au o multime de bani stânga peste. Și doresc să cumpere ceva mai multe acțiuni ale unui stoc. Să spunem, pe care le dețin deja stoc aceasta companie prea. Astfel încât acestea să mergeți la pagina dvs. de cumpărare. Ei au de intrare numele companiei. Ce este interogarea, după intrarea numele companiei, care aveți nevoie pentru a executa următor? Da. Audiența: Actualizare. JASON Hirschhorn: Update - și ce masă vrei să actualizați? Audiența: masa lor, pe bază de pe numărul lor de identitate? JASON Hirschhorn: Deci actualiza nu masa utilizatorului - așa actualizeze tabelul Stocuri, unde ID-ul de utilizator se potrivește nu numai, ci Numele stoc se potrivește, de asemenea. Vei primi o anumită valoare. Și apoi, veți dori să ia această valoare și cu toate acestea se adaugă mai multe stocuri, ele doresc să cumpere de ea. Deci, nu vrei să orbește suprascrie această valoare. Dar puteți, de fapt, să ia că inițial valoare și doar actualiza. Puteți face ca un plus este egal, mai degrabă decât doar un egal la egal. Ceea ce este ceva, deși - dacă suntem gândit la acest lucru și ne dorim să fie la fel de robust ca posibil - ar trebui să facem înainte de a rula acest interogare de actualizare? Ei doresc să cumpere cinci ani de la Apple. Fiecare acțiune de la Apple este de 200 $. Audiența: Noi ar trebui să verificați mai întâi banii. JASON Hirschhorn: Ar trebui verifica bani în primul rând. Noi ar trebui să asigurați-vă că au destui bani. Ce fel de interogare putem executa la asigurați-vă că aveți suficient de bani? Audiența: Un alt Select. JASON Hirschhorn: A Select - vom selecta pe baza ID-ul de utilizator, pentru a obține valoarea lor de numerar. Face unele matematica rapid. Și dacă trece repliere, au suficient numerar. Atunci putem rula update nostru. Sau poate, dacă nu, vom trece apoi. Noi le da un avertisment. OK. Spun ca nu au o companie. Ei cumpara o noua companie. Ei cumpără Microsoft. Ce fel de întrebări nu vrem să facem, dacă doresc să cumpere Microsoft? Și ei nu dețin nici Microsoft. Nu Manu, oricine altcineva, oricine în afară de Marcus? Carlos - Audiența: A Select, pentru a se asigura ei au destui bani. JASON Hirschhorn: Sună bine. Audiența: Si apoi introduceți pe [] neauzit. JASON Hirschhorn: Exact, suntem de gând să doriți să introduceți în tabelul Stocuri. Și am de gând să doriți să o inserați. Putem introduce ID-ul de utilizator, numele a companiei, și cât de multe acțiuni ei doresc să cumpere. Care sunt unele alte operațiuni care sunt pagini sau funcționalitate esti va trebui să pună în aplicare în P-Set 7, că ar trebui să mergem peste? Audiența: De fapt, un fel de am o întrebare despre asta. Înainte de a afișa portofoliul, ar trebui să te verifică site-ul Yahoo pentru a Asigurați-vă că prețurile acțiunilor nu s-au schimbat? JASON Hirschhorn: Asta-i sunete cum ar fi o idee bună. Deci, ce Marcus spune este, OK, stoc Prețurile sunt în continuă schimbare. În stocurile pe care le dețin masă, nostru tabel numit Stocuri, am putea salva prețul a stocului au cumpărat de la. Dar asta nu pare că robust, deoarece prețul a stocului este merge în mod constant pentru a schimba. Deci, în fapt, probabil că nu au nevoie de pentru a salva prețul a stocului. Dar de fiecare dată când a afișa lor portofoliului, vă reîmprospăta sau actualiza prețul a stocului. Și dacă aveți - și aveți deja. Știu că am uitat tot în problema stabilește înapoi deja. Ați dat seama că am scris un cod pentru tine, care vă va permite pentru a obține prețul de un stoc, dat numele unei companii. Deci, da, că, probabil, sună un pic mai robust. Dar masa nu are neapărat nevoie de pentru a salva prețul a stocului. OK. Care sunt câteva alte funcționalități te trebuie să pună în aplicare această săptămână că putem vorbi despre? Vreau să vorbesc despre ele. Ce vrei să vorbim? Este, probabil, în acest spec.. Mi-ar defila doar în jos în partea de jos de spec. și de a pune pe mine primul cuvânt veți vedea că nu are sens. O altă funcționalitate - hai sa vorbim despre una. Vom începe acolo. Audiența: Înregistrarea istoriile. JASON Hirschhorn: Înregistrare istoria, o mare. Deci, ai de gând să trebuie să țină evidența de o istorie de tranzacții. Deci, doriți să urmăriți de fiecare data cand cumpara sau vinde un stoc. I-am cumpărat stoc mea. Tocmai am spus, probabil că are sens pentru a include o Select, pentru a obține lor sumă de bani și verificați din nou. Este, probabil, este inteligent, apoi să includă o inserați sau o actualizare, în funcție de indiferent dacă au sau nu dețin acest stoc. Dacă vrem, de asemenea, pentru a ține evidența o istorie, cum putem face asta? Asta merge în tabelul de Stocuri? Audiența: Nu. JASON Hirschhorn: Nu, probabil merge într-un tabel diferit. Pentru că spun de a cumpăra 10 acțiuni ale Apple. Atunci când cumpărați un alt 10 parts. Vrei tracta înregistrări separate. Acestea sunt două tranzacții separate. Deci avem o altă masă, o masă de istorie. Deci, din nou, ne-am cumpăra. Ne executa o Select, apoi un insert sau o actualizare. Ce facem în continuare? Care e următoarea interogare executam atunci când ne cumpărăm ceva? Vrem să țină evidența istoriei. Da. Audiența: Vrei pentru a ține evidența de tranzacții nu a reușit prea. JASON Hirschhorn: Ei bine, înainte de a ne spune ce tip de tranzacție, ceea ce nu vrem să - Ce tip de interogare, Carlos, ar fi ne permit să urmăriți de lucruri, în general? Ai patru presupuneri. Pe care o crezi? Audiența: Actualizare. JASON Hirschhorn: Nu actualiza. Care este a doua presupunere? Audiența: Selectarea. JASON Hirschhorn: Dacă doriți să păstrați pistă de ceva, probabil că doriți să-l scrie undeva sau salvați-l pentru mai târziu. Deci, dacă nu actualizați, apoi - Audiența: Introduceți-l. JASON Hirschhorn: Insert, acolo mergem. Da, așa că selectați cantitatea de bani au, sună grozav. Ei nu au suficient numerar. Această operațiune nu este de gând să lucreze. Nu, nu aveți nevoie pentru a ține evidența o tranzacție în cazul în care acesta nu funcționează. Sau puteți, dacă doriți să să le dea un timp de greu. Dar nu trebuie să. Apoi, introduce sau actualizare în masa lor Stocuri. Și acum, aveți altă masa. Ai masa istorie sau ce vrei să-i spui. Și în acest tabel, ai de gând pentru a insera un rând nou. Asta e, probabil, va au ID-ul utilizatorului. Este, probabil, va avea numele a stocului. Este, probabil, va avea un timp pe care au făcut-o. Și în acest caz, vă veți probabil doriți să introduceți prețul. Deoarece pentru o istorie, tu nu faci pasă ce prețul curent este. Îți pasă ce prețul este atunci când au cumpărat sau vândut ceva. Deci, se pare că, pentru a pune în aplicare de cumpărare implică în totalitate un număr de diferite Interogări SQL, dar sincer, nu cod atât de mult în ansamblu. OK. Și că are grijă de istorie. Să spunem, vrem să afișa istoria noastră. Am vorbit despre afișarea portofoliul nostru. Cum ne-ar afișa istoria noastră? Audiența: Probabil cronologic. JASON Hirschhorn: Probabil cronologic - ce interogare crezi că ne-ar folosi? Audiența: A select. JASON Hirschhorn: A select - selectați poate toate rândurile de la acea masă care se potrivesc cu ID-ul de utilizator și apoi a le afișa cronologic, sună bine. Avem nevoie pentru a scrie cod pentru a sorta prin această listă? Audiența: Nu, pentru că ți-a spus noi există un ascendent și lucru descendent. JASON Hirschhorn: Thing? Audienta: Da. JASON Hirschhorn: Da. OK, nu rândul său, în cod pentru mine, că sortează manual prin întrebările dumneavoastră, pentru a le sorta. Acest cod este deja dat. Puteți scrie o interogare de selectare care sortează lucrurile. Le sorta în prealabil și apoi să le imprimați afară. Se face mult mai mult sens pentru a face în felul acesta, decât un alt mod. Da. Audiența: Nu avem nevoie să le sorta în prealabil? Asta vrei să spui un fel le în baza de date? JASON Hirschhorn: Select interogare ei se întoarce la tine sortat. Deci, nu asta, mai degrabă decât doar să le aibă a reveni la tine într-o ordine aleatorie și apoi sortați-le singur. Da. Audiența: Există o cale să-l păstrați sortate în baza de date în sine, astfel încât nu aveți pentru a sorta de fiecare dată când - Audiența: Poți să-l introduceți sortate? JASON Hirschhorn: Întrebare - contează că lucrurile sunt sortate în baza de date? Audiența: Nu. JASON Hirschhorn: Ei bine, ele sunt sortate. Sunt sortate cronologic. Dar să presupunem că lucrurile sunt clasificate în funcție cronologic, de sus în jos. Avem un formular Google. Ori de câte ori cineva răspunde la Google nostru forma, ea doar se pune în partea de jos a tabelului. Contează că lucrurile sunt nu sortate cronologic? Audiența: Dacă nu este cronologică, Nu trebuie să-l rezolve de fiecare dată luați info afară. Dar în cazul în care este deja sortate, nu-i asa Nu trebuie să faci asta suplimentare Funcția de apel? JASON Hirschhorn: Deci asta e de fapt, un punct bun. Pentru noi, ca programatori, s-ar putea conta. Și ne-am putea dori să găsească o bază de date că nu se sorta lucrurile cronologic. Sau creat baza noastră de date, așa că păstrează lucrurile sortate după ID-ul de utilizator. Deci, în acest fel, să zicem, ne-am 1.000 de ID-uri de utilizator. Sau Facebook, avem milioane de oameni de ID-uri de utilizator. Noi nu vrem masa noastră să fie doar aleator sau baza de date pentru a fi aleatoare. Ar fi frumos dacă toate ID-urile de utilizator au fost sortate. Deci, atunci am putea rula căutări binare pe masa noastră și apoi pur și simplu găsi bucată specific. Deci da, în funcție de - dacă ne-am scară în sus, ne-ar putea dori pentru a găsi o bază de date că lucrurile păstrate sortate într-un alt mod, astfel încât aceste interogări ar lua mai puțin timp. Și nu am avea pentru a merge prin intermediul nostru întreaga bază de date în fiecare rând singur în o anumită masă. Dar nivelul lucrăm la, ne-am nu trebuie să vă faceți griji cu privire la păstrarea lucrurile sortate. Putem presupune că timpul necesar care interogare pentru a rula va fi neglijabilă, având în vedere ce avem de a face cu. Dar, da, idee mare - așa cum ne-am scară în sus, s-ar putea face sens pentru a proiecta nostru baza de date într-un pic de un mod diferit. Un ultim lucru de proiectare de baze de date vreau să menționeze, de asemenea, pentru că vă va să fie clasificate, sau marcat mai degrabă, pe proiectarea bazei de date. Am vorbit despre asta. Cash este unic pentru fiecare utilizator. Deci, v-ați luat un tabel numit de numerar care are ID-ul de utilizator și valoarea lor de numerar și apoi un tabel numit Utilizatorii care are utilizatorul lor ID-ul și numele de utilizator. Aceste tabele harta pe fiecare altă unu-la-unu. Este, probabil, are sens pentru le să fie un tabel. Așa că haideți să presupunem că aveți un utilizator tabel care ține evidența nume de utilizator și bani. Acum aveți un tabel care are stocurile de o persoană deține. Și un individ s-ar putea proprii mai mult de un stoc. Astfel încât acestea nu harta pe fiecare unu-la-unu altul. Ea nu are sens pentru a avea un gigant tabel care are 30 de înregistrări care tot repeta un nume de utilizator, că toate repeta o parolă, pe care toate repeta un număr de bani. Dar fiecare are poate un stoc diferit nume sau un preț de vînzare diferit. Ea nu are sens pentru a avea că multe înregistrări mari. Fii inteligent despre atunci când vă creați aceste baze de date, astfel încât să nu fac ceva prostie de genul asta, repetând o mulțime de informații inutile. OK. Avem două minute. Oamenii din afara sunt încântați să se alăture noi sau probabil, probabil, începe propria lor de clasă. Are cineva intrebari înainte de a termina? OK, aceasta a fost într-adevăr un vârtej de vânt prin tot. Îmi cer scuze că a trebuit să fie atât de rapid și că nu am putut fi la fel de hands-on această săptămână, așa cum am fi făcut a plăcut să fi fost. Dar, dacă aveți întrebări cu privire la orice ne-am dus peste sau nimic în această problemă set - presupunând l-ai citit și pus într-un efort de bună-credință - nu ezitați să mi e-mail sau contactati-ma. Sunt mai mult decât fericit să lucreze prin intermediul codul cu tine sau răspunde la orice întrebările pe care le aveți. Țineți minte că, în această săptămână, o mulțime de timp va fi petrecut de învățare nou sintaxă și încercarea de a înțelege cum să scrie interogări SQL sau PHP funcții sau de a face cu un cadru MVC. O mulțime de timp în această săptămână, probabil, nu va încerca să dau seama de logica nebun că suntem vă cer să faci. O mulțime de acesta ne-am dus peste este relativ simplu. Deci, asta nu înseamnă că așteaptă până în ultimul minut. Dar aceasta nu înseamnă a ajusta modul în care să-ți faci de lucru în consecință, pentru a se asigura esti înțelegerea și învățarea sintaxei. Deci nu ești, toate dintr-o dată, știind exact ceea ce vrei sa faci, dar cu nici o idee cum să exact scrie. OK, ne vedem săptămâna viitoare.