JASON HIRSCHHORN: Welkom iedereen tot week acht. We hebben een spannende week voor de boeg. Jullie hebben dook afgelopen paar lezingen tot PHP, SQL, HTML, CSS, dus vier nieuwe talen die gaan tot het nemen van de rest van deze cursus. We leert ook een paar andere talen voor het einde cursus. Maar toch, onnodig te zeggen, dit is een zeer spannende tijd in CS50, nu u knie hebben C, ogenschijnlijk, en zijn over te gaan tot de programmering voor websites. Dus deze week, gaan we op gaan een wervelwind tour door de vier talen die ik net noemde, HTML, CSS, PHP en SQL. En hopelijk zullen we tal van vertrekken tijd aan het eind van de sectie te praten over deze week de P set en antwoord alle vragen die u al hebt. Elke week, op dezelfde lijst van middelen voor u, om u te helpen met de week probleem te stellen en gaan over het materiaal - maar deze week vooral deze webgebaseerde probleem sets zijn er tal van andere middelen die daar dat je zal waarschijnlijk vinden ongelooflijk behulpzaam. Ik heb ze hier. Ik zal u deze e-mail na sectie, en deze ook online zijn. Maar in het bijzonder, er zijn genoeg van grote middelen die er zijn. Er zijn ook enkele niet zo groot degenen, dus op zijn hoede voor deze. Maar op deze dia, Ik heb vier goede middelen, een voor elk van de talen die je werkt met deze week - een verwijzing blad voor HTML, een verwijzing blad voor CSS. Dit hier is de PHP handleiding. Dus in plaats van te typen man en vervolgens een PHP commando, dit is waar je zou gaan te zoeken van de functie prototype en voorbeelden en ook een aantal tips en trucs voor het gebruik van PHP functies. U vindt deze site vaak gebruikt, dus ik moedig u aan om te worden vertrouwd mee. Het kan een beetje technisch, maar het biedt ook een ton van de middelen en Voorbeelden voor alle functies en zelfs andere, zoals het gebruik van arrays of verschillende variabelen. Deze site is zeer nuttig voor PHP. En dan, voor SQL, als je dook in deze probleem set week, weet je dat we met behulp van een database. En we toegang tot die database via een relatief mooie gebruikersinterface. Of dat is een manier om toegang te krijgen die database. De gebruikersinterface is genoemd phpMyAdmin. Er is een SQL-tab, die we zullen kijken naar later vandaag. En u kunt typen in hun steekproef SQL queries, om dingen te doen in uw database en voer deze queries. En als ze juist zijn, het zal zeggen, deze is correct. Als ze verkeerd, het zal zeg, het is ingevuld. Dat is een geweldige plek om te oefenen uw SQL-query's voor het schrijven ze in uw code, om ervoor te zorgen dat u hebben het formaat correct. Ten slotte is een andere website hier. Dit is de website waar u kunt gaan kijken om te zorgen dat uw maken HTML code geldig is. Dus voordat u uw problemen te stellen deze week, zorg ervoor dat alle van uw HTML geldig is. Vorige week had je valgrind uitvoeren, om zorg ervoor dat je geen geheugen lekken gehad. Deze week, moet u zeker maken allemaal van uw code geldig is HTML5. Als het niet geldig is HTML5, je bent gaat krijgen punten uit. Dus zorg ervoor dat - gewoon omdat het werkt niet bedoel het is volledig geldig. Doe je code via deze website voordat u het in Nogmaals, hier is de website. Als u feedback voor mij, we hebben een paar meer secties links, en ik wil altijd doen wat ik kan om u allen de beste sectie ervaring mogelijk. Dus laat het me weten als er iets is dat ik kan verbeteren of als er dingen die je ziet, dat ik beter zou kunnen doen. Dank je wel, Avi. Zet het op de website. Dit was de fiets die ik had toen ik was, laten we zeggen, vier thuis. Het is een Teenage Mutant Ninja Turtle fietsen, voor het geval je niet kan vertellen, want het is een beetje wazig. Je kunt het nu krijgen bij ToysRUs voor, denk ik, ongeveer $ 100. Maar het kenmerk van deze fiets die ik wil je aandacht te besteden aan zijn deze hier. Dit zijn de zijwieltjes. Tot nu toe heb je handheld geweest door C. En we hebben een lang geduurd tijd, twee maanden plus, om te gaan door C. Voor deze komende paar talen, we gaan niet veel tijd doorbrengen. De zijwieltjes gaan eraf. En we gaan om te duiken in deze talen snel en bewegen door ze snel, wat niet wil zeggen dat we gaan gewoon je zwembad te verlaten die er met geen manier om te steunen uzelf of erachter te komen hoe deze talen werken. Ik liet je een lijst van middelen om u te helpen. Maar houd in gedachten dat PHP is ongelooflijk vergelijkbaar met C. We gaan over het vandaag nog en een deel van de verschillen. Maar voor het grootste deel, er zijn voor lussen. Er zijn als de omstandigheden. Wanneer u een probleem op te lossen, je gaat gebruiken een combinatie van deze. Het is zeer vergelijkbaar. De logica moet zeer vergelijkbaar zijn wat je hebt gedaan in het verleden. Wat is echt nieuw deze week is het syntaxis en hoe je jezelf te uiten. En je wilt een te schrijven voor loop, maar het ziet er misschien een beetje anders. Of wilt u een array te maken, maar het ziet er misschien een beetje anders. Dus hou in gedachten dat, vooruit, de logica is zeer vergelijkbaar met wat je hebt gedaan in het verleden. Maar je bent nu gaat worden geconfronteerd veel nieuwe syntax. En we zijn niet van plan om u door alle elementen van de syntaxis. Dus het is echt aan jou om erachter te komen, online of via bereiken op Bespreek of e-mailen mij of praten met elkaar, hoe ze dingen te schrijven in PHP en hoe om SQL queries te schrijven en hoe HTML en CSS te gebruiken. Maar gewoon zo weet je, het is niet dat we proberen om je daar te gooien nogmaals om de haaien te zwemmen. Dit is wat je waarschijnlijk zal doen met je afstudeerproject, als u kiest voor een andere taal, zoals IOS en Objective C, of ​​als u besluit om te beginnen programmering in de toekomst en duiken in andere talen, zoals Python of Ruby. Vaak is de logica vergelijkbaar in al deze talen, en de syntax is wat anders. En het is aan u, als de programmeur, te gaan gebruiken het web middelen beschikbaar om u en figuur hoe uit te drukken wat je weet hoe uitdrukken in C, in een andere taal. Dus dit is een goede gewoonte, zowel voor uw afstudeerproject, en nogmaals, voor wat je zult waarschijnlijk doen nadat u CS50 vertrekken. Voordat we verder gaan, doet iedereen Voor vragen over wat Ik heb tot nu toe gedaan? Geweldig. Laten we verder gaan. Ten eerste, we gaan even praten over het chmod commando. Dit doen we aan de start van uw problemen te stellen. Een van de eerste aanwijzingen voor u, nadat u downloaden van de verdeelsleutel, is het veranderen van de permissies van de bestanden en mappen die u ontvangt. Kan iemand wagen een gok of weet waarom het belangrijk is om te veranderen de machtigingen van bepaalde bestanden en mappen op uw computer? Avi - PUBLIEK: Toen niemand behalve je kunt zien wat je doet? JASON HIRSCHHORN: OK. Dus als we iets willen op de vragen web en u machtigingen hebt ingesteld dat alleen kun je iets zien, dan niemand anders kan zien wat je hebt gemaakt. Wat anders? Yeah. PUBLIEK: Voorkom iemand anders dat je niet willen iets zien, van zien van iets. JASON HIRSCHHORN: Dat is ook waar. Er is waarschijnlijk een code die je schrijft, dat je niet wil dat mensen zien. Je bent waarschijnlijk OK met mensen zien HTML en uw webbrowser. Maar uw PHP, een back-end code, veel de logica aan uw code, misschien de dingen die een deel van uw wachtwoorden voor de database, u niet wil dat mensen zien dat type informatie. Dus het is belangrijk dat elk bestand en directory creëren we machtigingen heeft van toepassing zijn op of we willen mensen om die types van bestanden te zien en directories en in staat zijn om ze te openen en mogelijk hen zelfs veranderen. Dus zijn er drie types machtigingen. Er is een lees toestemming, welke middelen kunt u een bestand of een lijst van de te lezen inhoud van de directory. Er is de schrijfrechten, die betekent dat u een bestand of verandering wijzigen een map en vervolgens de uit te voeren toestemming, wat betekent dat je kunt een bestand uit te voeren of liever, je kan bewegen in een directory. Dus CD iets, als je de toestemming om het uit te voeren, kunt u naar in die map. Dit is een kort voorbeeld. Nogmaals, je hebt dan dit gegaan het probleem vastgesteld. Maar ik heb een map aan te maken met de opdracht mkdir. Ik de permissies te veranderen. Deze twee lijnen eigenlijk doen precies hetzelfde. Het is om te illustreren dat de syntaxis voor wijzigen van machtigingen, of je doet de a + x of 711, die dezelfde zijn. We kijken neer op deze mooie tafel. We zien dat er gebruiker permissies eerste. Dat ben jij, het individu, en uw server, mogelijk. En dan is er nog de groep en anderen. De verschillen tussen deze beide zijn relatief onbelangrijk. Dus over het algemeen, zullen we een hoop te gooien die samen. Maar in wezen, als we een bestand genoemd omvat dat we willen zijn in staat om onszelf te bewerken en dat we willen anderen kunnen voeren, het is de toestemming 711. En we zien dat beneden Hier in deze tabel. We hebben een lees-, schrijf-en uit te voeren. Voor ieder van ons, we willen staat zijn om die te doen. Groep en anderen, we willen alleen ze kunnen voeren. De manier waarop we dat vertalen een aantal toestemming is door middel van binaire. Dus als we drie degenen, dat is een 1 in de kolom van de eenheden, een 1 in de tweeën kolom, een kolom 1 de fours. Dat is 7 daar. En deze toestemming is 1. Deze toelating is 1. Dus als 711 is gelijk geven onszelf lezen, schrijven en uitvoeren, en iedereen privileges uit te voeren. Deze lijn hier, wij over het algemeen zal lezen en schrijven toen we maak een directory. Dus deze lijn hier voegt alleen maar uit te voeren privileges voor iedereen. Zodat verwant zou zijn, in aanvulling op wat we hebben, toevoegen van 1, 1, 1 voor iedereen. Overwegende dat dit, het is niet nodig toevoegen lezen en schrijven. Maar als je gaat om de nummers te gebruiken, je kunt niet zomaar iets toevoegen. Je worden overschreven toestemming waren daar en ze uit te voeren met de nieuwe nummer geven. Dat was vrij snel. Heeft iemand enig vragen over het wijzigen van machtigingen? OK. Als ik een PHP-bestand, welke permissies wil ik het hebben? Dit is in het probleem set spec. Dus je kunt kijken naar de spec en lees me dan is het antwoord. PUBLIEK: U wilt dat de gebruiker hebben lees-schrijf rechten. En u wilt iedereen anders niets hebben. JASON HIRSCHHORN: En wat getallen is dat? Publiek: 600. JASON HIRSCHHORN: 600. Dus chmod 600 - wanneer u afdrukt een PHP-bestand, chmod het naar 600. OK. Ik heb een directory. Iemand naast Jeff, Ik heb een map. Welke rechten wil ik te geven aan die map - ook het probleem spec ingesteld, rechts onder dit antwoord of het vorige antwoord? Mogelijk ook op de glijbaan - Marcus. PUBLIEK: Voor de map, het is 711. JASON HIRSCHHORN: 711 - dus een map die u wilt geven 711. U wilt in staat zijn om die map te lezen, veranderen directories, verhuizen naar die map. En je wilt iedereen in staat om te navigeren binnen die map, maar niet noodzakelijkerwijs de inhoud te wijzigen. Hoe zit het met een niet-PHP-bestand, zeggen, een JavaScript-bestand? Welke rechten willen we om dat type bestand te geven? Publiek: 644. JASON HIRSCHHORN: 644 - Daarom willen we het 644 geven? PUBLIEK: Om andere mensen te laten lezen. En u lezen of schrijven. JASON HIRSCHHORN: Dus rechts, iedereen anders kan lezen dat JavaScript bestand. En je kan dat veranderen, naast op de mogelijkheid om het te lezen. Dus een van de meest voorkomende bugs mensen hebben dit probleem stellen en hun afstudeerproject, als het een web-based finale project is, zullen ze niet hebben ingesteld de juiste machtigingen. En zij zullen niet in staat zijn naar hun website te zien. Of een bepaald deel van hun website. Dus zorg ervoor dat u de instelling toestemmingen correct. Niet gewoon aannemen dat het zal automatisch het voor u doen. OK. Dat was een klein ding dat we brachten een goede hoeveelheid tijd op, zodat kunnen we het nagelen. Laten we overgaan naar HTML. En nogmaals, voor deze volgende vier thema's, we gaan om te gaan door hen relatief snel. Dus aarzel niet om me te stoppen op elk gewenst tijd, als je vragen hebt, of ze zijn gerelateerd aan wat ik te dekken of iets van lezing of zelfs van de opdracht gesteld. Stop me wanneer u maar wilt. Als we bij het einde, zullen we gewoon start gaan over het probleem set. Dus HTML staat voor HyperText Markup Language. Het is geen programmeertaal. Alles wat het doet is de structuur van uw inhoud en ook een aantal metadata. Dus bijvoorbeeld, vermoedelijk veel je hebt Facebook eerder gebruikt. En je kunt ook links in, of u kan een link als je status. En dan zul je die link merken heeft altijd een leuke foto aan het en wat tekst. Algemeen, dat enige metadata voor een webpagina. En het is Facebook-specifieke metadata. En dan, als Facebook leest dat pagina en het invoegen van die link, het zoekt de metadata, zodat weet wat foto om te laten zien, wat titel om te laten zien, en wat abstracte tekst weer te geven. Dus we kunnen metadata met onze webpagina met behulp van HTML. En het helpt ons ook structuur de inhoud, algemeen, welke we willen gaan waar. Alles in HTML is een element. En elementen hier - deze CS50, tekst is het element. En het heeft een aantal tags. Het heeft dit een tag. En we merken dat er een een op de begin en dan een schuine streep een, dus sluiten van een label aan het eind. Soms, is er geen open tag en een close-tag. Er is maar een ding. We zullen daar een voorbeeld van te zien op de volgende dia. Dus je hoeft niet een open nodig en een close-tag. Maar voor dit, zijn wij bekisten dit CS50 element in een anchor tag. En in wezen, deze tags vertellen de browser wat te doen met het bijzondere element. Dus nogmaals, CS50 is de tekst we zullen gaan zien. En het gaat worden een soort anker. Anker wordt hoofdzakelijk gebruikt voor links naar iets. In het bijzonder, als je kunt al aangeeft, is dit een koppelen aan de CS50 homepage. Het volgende deel van het label - of in het algemeen, een deel van tags attributen. En wij zien hier, dat de een-tag heeft een toeschrijven, dit href attribuut. En ze een bepaalde tag te wijzigen. In feite, als je naar een van de websites of de referenties die ik je gaf vóór of zoek de een tag online, je zult merken dat er een ton van mogelijke attributen. Dit is waarschijnlijk een de meest voorkomende. Dit vertelt me ​​om een ​​te creëren link naar de specifieke website. En attributen algemeen worden gegeven, zo niet uitsluitend gegeven, in key-value pairs. Dus hier is de sleutel, href. En de waarde is dit recht hier. En dat zal later van pas komen, wanneer we beginnen met behulp van enkele bibliotheken ons helpen code in JavaScript of schrijf HTML-inhoud. We worden vaak gaan worden - net als wij zou scala beugel 0 en dat doen zou ons enige waarde. In de toekomst zullen we veel moeten doen dingen als iets beugel href. En dat zal ons de waarde van het geven href, of als we willen de href updaten toets en geef het een bepaalde waarde. Dus net als met arrays waar we toets 0 of de toets 1 of toets 2 of zelfs met een hash table, nou, met je hash tables als goed, je had waarschijnlijk - het was een array, dus sleutel 0, toets 1, toets 2. Die index is er, we kunnen denk dat als een sleutel. En de waarde is wat werd daar opgeslagen. Al deze attributen zijn key-value pairs. En dat is belangrijk voor het veranderen zijn hen of bij te werken of u ze later op. Tot slot, heb je deze structuur gezien , maar dit is de meest fundamentele structuur van de HTML-pagina. Op de top, wij vertellen u dat Dit is in feite HTML. En dan hebben we een open HTML tag en een nauwe HTML-tag. Dus alles binnen van Dit is de HTML. We zien het hoofd en het lichaam. Het hoofd van uw document omvat in het algemeen wat? Elke gissingen voor wat je zet in het hoofd? PUBLIEK: Je zet de titel en stijl. JASON HIRSCHHORN: De titel. Dat was een grote gok. Ik kan u hebt getipt om de. Wat zijn een aantal andere dingen? We hebben een van hen die zou kunnen gaan in het hoofd. PUBLIEK: Hij zei, stijlen. JASON HIRSCHHORN: Stijlen - dus als u wilt koppelen in een webbrowser of zelfs een CSS, waarin je praat over als je praat over stijlen. Een ander bestand, dat u wilt koppelen in een buiten-bestand, zal dat waarschijnlijk gaat in het hoofd. Wat anders? We hebben het al een paar dia's geleden een van de dingen die HTML voor u kan doen. Zij kan bieden - begint met een M - PUBLIEK: Metadata. JASON HIRSCHHORN: Metadata - dus veel van de metadata zal gaan in het hoofd, want dat zal niet per se nodig om een ​​deel van het lichaam van uw code. Dat is over het algemeen - het lichaam is de inhoud, wat iemand ziet. En dus gaf ik gewoon weg het antwoord naar mijn volgende vraag. Maar in het lichaam is meestal de inhoud dat gaat worden getoond op de webpagina. Zoals we zullen zien, ingewikkelde websites de neiging om te vermengen of te wijzigen op wat zetten ze in het hoofd en het lichaam. Maar over het algemeen, de kop bevat dingen dat de gebruiker niet zal op het scherm ziet. Het verbindt in andere bestanden en geeft metadata. Overwegende dat het lichaam bevat alles de gebruiker gaat zien. Enig idee wat deze tag p betekent? PUBLIEK: Paragraaf? PUBLIEK: Print. PUBLIEK: Betekent niet druk. PUBLIEK: Betekent paragraaf? JASON HIRSCHHORN: Paragraaf - dus dit is een paragraaf. En deze tag p, ik had net getypt dit op het scherm en omvatte een regeleinde aan het einde ervan. Iemand weet hoe te nemen een nieuwe regel? PUBLIEK: pr - JASON HIRSCHHORN: pr - PUBLIEK: Slash pr? JASON HIRSCHHORN: pr slash staat voor kabelbreuk. Maar de leden hebben specifieke formatteren. En we zullen tot opmaak van een te krijgen ten tweede, als we praten over CSS. Maar alles binnen deze tags p zullen sommige standaard opmaak hebben ermee verbonden zijn, waarschijnlijk een tussenruimte tussen verschillende paragrafen. En het zal een manier om te differentiëren blokken code. Elke andere tags - wat zijn andere tags die je gezien hebt? JASON HIRSCHHORN: h1 via h6. h1 via h6, en wat is dat? Publiek: Het zal duiden hoe groot en vet de letters zijn. JASON HIRSCHHORN: Rechts, het staat voor header. En dus header1 is een grote kop. Het zal waarschijnlijk standaard, worden vet, een groot lettertype, waarschijnlijk gericht op het scherm, helemaal naar beneden met h6, dat is een kleiner lettertype, minder benadrukt. Natuurlijk kun je, in je CSS-bestand of ergens in de code - die, nogmaals, we krijgen dat in een tweede - veranderen wat het standaard gedrag van een H1 tag is. Maar houd in gedachten dat Chrome, Safari, Firefox, Internet Explorer hebben allemaal Standaard zoekt veel deze standaard tags. U kunt, weer, altijd wijzigen hoe ze eruit zien. Iedere andere tags die iedereen heeft gezien? Yeah - PUBLIEK: Een div website. JASON HIRSCHHORN: een div-tag - div-tag heeft geen ingebouwde formaat, per zodanig, dat wordt gebruikt voor blokkeren verschillende soorten code. Elke andere tags? Ja. PUBLIEK: li - JASON HIRSCHHORN: li - wat is li voor? PUBLIEK: List. PUBLIEK: Lijst JASON HIRSCHHORN: li voor lijst elementen. Er zijn twee soorten lijsten. Wat zijn de twee types? PUBLIEK: Bestelde en ongeordende. JASON HIRSCHHORN: Besteld en ongeordende - dus ul stands voor ongeordende lijst. Dat is als je een kogel wijzen, een lijst met opsommingstekens. Een geordende lijst is een genummerde lijst. En dus zult u een open ul-tag te doen en dan ton van de lijst elementen en vervolgens sluit de ul-tag. en dat zal maak een ongeordende lijst. We gaan een aantal voorbeelden te zien van HTML in een beetje. Maar voor die tijd wil ik CSS te krijgen. En CSS staat voor Cascading Style Sheets. En dit is zeer nauw verwant naar HTML maar iets anders. Dit helpt u de volledige inhoud te formatteren dat HTML structuren. Dus in CSS, we in het algemeen niet willen stylen elke koptekst of elke enkel beeld of elke enkele paragraaf. We willen een aantal elementen te stylen of misschien een specifiek element. En de manier waarop stylen we een specifiek element is om het een ID. Dus dit is een attribuut. Het heeft een sleutel en een waarde. ID is de sleutel. Logo is de waarde. Ik pakte logo willekeurig. En als je iets geven een ID, algemeen, dat mag alleen worden gegeven een element. En dan, in je stylesheet kunt u stijl dat element, maar je wilt kijken. Wilt u een aantal van de stijl elementen, misschien is het een bepaalde klasse headers, slechts een deel van uw headers. Misschien is het een header en een afbeelding en een paragraaf u allen wilt worden gecentreerd. Dan kunt u deze groepen geven elementen al een klasse. En je kunt de klas geven specifieke stijlen. Dus een ID en een klasse zijn twee manieren om braakt u een code, zodat u kunt helpen meer specifiek in wat je stijl. Er zijn drie manieren om stijl. De eerste is, met dit attribuut stijl. Dus je ziet, de stijl sleutel is stijl. De stijl waarde daadwerkelijk een andere belangrijke waarde lijst. In dit geval koos ik een sleutel, text-align. En ik zei, centrum. Je zou jezelf de vraag op dit opzicht, hoe wist ik text-align. Wat betekent dat eigenlijk doen? Dat is een grote vraag te stellen, en we gaan er in een seconde. Dus dat is een manier om iets te stylen geef het de stijl attribuut. Een andere manier om iets te stijl is - dit is Akshar eerder noemde. U kunt stijl tags en we deze in het hoofd van uw HTML-document. Dus zeg je in feite, de inhoud binnen hier is wat inhoud stijl. En in welke vorm dat is het wat je Wil stijl en dan, de binnenkant van accolades, de belangrijkste waarde paar attributen die u wilt geven aan dat type element. Tenslotte, en dit is de meest voorkomende manier. En dit is de manier waarop we doe het in p set 7. Het is een externe style sheet. Dus je hebt een. Css-bestand. En de binnenkant van het, zie je veel van dingen die er zo uitzien, de naam van een soort element of een ID of een klasse en dan, de binnenkant van krullend bretels, een lijst van de belangrijkste waarde paren. Natuurlijk, als u een extern maken bestand, gaat u nodig om het te omvatten - scherpe omvatten, dat zou zijn de C analogie - in uw HTML-bestand. Dus je moet deze ook code in uw HTML-bestand. Omdat dit de naam van het bestand en in de veronderstelling dat het in dezelfde directory. OK. Dat was een stuk. En we gaan nu om te ademen en te kijken bij sommige echte, levende website en verken dit meer. Maar voordat we dat doen, doet niemand nog vragen? Dus als je wilt om dit te doen, samen met me, kunnen we naar het apparaat. En ik koos de CS50 startpagina. U kunt dit doen met een website. Maar waarom beginnen we niet met de CS50 homepage? Laten we vernieuwen. Ik heb eigenlijk beveel u doen dit samen met mij, want wat we nu gaan doen gaat worden ontzettend handig voor u, niet alleen in P-Set 7, maar in P-Set 8 ook. Yeah. PUBLIEK: Is er een manier om een ​​reactie te doen in HTML, zonder het gebruik van PHP? JASON HIRSCHHORN: Ja, dat kan opmerkingen maken in HTML. Publiek: Wat is de syntax? PUBLIEK: Uitroepteken dash dash. Publiek: OK. JASON HIRSCHHORN: Ja. Dat is de syntax. Je kunt te maken in HTML. Je kunt maken in PHP. Zoals u zult zien, reageer in HTML zal nog opdagen, wanneer we kijken naar de HTML broncode van een bepaalde site. Dus dit cs50.net. Als u met de rechtermuisknop klikt in de meeste moderne browsers op vrijwel elke pagina die u bekijkt de pagina bron. Dus laten we dat doen op CS50. En kijk, we zien een gigantische ding. CS50 ziet er eigenlijk best aardig. Veel websites zullen niet kijk dit leuk. Als je naar de startpagina van Google en open het. Het zal dit niet leuk uitzien. Maar je merkt dat aan de top - dit is wat klein. Laten we dit groter. OK. Op de top, DOCTYPE HTML, dat is bekend. Dan zien we de open HTML-tag en het hoofd, hier, alle van deze meta-tags. En u kunt dit og zien, niet ga nu ingaan. Maar ik ben bijna zeker op dat die zou zijn Facebook. Dat is eigenlijk het Facebook. Ik denk dat staat voor open grafiek. Dus onthoud, ik was het vermelden er Faceboook-specifieke metadata kunt u geven aan een pagina. Dat is wat is hier. Dus als je deze pagina een link op Facebook, het beeld dat het gaat om te laten zien is dit beeld hier. En je eigenlijk zien dat het Facebook, want het is de Facebook-afbeelding. Maar goed, we krijgen opzij. Dus hebben we een aantal metadata-tags hier. We zien de CS50 titel. En nogmaals, de titel is wat er hier in het tabblad van de browser. We zien dit is het koppelen van in, hier, een extern JavaScript-bestand. We hebben nog niet gesproken over JavaScript veel, maar volgende week - en zeker als je doet een web-based probleem set, u zal worden met behulp van JavaScript. Dit is hoe je een link in externe JavaScript-bestanden. We zien hier, ten slotte, de CSS style sheet, dat documenteert deze stijlen van deze code. Laten we daadwerkelijk open die en kijk heel snel. Dit ziet er gek. Er is geen manier waarop ik zou zijn in staat om door te lezen. Dus je kunt eigenlijk wel, als je rekening een blik, kunt u soort zien dat er zijn - daar gaan we. Dat lijkt op iets wat we hebben gezien vóór, achtergrondkleur, het instellen van het gelijk aan wat rood-groen-blauw-waarde. Dit spul soort mag niet lijken dat buitenlandse, hoewel, wanneer voorgesteld als dit, kan het zijn een beetje overweldigend. We gaan niet om te kijken naar dit CSS-bestand of veel tijd aan te besteden, omdat Het is, nogmaals, erg moeilijk om te lezen. Laten we teruggaan naar dit HTML-pagina voor CS50. En laten we naar beneden scrollen om het lichaam. En binnen zien we deze div-tag. We zien een header hier. We zien de anchor tag. En deze lijst element is gegeven een specifieke klasse. En we zien dat klasse herhaald over en weer. Daar ben je Curtis. Er is de commentaar in HTML5. En zoals u merkt, kunnen we nog zien het, maar het is niet komen opdagen. Het is eigenlijk heel interessant. Het lijkt erop dat deze scores lijst element wordt gereageerd buiten. Als we naar deze pagina, nogmaals, het nog steeds lijkt er, zo interessant. Oh, dat is waarom, want van deze volgende regel. Wat hebben we van belang? De rest van dit is meer verwarrend, in omgaan met deze rechter helft van het website, die een beetje wat complexer. Dus dit is wat sommige HTML gaat uitzien. Voor mij wel, dit is een beetje overweldigend, en dit niet help me dat veel. Echter, er is iets dat doet, in feite, help me een hoop. En dat is wat ik gebruik wanneer ik proberen te achterhalen hoe iets lijkt de manier waarop het doet, of hoe kan Ik wijzigingen aanbrengen in mijn website. En dat is een Developer Tool die is ingebouwd in Chrome. Dus als je naar deze drie bars recht hier en ga naar gereedschap op Developer Tools, een klein venster zal pop-up aan de onderkant van de pagina. En in het bijzonder chroom, aangezien het prachtig, zal dit venster formatteren en neem de HTML en maken het kijken veel mooier voor je. Dus nu is het eigenlijk een aantal opvouwbare HTML die je kunt verkennen te inspecteren de elementen van de pagina. Als we willen kijken naar het lichaam, het eigenlijk hoogtepunten. Als u naar meer dan een deel van de HTML, in dit venster, zal het gedeelte markeren het spreekt over in het grote raam. Dus laat me opnieuw proberen en blazen dit een beetje. OK. Dus laten we het lichaam te openen. En ik ben muis over deze links div. En je merkt dat het benadrukken van Deze linker helft van het scherm. Dus laten we op dat en uit te breiden dat. Binnenkant van het, het ziet eruit als er zijn twee divs. Er is deze eerste div. Ik zie niet in dat gemarkeerd. Ik weet het niet, maar het lijkt erop dat deze tweede, links binnen, is de inhoud aan de linkerkant van het scherm. Dan is er dit ding heet header. Het lijkt erop dat dat is het benadrukken de CS50 deel. Als we openen dat op, dan zien we dat het niets meer dan header 1. Het is gegeven een ID, en het is gezien de tekst CS50. Dus nogmaals, dat te bekijken via deze console of via de developer tools paneel aan de onderkant van het scherm merken het verkennen van deze website, hopelijk, een veel minder intimiderend en een stuk toegankelijker. Het geeft ons ook te begrijpen dat deze website, ziet er al heel mooi en aardig, is niet zo heel veel meer dan wat je gaat worden doen op Probleemverzameling 7. En dit is helemaal binnen uw vermogen om te creëren. Als we willen - de andere koele ding over het gebruik van deze tools is, als je rechts klikt op de titel, kunt u de HTML bewerken. Dus laten we het noemen Jason. En nu zult u merken ik ben veranderd de HTML op deze pagina. Natuurlijk heb ik niet veranderd permanent. Als ik refresh mijn browser, dan zou het ga terug naar de oorspronkelijke HTML. Maar soms wil ik mijn code debuggen, en ik wil niet kijken gewoon mijn gedit raam en proberen te begrijpen wat er gaande is. Ik wil zien wat er zal live gebeuren. Dus ik zal code bewerken als dit en krijgen het zoals ik het wil kijken. En dan zal ik de veranderingen in mijn code. En ik vind dat het een stuk makkelijker als je de dingen kunt doen ogenblikkelijk, als dat. Zeg, nogmaals, we willen een ander merk kans, omdat we verkennen met HTML en CSS op dit moment. Ik kan de HTML nu bewerken. En ik ga een link. Dus ik ga naar huis CS50's wijzigen pagina, zo zal het verwijzen naar - laten we zeggen - mijn homepage. Wat is de naam, als iemand herinnert, of wat is het kenmerk ik wil geven een anker tabblad wanneer ik wil het ergens anders te koppelen? PUBLIEK: href? JASON HIRSCHHORN: href - Dus nu, zie je daar die is een onderstreping onder Jason. Dat komt omdat Chrome, standaard, geeft ankers een onderstreping. U heeft waarschijnlijk gezien dat voordat wanneer je weg bent naar een webpagina. Dingen die links zijn onderstreept en in blauw. De standaardstijl voor een link is algemeen onderstrepen en zet het in het blauw. Als ik hou niet van dat, Ik kan dat veranderen. En we zullen het in een tweede veranderen. Maar nu, ook merken dat, als ik zweven meer dan dit, in de linkerbenedenhoek van het scherm, rechts boven het woord elementen is de link die ik gaf. Dus als ik klik op deze - en we kunnen klik met de rechtermuisknop op deze, opent een nieuw tabblad. Dit is niet echt mijn homepage. Het is gewoon mijn naam. Daar ga je. We hebben nu veranderen in een link. Laten we een aantal CSS ook. Het mooie - en ik ga maken dit een beetje kleiner - over deze console is, dat gek CSS sheet we eerder zagen, dat was echt moeilijk te ontleden, is nu prachtig aangelegd voor ons op de linkerkant van dit paneel. Dus we kunnen kijken. En als we breiden dit tabblad stijlen, we kan alle verschillende stijlen te zien die zijn geassocieerd met, in dit geval, dit element, dit linkelement. Als we dat doen op het tabblad verbinding stijlen, dat net toont ons, niet waar alles komt, maar in wezen al deze stijlen die actief zijn op dit bijzondere element nu. En laten we zeggen, we willen om het te veranderen een beetje. Dus dit is al de stijlen die die op dit element. Zeggen dat we willen veranderen, omdat we willen zien hoe iets eruit ziet. En we zijn gewoon spelen rond op dit moment. Of we iets willen testen, voordat te schrijven in code en duwen het en waardoor het leven. We kunnen naar het tabblad stijlen. En in het eerste vak het zegt, element.style. En hier kunt u invoegen, kun je iets toevoegen. Dus ik wil - laten we naar mijn verbinding en de stelt u de achtergrondkleur. En het eigenlijk autofills het voor u, alle mogelijke eigenschappen. Achtergrondkleur, en ik wil om dat blauw te maken. Blus is geen woord. Blue is een woord. Zag ik het naar boven komen? Oh, is dat omdat het in het href? OK. Dus ik denk niet elke verandering hier te zien. En dat is omdat, als we wijzen op de koppeling, zult u merken dat de link is eigenlijk niet het beheersen van de eigenschappen van dit element. Het is eigenlijk, als we de koppeling te openen, deze header hier dat is het beheersen van hoe het eruit ziet. Dus als ik wil de achtergrond te maken blauw, Ik heb eigenlijk te veranderen achtergrondkleur op de header element. En nu zien we dat de achtergrond is blauw. Dus nogmaals, dit snel zou kunnen gaan door dit materiaal vrij snel. Maar dit is in wezen wat je gaat doen. Het is niet aan Probleem Set 7, maar zeker als je codering op het web. OK. Ik wil de achtergrond blauw maken. Hoewel in dit geval, blauw ziet er vrij lelijk. Ik kan hier naar binnen gaan, rond te spelen. Ik zie dat veranderen naar blauw werkt niet op de een. Ik moet eigenlijk veranderen de header element naar de blauwe omvatten achtergrond. En dan, als dan ga ik terug naar mijn CSS bestand, hoe doe ik eigenlijk deze set achtergrond blauw te zijn en maken deze verandering stok? Want als we merken als ik vernieuw de pagina, alle wijzigingen die ik maakte zijn verdwenen. Dus ik besefte, OK, mijn achtergrond is blauw. Ik heb in die header1 element te gaan en veranderings achtergrondkleur naar blauw. Hoe kan ik eigenlijk maken die verandering? Nou, herinneren eraan dat, als we naar binnen gaan van hier, deze header, de titel heeft een ID. En dat is de titel. En dus in onze CSS-bestand, kunnen we zeggen, OK, neem alles met ID van de titel en geef het deze extra eigenschap. Hoe maken wij er iets verwijzen met de ID van de titel, geen ideeën, of iemand weten hoe we verwijzen Id's in onze CSS-bestand? Een hash, dat klopt helemaal. En je hebt een hint van dat recht hier. Dus ergens in dit CSS-bestand, er is een regel code - # Links # links-innerlijke # header # titel. En het geeft het marge bodem, het definiëren van de marge bodem van deze bijzonder element. Nou, als ik wilde om dat te veranderen, Ik zou gaan in dit CSS-bestand. En ik kon vinden, hetzij deze deel van de CSS-bestand. Of ik kon mijn eigen schrijven. Ik kon hash titel accolade en doen dan achtergrondkleur colon blauw puntkomma en dichtbij dat accolade. En dat zou de achtergrond veranderen kleur van dit element naar blauw. De reden dat ze geven je hier zo veel is dat, is het noodzakelijk in dit geval, want titel is een unieke ID. Maar wat je kunt doen is nest dingen. Dus dit zegt, OK, ga naar links. Dat is zeer klein. Ik verontschuldig me voor dat. Maar ga naar het ding met ID links. Binnenkant van die, op zoek naar de ding met ID links binnen. Binnenkant van die blik, kijk voor het ding met ID header. Binnenkant van die, op zoek naar het ding ID titel en verander de ID-titel. Dus dit is gewoon een manier nestelende dingen. Sommige mensen houden van het nest, want het maakt het een beetje duidelijker. Je ziet hier beneden ook, rechts hier, er is geen hasj. Het is gewoon h1. Dat komt omdat h1 krijgt de de naam van een generiek label. En er zijn een aantal CSS-eigenschappen geassocieerd met elke h1. Dus als ik vond een andere h1 op deze pagina, Ik zou ook zien dat deze stijl was toegepast op het als goed. Als ik wilde een stijl toepassen op een klasse, hoe kan ik verwijzen naar een klasse of praten over een klasse in een CSS-bestand? PUBLIEK: Dot. JASON HIRSCHHORN: Het is met een punt. Dus laten we terugkeren naar deze pagina gaan voor. Als ik hasj ID. Dat is het veranderen van de stijl van het ding met ID. Of sorry, als ik dat doe hash-logo, dat is het vinden van het ding met de ID van het logo en het geven van een bepaalde CSS-stijl. Als ik iets doe. Top, dat is het vinden van alles met de klasse van de boven-en het veranderen van de stijlen. Als ik gewoon h1, dat iedere vindt enkele h1 en geeft het de wat stijl die ik wil geven. Als ik dat doe h1 ruimte en dan. Top. Dat zal gaan vinden alle H1S en vervolgens alle degenen met de klasse van de boven-en dan alleen de stijlen veranderen wat ik wil om het te geven. En nogmaals, we kunnen ook schrijven een aantal van deze op onze eigen. Maar we zouden niet zo ver zijn. Veel beter, lijkt het om daadwerkelijk te gaan op een echte live-website en zie hoe ze doen het en kijken naar alle van de fantastische dingen die je krijgt om te doen. Laten we eens kijken naar een meer website voordat we verder gaan. En dit is er een die je waarschijnlijk vertrouwd te raken met. Dit is CS50 Financiën. Dus nogmaals, kun je eigenlijk gaan en acht dit CSS-bestand op uw computer, omdat je dit hebt gedownload CSS-bestand, als je het gedownload probleem stellen. We kunnen gaan naar Tools en Developer Tools. En we zien een veel eenvoudiger HTML-lay-out. We hebben top-, midden-en onderkant. En nogmaals, iets wat je zou moeten zijn bekend zijn met, want je hebt gekeken via de verdeelsleutel voor het probleem van deze week in te stellen. Bovenaan is, per code, een enkel beeld genoemd. En dat is de bron van het beeld. Zeggen ik heb alles wat klaar Ik wilde voor Probleemverzameling 7. En het is goed werkt, maar Ik wil veranderen hoe het eruit ziet. En ik wil de achtergrond veranderen van de top van de pagina om, bijvoorbeeld blauw. Als het mij, zou ik binnenkomen hier en erachter te komen, wat OK wil ik veranderen. Laten we eens kijken, div ID top, die uiterlijk als de top van de pagina. Dus laten we er naartoe te gaan. Laten we proberen het veranderen van de achtergrondkleur. Laten we gaan doen Alice blauw, omdat dat is een mooiere. En je zult merken dat - je waarschijnlijk niet zien. Maar er is een licht blauw, naast de CS50-logo. Veranderen we het in plaats daarvan naar rood. En je zult nu merken Ik veranderde de achtergrond kleur naar rood. Dus nu heb ik in mijn CSS-bestand zou gaan en Typ # top krullend Paren hier. U kunt de code rechts zien hier, accolade. En dan, ik zou de achtergrond toe te voegen kleur, rood. En dan, zou er zijn een accolade. Dus dat is hoe ik zou verkennen en experimenteren met het formatteren op de CS50 Finance website. Ik kon het hier en test te doen het uit in mijn browser. En dan kon ik in mijn eigenlijke code gaan en maak de veranderingen die zullen daadwerkelijk te gaan wonen en dat mensen echt zien, als ze zouden komen mijn specifieke site. OK. Dat was een stuk. Ik verontschuldig me voor het doornemen van het zo snel. Heeft iemand enig vragen helemaal over HTML of CSS? PUBLIEK: Kun je gewoon gaan over hoe je gekoppeld wat later Jason, weer? JASON HIRSCHHORN: Wat bedoel je verbonden? PUBLIEK: U voorzien van een link naar een andere website, met behulp van het anker. JASON HIRSCHHORN: Dus vraag je, gewoon generiek, hoe je een link maken? PUBLIEK: Ja. JASON HIRSCHHORN: OK. De code voor het maken van een link - PUBLIEK: Nee, net als in de HTML. JASON HIRSCHHORN: Hier beneden, bedoel je? Dus als ik wil een link ergens, bijvoorbeeld, is de HTML op mijn pagina hier. Dit is de HTML. Misschien is het geopend in een bestand, index.html. Ik ga naar binnen Laten we deze copyright John Harvard link naar iets. Dus we zullen dit allemaal bewerken HTML. Alles wat je doet is ook de een, zo beugel een haakje sluiten bij de begin, en dan slash beugel een haakje sluiten aan het eind. Zo nu heb ik begrepen een anker-tag. En eigenlijk, als u klikt uit deze, gaat het nu formatteren bewerken als HTML. En zeggen, we willen koppelen. Wij zouden u het href-attribuut. En we zeggen - En nu, zoals u merkt, auteursrecht John Harvard is blauw. En als ik scroll over het, het is nu een link. Dus je kunt die code te schrijven. U kunt vrijwel alles omringen je wilt in een anker-tag en zet hem in een link. Publiek: OK. Hebbes. JASON HIRSCHHORN: En als ik niet wil het - natuurlijk, soms hebben mensen de neiging om deze dingen die kijk maar denken blauwe algemeen en onderstreepte zijn niet de mooiste manier om een ​​link te maken. Dus als ik hier kom, zie je dat, ergens in een CSS bestand is geschreven dit een en dan twee accolades. Dus laten we zeggen dat, voor de links, ik niet wil dat ze blauw, in plaats word ik willen dat de kleur van een link naar zijn deze mooie magenta. Laten we het de kleur. Laten we plukken magenta. Nu, alle links op mijn pagina hebben word deze mooie kleur van magenta. Sommige mensen houden niet van kleuren op alle. Sommige mensen houden niet van onderstrepingen. Je krijgt te plukken. Met koppelingen, kunt u de stijl hoe ze kijk als je eenmaal hebt bezocht. Als je op een heleboel pagina's zult merken, koppelingen paars op je ze bezoekt. U kunt die kleur veranderen. Yeah. Publiek: Dus u deze wijzigt voor elke link. Maar als je wilde alleen maar om die koppeling doen zelf, zou je gewoon in de ID bodem of iets? JASON HIRSCHHORN: Dus grote vraag. Zoals u hier opgemerkt, veranderde ik wat deel van de CSS die geldt voor alles wat een A. Als ik wilde gewoon doen die link onderaan, ik zou naar mijn CSS-bestand en waarschijnlijk gewoon doen zoals je zei, hash bodem ruimte een. En dat zou me Zoals al in de bodem. Of ik kan, als alternatief, geef het een unieke ID en dan gewoon doen hash link. En dat zou me toelaten om dit te veranderen uit. Echter, net uitdelen IDs tegen wil en dank het algemeen een slechte praktijk, omdat die moet uniek zijn. En hoe meer je die, het kan een beetje verwarrend. Yeah. Publiek: Kunt u het zelfde geven ID om meerdere eigenaren? JASON HIRSCHHORN: Technisch gezien, ja. Er gaat niets om je te stoppen, maar je moet niet moet je het eens klasse. OK, andere vragen over HTML of CSS? OK. Laten we overgaan tot PHP. Oh, ja. Publiek: Wat is het over deze websites dat betekent dat we kunnen bewerken voordat we vernieuwen. Maar zodra we frissen ze terugkeert terug naar de oorspronkelijke HTML? JASON HIRSCHHORN: Grote vraag - dus toen we dit hebt geladen webpagina, het is HTML. En het is webbrowser. De PHP wordt uitgevoerd om ons te geven wat type van de website die we zien. En het is gemaakt wat HTML, sommige JavaScript, en sommige CSS. En dat is nu toegankelijk door onze computer. En een kopie van deze bestanden wordt opgeslagen lokaal op onze computer, voor het moment. Dus we kunnen dat lokale kopie te bewerken. Maar natuurlijk zijn we niet aan het wijzigen de server kopiëren. En als we de pagina te vernieuwen, krijgen we een andere server kopiëren. En zo zien we de dingen terug zoals ze waren. Als we in staat waren, van hier, te bewerken de officiële website, zouden we veel hebben problemen. PUBLIEK: Ja, dus we kunnen lezen en schrijf die kopie. JASON HIRSCHHORN: Juist. We zijn alleen het maken van lokale wijzigingen hier, maar nogmaals, zeer nuttig voor het verkennen, vaak. Als ik het schrijven van mijn laatste project, Bijvoorbeeld, ik wil zien hoe sommige website gemaakt iets blik zoals ze deden. Ik zal gaan en gebruikt dit venster naar beneden hier, om te kijken naar wat CSS, gaven zij het of welke kleur ze geplukt of hoe ze kreeg het zo dat, wanneer je zweefde over iets, de lijst naar beneden kwam in een mooie trapsgewijze manier. Het is een geweldige manier om te controleren welke andere websites doen en lenen van hen. Laten we overgaan naar PHP. PHP staat voor, in een recursieve zin, PHP Hypertext Processor. En PHP, wat het gaat doen is code uitvoeren server side. Dus we gaan nooit PHP code te zien. Toch speelt het keurig met HTML en vaak genereert veel van HTML-code. Maar als je bekend bent met probleem Set 7, zal uw PHP-code uit te voeren, genereren sommige HTML, en dat is wat de gebruiker zal uiteindelijk zien. PHP is ongelooflijk lijken op C. Echter, er zijn een paar verschillen en deze verschillen zijn gewezen. Een verschil is dat variabelen in PHP zijn losjes getypt. Heeft iemand een gevoel van wat dat betekent? PUBLIEK: Geen behoefte om het zelf te werpen. Als geen behoefte om te schrijven in tekst. JASON HIRSCHHORN: Ik zou het niet gebruik maken van de woord cast, maar ja, geen behoefte te verklaren een type voor een specifieke variabele. Hoe plaats daarvan hebben we een variabele declareert? PUBLIEK: Gebruik een dollarteken. JASON HIRSCHHORN: Gebruik een dollarteken. Dus $ x is een variabele. $ 1 is een variabele. $ String is een variabele. Deze variabelen, $ x kon zijn een geheel getal. Dan kan het een string zijn. Dan kan het een teken zijn. Het maakt eigenlijk niet uit. Ook de koele ding over PHP is, laten we zeggen, $ x is de string een. En $ y het karakter een. U kunt $ x en $ y toe te voegen, en het zal geven u 2, wat je zou verwachten. Dus er zijn operaties in PHP. Omdat het losjes getypt variabelen, sommige impliciete casting wordt voor u gedaan en sommige werkzaamheden. U kunt bewerkingen op de dingen verschillende types. Waar voorheen, krijg je vaak een foutmelding in C zeggen, dit is niet het type dat zou hier gaan. Alleen dingen van dit type kunt hier terecht. Je bent niet van plan om dat type te krijgen fout, algemeen, in PHP. Dus dat is een groot verschil - hoe we omgaan met variabelen. Het tweede grote verschil is dat PHP-code wordt geïnterpreteerd. Overwegende, wordt C-code gecompileerd. Wat betekent dat? Nou, voor C-code je liep het door een compiler. U gegenereerd een binair bestand. En je liep die binair bestand. Je zorgde voor alle fouten voordat u het binaire bestand gegenereerd. Natuurlijk, er zou kunnen geweest zijn segmentatie fouten, toen u de binair bestand. Maar het is niet zo dat je vergat te omvatten de definitie van printf of je hebt een variabele niet gebruiken en alleen creëerde een verspilling variabele. Of u niet een te definiëren functie prototype. Dat gebeurde allemaal voor je samengesteld. Het gaf je alle fouten of slecht dingen die hij dacht zou kunnen gebeuren. En dan, je had je 0 en 1 bestand dat je liep. PHP-code werkt niet zo. Je gaat je PHP-code te schrijven. Vervolgens gaat u opslaan, vermoedelijk. En ten minste in P-Set 7, je gaat om uw webbrowser te vernieuwen, en je gaat om te zien wat er gebeurde. Je zult zien de uitgang van die PHP-code. Je zou ook, aan de top van uw pagina, een fout. Want je had een aantal fout in uw PHP. U kunt alsnog de rest van zien de webpagina kijkt prima. Maar een deel verkeerd is, en er is een fout in die plaats. En dat komt omdat dat deel van je PHP-code werkt niet. Inderdaad, als je uit te voeren, wanneer u ga naar iets als by.php. Het gaat om te gaan door uw PHP bestand regel voor regel en voer het uit dan en alleen dan. Het gaat niet om het te compileren vooruit tijd of een exemplaar te compileren en dan geven dat samengesteld kopie aan iedereen. Telkens gaat het om door te gaan lijn per lijn en voer het uit. Dus sommige lijnen zou kunnen werken en uitgang iets correct. En andere lijnen zouden gebroken en output een fout plaats. Dus bij het oplossen met PHP, hebben we gezien u een paar nuttige dingen om u te helpen debuggen, zoals de dump functie. Maar in het algemeen, je gaat om deze fouten te zien. En dat is hoe je gaat weet je iets verkeerd deed. Maar je bent alleen maar om de fout te zien zodra je daadwerkelijk uitvoeren van de code. Een ander belangrijk aspect van PHP en web development is het idee van te krijgen versus bericht. Kan iemand uitleggen wat het verschil tussen GET en POST zijn? Nobody - Ja. PUBLIEK: Is niet een van hen laat de gebruiker de gegevens te zien, en een van hen niet? JASON HIRSCHHORN: Great. Ja, maak je iets toevoegen? Publiek: Ik dunne post is een super-globale variabele. JASON HIRSCHHORN: Dus beide variabelen worden gegeven aan u. Dit zijn slechts variabelen. En je weet dat ze variabelen, omdat hier ik Gebruik het dollar teken. Deze variabelen zijn gegeven aan u door PHP. En als je tussen webpagina's te verplaatsen, je wilt wat informatie op te slaan. Waarschijnlijk wilt u besparen als de gebruiker is ingelogd Dat is niet opgeslagen in de GET en POST. Dat is opgeslagen in iets anders, een andere variabele. Weet iemand welke variabele dat is opgeslagen in, of welke variabele je gebruiken in P-Set 7, om ervoor te zorgen dat de gebruiker is ingelogd? $ _SESSION, Dat klopt helemaal, waarschijnlijk belangrijk om bekend te zijn met de namen van deze dingen u vaak gebruikt. Dus je hebt de sessie variabele te gebruiken om op te slaan informatie van pagina naar pagina. Dat is een super variabel. Het bestaat op elke pagina, misschien als een globale variabele, als je wilt denken over het niet zo. Er zijn een paar andere variabelen die u in staat om informatie over te dragen van pagina naar pagina. Met name degenen die we zullen richten op zijn de GET en de POST variabelen. In PHP lijken ze $ _GET En $ _POST. En het verschil, als Marcus wees uit, tussen de twee van hen is dat, informatie in $ _GET is weergegeven in de URL. Dus als we kijken hier naar beneden, zien we een YouTube-link. We zien dit vraagteken. We zien v = en dan een bepaalde waarde. Terug naar dit idee van belangrijke waarde pair, de v de sleutel. En hier is de waarde. Dus als we konden naar deze pagina of codering op deze pagina, zouden we een hebben variabele genaamd $ _GET. Als we naar $ _GET haakje openen "v" haakje sluiten, zeer vergelijkbaar met array- notatie, dit is een verwante reeks omdat we niet met behulp van indices. Werden met behulp van strijkers als sleutels. Maar zeer vergelijkbaar idee. Als we gingen we, zou deze waarde krijgen. Op deze pagina, zouden we in staat zijn deze waarde gebruiken. Als we er eigenlijk uit, laten we ga naar een YouTube-pagina. Welke video moeten we kijken? Deze, zijn mensen hobbit fans? PUBLIEK: Ja. JASON HIRSCHHORN: Dus ik ben het kopiëren hun aandeel URL en te plakken in een nieuw venster. En nu, als je omhoog kijkt hier, zul je merken dat, nogmaals - Ik ga om te kopiëren en te plakken in gedit, zodat we kunnen zien het groter. U zult merken dat het Dit vraagteken. Het vraagteken wijst dat alles na dit gaat worden opgeslagen in de get variabele. Het heeft dan de v, dat is de eerste sleutel en deze eerste waarde. Ampersand is bijzonder. Ampersand zegt, OK, we eindigde de eerste waarde. We zijn nu op weg naar een andere belangrijke waarde paar. Hier wordt de belangrijkste functie genaamd, en de waarde is youtu.be. Dus als ik een codering deze pagina en iemand ging naar deze URL en ik had misschien watch.php. En ik was codering dit. En ik kon de $ _GET variabele gebruiken. En ik zou een v hebben, en Ik zou een functie hebben. En als ik de v-toets gebruiken, ik zou deze waarde krijgen. En als ik $ _GET beugel "feature" haakje sluiten, zou ik deze waarde te krijgen. Nogmaals, het niet noodzakelijk toepassing - uiteraard, de YouTube-sleutels en waarden en krijg informatie is niet van toepassing op onze Probleemverzameling 7. Maar er zijn bepaalde dingen die we passeren via GET in onze Probleemverzameling 7. En zeker, als je naar een webpagina of coderen je eigen pagina, $ _GET Zal van pas komen wanneer uw codering. Wat is een reden om $ _GET gebruiken dan, als het biedt geen privacy? Je ziet al deze informatie dat wordt overgedragen. Het is allemaal aan de gebruiker. Maar wat is een reden dat je misschien willen iets in $ _GET opslaan, zoals tegen $ _POST? Waarom zou je dat willen doen? Oke. Ik vroeg je in Quiz 1. Wat is de pro van $ _GET? Wat is een pro? Yeah - Publiek: Het is makkelijker om informatie delen. JASON HIRSCHHORN: Ik denk dat is geweldig. Het is makkelijker om informatie te delen. Het is makkelijker om bladwijzer. U kunt nu een bladwijzer, YouTube.com / watch? V = iets en gaan die specifieke video. Als YouTube deed altijd POST verzoeken om verschillende pagina's, elk YouTube URL zou YouTube.com. Je kon niet bladwijzer een enkele video. Want als je zegt gedeeld die link met iemand anders, dat doen ze niet automatisch krijg je bericht variabele. Ze zijn net deze link, en de link is voor iedereen hetzelfde. Dus dat is een pro. Hiermee kunt u bookmark deze informatie of deze informatie te delen of maak het een beetje gebruiksvriendelijker. Natuurlijk, er is geen privacy, dus we hebben dit bericht variabele. En na de informatie niet weergegeven in de URL. Het is niet volledig prive. Maar het is iets meer prive. En dus zult u deze URL zien hier beneden, cs50.net. Of je bent aangemeld bij de website, het gaat om hetzelfde te hebben URL cs50.net. Uiteraard iets anders, indien je bent ingelogd op de website. Je hebt, een, waarschijnlijk de input van uw pincode. En het is bevestigd dat met de server. En het is waarschijnlijk te besparen andere informatie. Maar de URL helemaal niet veranderen. En dat is het geval, wanneer iets wordt per post toegezonden. De URL niet wordt gewijzigd. Dit bericht heeft geen weergegeven in de URL. Maar sommige staat is veranderd, en misschien is er wat informatie opgeslagen in de POST variabele. Sorry. voordat ik in SQL, elke vragen over PHP name vragen over dingen die we niet gaan over die je hebt gevonden of een syntax of logica vragen over PHP? OK. De laatste taal die u zal worden interactie met deze week de Structured Query Language, SQL, uitgesproken vervolg vaak. Die u toelaat om te communiceren met de database een geformaliseerde manier. En het speelt zeer mooi met PHP. Zoals u zult zien in Probleemverzameling 7, we hebben gezien je een functie genaamd query. En het duurt een SQL string en uitvoert dat query op de database. In de afgelopen jaren, niet was je gegeven functie. Je moest PHP-functies gebruiken om de query op de database en check voor fouten en krijgen dan de resultaten. En eigenlijk is het niet zo moeilijk, want nogmaals, het speelt zeer mooi met PHP. En PHP geeft je een heleboel functies om te communiceren met een SQL-database. Zo vaak, de twee van deze gaan samen. Natuurlijk kan je interactie met de SQL-database met enige aantal andere talen. Maar PHP is een fantastisch om te kiezen. Een databank - gaan we over dit snel, want dit is een modewoord we gaan gaan gebruiken vaak - is een verzameling tabellen. Dus we kunnen denken als een Excel-bestand. Een Excel-bestand meerdere tabbladen aan de onderkant van het scherm. Elk tabblad we nu noemen een tafel, waar een tafel is een verzameling van rijen. En wat is een rij? Nou, een rij is dat hetzelfde in het Excel-bestand. Dat heeft alleen bepaalde waarden voor elk bepaald gebied of elk gegeven kolom. Het is als een vermelding in de tabel. Het is een student, die heeft een ID, een specifieke ID, en een specifieke naam en een specifieke huis. Dus een database is een verzameling tafels. En tafels zelf zijn een aantal rijen of Records. Ook zijn er in elk tafel, bepaalde terreinen. En die aangeeft wat elke record is gaat hebben, gebieden soms kolommen maar algemeen genoemd velden. In deze zeer eenvoudige tabel, ik heb drie velden, een id-veld, een gebruikersnaam veld en een hash veld. En ik heb drie rijen. Op dit moment zijn ze leeg. Zouden ze waarschijnlijk niet leeg zijn als dit was mijn echte databank. Dus als je hebt gebruikt Excel, vergelijkbaar idee om wat je doet in Excel, hoewel, natuurlijk, nu gaan we in staat zijn om doen veel krachtiger dingen op de informatie die is opgeslagen in onze database. Je maakt zelf een databank voor Probleemverzameling 7. Maar je zult het creëren van meerdere tabellen in de database. Je zult het maken van een database of een tafel voor gebruikers. U zult ook het creëren van een tafel voor Waarschijnlijk voorraad transacties, te houden spoor van hen, want je moet implementeren van een geschiedenis functie. Beide deze tabellen zal hebben verschillende gebieden. Bijvoorbeeld, een gebruiker veld, je Wilt u waarschijnlijk hun gebruikersnaam en een ID en een hash van het wachtwoord. In de Voorraden tabel die bijhoudt van houdt geschiedenis of de geschiedenis tafel, je waarschijnlijk niet de gebruikersnaam nodig en de hasj en de ID. Je hebt waarschijnlijk alleen maar een van die waarden unieke, toekennen met een bepaalde gebruiker. Maar ja, je wilt andere slaan dingen als: hoe laat werd transactie gemaakt. Wat voorraad werd gekocht of verkocht? Hoeveel aandelen van de voorraad werd gekocht of verkocht? Wat was de prijs waartegen de voorraad werd gekocht of verkocht? Dus nogmaals, je gaat te maken krijgen met databases die gaat om meerdere tafels. Elke tafel zal hebben zijn eigen set van velden. Echter, is het waarschijnlijk dat een soortgelijke veld in elke tabel, dat relateert aan elkaar. Meestal is dit een veld ID. Want als elke gebruiker heeft een uniek ID en je dat ID associëren met elke transactie die de gebruiker maakt of de hele geschiedenis van die gebruiker. En je hebt de ID van de gebruiker. U kunt informatie krijgen uit beide tabellen. U kunt de gebruikersnaam te krijgen, en je kunnen al hun transacties te krijgen. Heeft u vragen over databases, of specifieke vragen? Eigenlijk, laten we stellen dat. We zijn er in twee kanten. Er zijn dus vier operaties op databases die u gaat gebruiken in Probleem Set 7 en waarschijnlijk ooit gebruikt. Het eerste wat je wilt doen is het invoegen een nieuw record in een tabel of een nieuwe rij in een tabel. Dit is de algemene functie het generieke vorm, van die SQL-query. In de tabel invoegen, welke kolommen u wilt invoegen en vervolgens de waarden die je gaat te willen steken in deze kolommen of velden. Als u meerdere tabellen in een databank of meerdere databases, u Het kan nodig zijn om de database te specificeren en de tabel die u wilt om dingen in te zetten. Maar heel simpel, als je wilt invoegen in iets, je zegt, hier zijn de velden Ik wil invoegen in. En hier zijn de waarden. In sommige tabellen, ook, en deze gebruiker tafel is een goed voorbeeld. Waarschijnlijk in de tabel van deze gebruiker en waarschijnlijk in de tabel van uw gebruikers in P-Set 7, er is niet alleen een gebruikersnaam waarde. Er is niet alleen een contante waarde, of in het veld, in plaats van. Er is ook een veld ID. Ik ben niet van plan om dat ID veld in te voegen. Dat zal worden gegeven aan me automatisch wanneer een nieuw record wordt geplaatst. Dus is er een aantal veld dat u kunt instellen automatisch te zijn. Misschien wil je elke gebruiker geven $ 10.000 van contant geld uit de vleermuis. Dus ik hoef niet in te voegen een aantal contante hier. Alles wat ik nodig om in te voegen is de gebruikersnaam. En dan, het veld in contanten zal worden pre-bevolkt, en het ID-veld zal wordt ingevuld. Zo vaak, we zijn niet invoegen iets in elk gebied, omdat die andere velden automatisch bevolkt. Want dat is hoe we opgezet die tafel. Het tweede wat je gaat wilt doen is het verwijderen van een record. Het verwijderen van iets is zeer eenvoudig. Je geeft de tafel waar u wilt om iets uit te wissen. En u zegt, OK, ik wil verwijderen record dat een gebruikersnaam van Milo heeft. Of ik alle records wilt verwijderen die over een gebruikersnaam van Milo of dat een waren transactie van gebruikers-ID nummer 2. Heeft u vragen over deze twee soorten vragen? PUBLIEK: [onverstaanbaar]. JASON HIRSCHHORN: Ja. Dus ik ga naar rij en opnemen gebruiken elkaar en sommige met kolom en in het veld. Maar een rij is een record. Een kolom is een veld, gaan terug naar deze tabel. OK. Het volgende wat je waarschijnlijk gaat doen is nog wat gegevens uit de tabel. Dat is een Select-query. En nogmaals, wat tafel ik selecteren? En wat column wil ik kiezen, of welke waarde moet ik wilt selecteren en uit welke rij? Dus de Select is een weinig specifieke. Ik zeg, OK, ik wil deze tabel. En dan wil ik de kolom gebruikersnaam en Ik wil het uit de rij met ID 2. Dat is een manier om te doen een Select. Of ik kan zeggen, geef me elke enkele gebruikersnaam. Of ik kan zeggen, geef me een hele rij uit deze tabel, waar de gebruikersnaam is 1. Dus er zijn een paar verschillende manieren om doen Select queries, afhankelijk van hoe veel informatie die u wilt, U kunt altijd gewoon kiezen alles van die specifieke tafel en dan loop doorheen, het uitzoeken van de dingen die je wilt. Maar houd in gedachten, als je het selecteren een heleboel dingen uit een tafel en je hebben echt een grote tafel, gaat dat duren enige tijd, dus het beste om alleen te selecteren dingen die je gaat om uiteindelijk met behulp van. Ook met selecteren en al deze andere SQL-commando's als goed, ik ben waardoor u de kale versie. Maar zeggen, dat ik het selecteren van gebruikers en ik wil om ze alfabetisch te printen, Ik kon alle gebruikers selecteren en vervolgens sorteren ze alfabetisch in mijn code. Of er is een manier om de select schrijven query en dat kiest dingen op een alfabetische mode, gebaseerd off van een bepaalde kolom, oplopende of aflopend. Dus in gedachten houden dat, veel van wat je wilt doen kan waarschijnlijk worden gedaan in de query door een extra attribuut. Dus wees opzoeken deze vragen online of de andere dingen die je kunt doen met deze vragen om ze uit te breiden. Tot slot, het laatste wat je wilt doen is iets niet invoegen of verwijderen iets, maar iets wijzigen. En dat wordt gedaan met de update query, en nogmaals, wat tafel. En welke verandering wil ik maken? En om welke rij of opnemen doen Ik wil dat veranderen? Heeft u vragen over SQL? OK. Dus we hebben ongeveer 15 minuten. En dit is de laatste foto die ik heb. En hopelijk, dit laatste dia is een goed overgaan in het probleem te stellen, omdat het begrip van waar we willen plaatst verslagen, ze verwijderen, selecteert hen, en werkt ze zal ons helpen begrijpen de grotere logica en flow van Probleemverzameling 7. Dus ik weet alle antwoorden op deze vragen. Ik ben niet van plan om u te vertellen alle antwoorden. Maar als iemand anders zou willen presenteren een vraag aan de groep of een antwoord op een van deze vragen, kunnen we gebruik dat als een jumping off point te praten over het probleem set. Of als iemand een meer generieke vraag uit het probleem set, voelen vrij om te vragen dat ook. En we kunnen daar beginnen. Houd in gedachten dat je stil zijn kwetst iedereen. Yeah. PUBLIEK: Dus is de enige manier om te passeren variabelen en naar verschillende web pagina's, of de meest handige manier, met behulp van POST of GET? JASON HIRSCHHORN: Dus ja, dat is de meest handige manier om te zeggen - toen iemand een formulier invult - informatie krijgen op een andere website pagina, met behulp van GET of POST. Vanwege het raamwerk we gebruiken in dit probleem set, zult u merken dat, een heleboel keer, we maken een andere pagina. we Of we maken een ander bestand, niet noodzakelijkerwijs een andere pagina. Zo passeren we in een variabele. En dan, het maakt een HTML-pagina, met behulp van de informatie die variabele. Dit is technisch passeren informatie tussen verschillende webpagina's. Dat is het doorgeven van informatie tussen verschillende bestanden. En dus kunnen we elke gebruiken variabele doen. Maar ja, als we wilden passeren informatie van een bepaalde pagina te een andere pagina, GET en POST zou zijn de manier om dat te doen. Andere vragen heeft over het probleem te stellen? OK. Laten we gaan door, dan een specifieke deel van het probleem stellen. Je gaat nodig hebben om, op een punt, tonen portfolio iemand op het scherm. Wat bedoel ik als ik zeg portfolio, In het kader van dit probleem ingesteld? Publiek: Het is net als de aandelen die zij hebben hoe, hoeveel aandelen zij bezitten, de prijs, en hoeveel geld dat ze hebben verlaten. JASON HIRSCHHORN: Dat klinkt geweldig. Dus ik wil alle aandelen weer zij bezitten voor elk aandeel onderneming aandelen en waarschijnlijk hoeveel dat is waard, en dan moet een aparte variabele, hoeveel geld zij bezitten. Dus zeggen dat ik wil beschrijven dat. Laten we beginnen te praten over hoe ik kon gaan over dat te doen, wat tafels ik ben gaat nodig hebben om in staat zijn om dat te doen. Yeah - PUBLIEK: Nou gebruikers, en dan, denk ik kunt u een tabel met de naam te maken Aandelen of iets dergelijks, dat zou zijn hoeveel ze hebben gekocht. JASON HIRSCHHORN: OK. Dus ik ga naar een tabel met de naam nodig Gebruikers, die bij welke houdt gebruikersnaam, vermoedelijk, waarschijnlijk een ID, waarschijnlijk het wachtwoord van een individu. Wat is iets anders dat je net gezegd dat geassocieerd? Iemand naast Michael, wat is iets anders dat is gekoppeld aan elke gebruiker, die uniek zijn voor hen? PUBLIEK: ID. JASON HIRSCHHORN: ID - wat is een ander ding dat we waarschijnlijk gaat willen op deze pagina? PUBLIEK: Hun naam. JASON HIRSCHHORN: Hun naam - wat is een ander ding met betrekking tot deze bepaald probleem ingesteld? PUBLIEK: Welke aandelen die zij bezitten - JASON HIRSCHHORN: Er zullen zijn veel van wat de voorraden zij bezitten. Wat is een van de specifieke waarde echter, dat ze gaan te hebben in verband met hen? Hoe gaan ze om te kopen en verkopen hun aandelen? PUBLIEK: Cash. JASON HIRSCHHORN: Ze zijn gaan om geld te hebben. Zodat elke gebruiker zal hebben een waarde voor geld. En dat gaat worden uniek voor elke gebruiker. Dus tabel van de gebruiker, maakt zin in geld om te zetten. Je zou natuurlijk, maakt u een andere tabel die gebruikers-ID's en heeft zijn waarde van geld. Maar het heeft geen zin. Het is zinvol om zomaar dat alles in een tabel. Dus we gaan naar een tafel hebben met die informatie. En dan, wat is de andere tafel we gaan hebben? Je zei, een tafel Stocks. Wat zetten we in de voorraden tafel? Iedereen, ideeën - Publiek bedrijf. JASON HIRSCHHORN: We gaan in naam van de te zetten bedrijf, dus AAPL voor Apple. Yeah. PUBLIEK: Hoeveel aandelen en hoeveel ze waard zijn. JASON HIRSCHHORN: Hoeveel aandelen, hoeveel ze waard zijn - wat is er iets anders dat we moet in die tabel? PUBLIEK: Een gebruikers-ID te indexeren. JASON HIRSCHHORN: A User ID. Dus in die tabel, zullen we waarschijnlijk - laten we zeggen, als het iemand die eigenaar is drie bestanden, drie rijen met elk dat gebruikers-ID of gebruiker van dat individu ID, maar een andere naam bedrijf, een verschillend aantal aandelen vermoedelijk, en een andere prijs voor elk van deze bestanden. Nogmaals, wat ik nu zeg is niet nood uitvoering, omdat je je realiseert dat er een aantal meer efficiënte manieren om het te implementeren. Maar dit is een goede plek om te beginnen. OK. Dus dat zijn de twee tabellen die we hebben. Nu willen we deze pagina weer te geven. Wat is het eerste type query we zouden moeten maken. Op elke pagina, aangenomen dat een gebruiker ingelogd, we hebben hun gebruikers-ID. Dus wat is het eerste type opzoeking die we moeten maken? Yeah. PUBLIEK: Hun gebruikers-ID. JASON HIRSCHHORN: Wij hebben hun gebruikers-ID, als we beginnen om code op de begin van onze pagina. Dus wat is het eerste type query we moet maken, gezien ID van een gebruiker? We gingen over de vier soorten. Er is maar vier mogelijke antwoorden. Publiek: Het is een selectie maken. JASON HIRSCHHORN: A Select - we willen selecteren uit de gebruiker tafel te krijgen, laten we zeggen, hun hoeveelheid contant geld. En we kunnen de hoeveelheid contant geld af te drukken bovenaan het scherm. OK. Wat is de volgende type opzoeking we willen doen? We hebben een aantal andere dingen we nodig hebben om weer te geven. Die worden opgeslagen in een andere tabel. Dus hoe gaan we dat krijgen? PUBLIEK: U selecteert voor hen. JASON HIRSCHHORN: A Select - nogmaals, er slechts vier opties. Selecteer waarschijnlijk geluiden zoals de juiste is. Dus moeten we naar een andere selectiequery doen, opnieuw met dat gebruikers-ID. En nu willen we niet slechts een terug rij, BU alle rijen die aan onze criteria, waarbij gebruikers-ID gelijk is aan 1. En dan kunnen we gaan en laat een lus net drukken al die afsteekt op het scherm, misschien uitprinten het bedrijf uit elk van deze op het scherm. Groot, dat klinkt als dat is het weergeven van een portfolio, niet veel meer ingewikkelder dan dat. OK, de gebruiker beslist dan dat ze hebben veel geld over. En ze willen om wat te kopen meer aandelen van een voorraad. Laten we zeggen, dat ze al in het bezit van deze aandelen van het bedrijf ook. Dus ze gaan naar uw kopen pagina. Zij ingang naam van het bedrijf. Wat is de vraag, na het invoeren van de firmanaam, dat je nodig hebt om voeren de volgende stap? Yeah. PUBLIEK: Update. JASON HIRSCHHORN: Update - en wat tafel wil je werken? PUBLIEK: Hun tafel, gebaseerd op hun ID-nummer? JASON HIRSCHHORN: Dus updaten niet de tafel van de gebruiker - dus het actualiseren van de Aandelen tafel, waar de gebruikers-ID past niet alleen, maar de stock naam overeenkomt ook. Je zult enkele waarde te krijgen. En dan wil je die waarde te nemen en voeg hoeveel aandelen die zij willen kopen van het. Dus je wilt niet blindelings overschrijven die waarde. Maar je kunt in feite nemen dat de eerste waarderen en gewoon updaten. U kunt dit doen als een plus evenaart, in plaats van alleen een gelijken. Wat is iets wat wel - als we denken over deze en we willen zijn zo robuust mogelijk - we moeten doen voordat we lopen die update-query? Ze willen vijf jaar van Apple te kopen. Elk aandeel van Apple is $ 200. PUBLIEK: We moeten geld eerst controleren. JASON HIRSCHHORN: We moeten check geld eerst. We moeten zorgen dat ze te maken genoeg geld hebben. Wat voor soort vragen kunnen we uitvoeren om zorg ervoor dat ze genoeg geld hebben? Publiek: Nog een Select. JASON HIRSCHHORN: A Select - Wij selecteren op basis van hun gebruikers-ID, hun waarde van geld te krijgen. Doe een paar snelle wiskunde. En als dat gaat opbrengen, ze hebben genoeg geld. Dan kunnen we onze update toepast. Of misschien, zo niet, we passeren dan. We geven ze een waarschuwing. OK. Zeggen dat ze niet een bedrijf te hebben. Ze kopen een nieuw bedrijf. Ze kopen Microsoft. Wat voor soort vragen willen we doen, als ze willen om Microsoft te kopen? En ze geen eigen Microsoft. Niet Manu, iemand anders, iemand naast Marcus? Carlos - PUBLIEK: A Selecteer, om ervoor te zorgen ze hebben genoeg geld. JASON HIRSCHHORN: Klinkt goed. PUBLIEK: En dan plaatst op de [onverstaanbaar]. JASON HIRSCHHORN: Precies, we zijn gaat willen invoegen in de tabel Stocks. En we gaan wilt invoegen. We kunnen hun gebruikers-ID in te voegen, de naam van het bedrijf, en hoeveel aandelen ze willen kopen. Wat zijn enkele andere activiteiten die zijn pagina's of functies die u bent zullen moeten implementeren in P-Set 7, dat moeten we dan heen? PUBLIEK: Eigenlijk heb ik soort van een vraag over deze. Voordat u de portefeuille weer te geven, moet je controleert Yahoo's website zorg ervoor dat de aandelenkoersen zijn niet veranderd? JASON HIRSCHHORN: Dat is geluiden als een goed idee. Dus wat Marcus zegt, OK, voorraad de prijzen veranderen voortdurend. In de aandelen die zij bezitten tafel, onze tabel met de naam Stocks, konden we redden het koers van het aandeel dat ze hem kocht op. Maar dat lijkt niet zo robuust, omdat de prijs van de voorraad is voortdurend gaat veranderen. Dus in feite, heb je waarschijnlijk niet nodig om de prijs van de voorraad op te slaan. Maar elke keer dat u tonen hun portfolio, u vernieuwen of bijwerken van de koers van het aandeel. En als je - en je hebt al. Ik weet dat je al hebt gekeken in de probleem stelt al terug. Je hebt gerealiseerd dat we hebben geschreven een code voor u dat u toestaan ​​dat aan de prijs van een aandeel te krijgen, gegeven naam van een bedrijf. Dus ja, dat klinkt waarschijnlijk een beetje meer robuust. Maar die tafel hoeft niet noodzakelijkerwijs om de prijs van de voorraad op te slaan. OK. Wat zijn een aantal andere functionaliteiten u moet implementeren deze week dat we kunnen praten over? Ik wil praten over hen. Wat wil je over praten? Het is waarschijnlijk in deze spec. Ik zou gewoon naar beneden scrollen naar de onderkant van de spec en vraag me het eerste woord zie je dat niet zinvol. Een andere functionaliteit - laten we praten over een. We zullen daar beginnen. Publiek: Het opnemen van de geschiedenis. JASON HIRSCHHORN: Opname de geschiedenis, grote. Dus je gaat te hebben om bij te houden van een geschiedenis van de transacties. Dus u wilt bijhouden van elke houden tijd die ze kopen of verkopen van een voorraad. Ik kocht mijn voorraad. We hebben net al zei, is het waarschijnlijk zinvol om onder andere een Select, om hun hoeveelheid contant geld en kom later. Het is waarschijnlijk slim dan om onder andere een plaatst of een update, afhankelijk van ongeacht of zij eigenaar zijn van voorraad. Als we willen dat ook bij te houden een geschiedenis, hoe kunnen we dat doen? Betekent dat gaan in de tabel Stocks? PUBLIEK: Nee JASON HIRSCHHORN: Nee, dat waarschijnlijk gaat in een andere tabel. Omdat zeggen je koopt 10 aandelen van Apple. Dan koop je een andere 10 aandelen. U wilt slepen gescheiden administratie. Dat zijn twee afzonderlijke transacties. Dus hebben we een andere tafel, een geschiedenis tafel. Dus nogmaals, we kopen. Wij voeren een Select, dan een Insert of een update. Wat doen we nu? Wat is de volgende vraag die we uitvoeren als we iets kopen? We willen bijhouden van geschiedenis houden. Yeah. PUBLIEK: U wilt bijhouden van mislukte transacties ook. JASON HIRSCHHORN: Nou, voordat we zeggen wat soort transactie, wat willen we - Welk type query, Carlos, zou stellen ons in staat om bij te houden van de dingen in het algemeen? Je hebt vier gissingen. Welke denk je? PUBLIEK: bijwerken. JASON HIRSCHHORN: Niet updaten. Wat is je tweede raden? PUBLIEK: selecteren. JASON HIRSCHHORN: Als u wilt bewaren spoor van iets, wilt u waarschijnlijk om het ergens te schrijven of opslaan voor later. Dus als geen update, dan - PUBLIEK: Steek deze. JASON HIRSCHHORN: Invoegen, daar gaan we. Ja, zodat u de hoeveelheid te selecteren geld dat ze hebben, klinkt geweldig. Ze hebben niet genoeg geld. Die transactie is niet van plan om te werken. Nee, hoeft u niet bij te houden van een transactie indien het niet werkt. Of je kunt, als je wilt geef ze een harde tijd. Maar je hoeft niet. Dan moet je bijwerken invoegen of in hun tafel Stocks. En nu, heb je je andere tafel. U heeft uw geschiedenis tafel of wat je ook wilt noemen. En in die tabel, je gaat om een ​​nieuwe rij in te voegen. Dat gaat waarschijnlijk hebben de ID van de gebruiker. Het gaat waarschijnlijk om te hebben de naam van de voorraad. Het gaat waarschijnlijk om te hebben een tijd dat ze het deden. En in dit geval, zult u waarschijnlijk willen de prijs te voegen. Want voor een geschiedenis, je niet schelen wat de huidige prijs is. U schelen wat de prijs is wanneer ze gekocht of verkocht iets. Het klinkt zo als, te implementeren kopen volledig omvat een aantal verschillende SQL queries, Maar eerlijk gezegd, niet dat veel code in het algemeen. OK. En dat zorgt voor de geschiedenis. Laten we zeggen, we willen geven onze geschiedenis. We spraken over het weergeven van onze portfolio. Hoe zouden we weer onze geschiedenis? PUBLIEK: Vermoedelijk chronologisch. JASON HIRSCHHORN: Vermoedelijk chronologisch - wat vraag denk je dat we zouden gebruiken? PUBLIEK: Een select. JASON HIRSCHHORN: Een select - selecteer misschien alle rijen uit die tabel die overeenkomen met de gebruikers-ID en vervolgens geeft ze chronologisch, klinkt goed. Moeten we code schrijven om sorteren door die lijst? PUBLIEK: Nee, omdat je verteld ons is er een opgaande en aflopende zaak. JASON HIRSCHHORN: Thing? PUBLIEK: Ja. JASON HIRSCHHORN: Yeah. OK, niet inschakelen in de code voor mij, dat handmatig sorteert door uw vragen, te sorteren. Die code is al gegeven. U kunt een Select-query schrijven dat sorteert dingen. Sorteer ze op voorhand en dan print ze uit. Het maakt zo veel meer zin te doen het op die manier, dan andersom. Ja. PUBLIEK: Moeten we sorteer ze op voorhand? Betekent dat u sorteren ze in de database? JASON HIRSCHHORN: De Select-query retourneert deze naar u gesorteerd. Dus dat doen, in plaats van ze alleen maar bij u terug in een willekeurige volgorde en vervolgens te sorteren ze zelf. Yeah. PUBLIEK: Is er een manier om het te houden gesorteerd in de database zelf, zodat je hoeft niet te sorteren het elke keer dat u - Publiek: Kunt u het invoegen gesorteerde? JASON HIRSCHHORN: Vraag - doet het er toe dat de dingen gesorteerd in database? PUBLIEK: Nee JASON HIRSCHHORN: Nou, ze worden gesorteerd. Ze zijn chronologisch gesorteerd. Maar laten we aannemen dat de dingen zijn gesorteerd chronologisch, van boven naar beneden. We hebben een Google formulier. Wanneer iemand reageert op onze Google vormen, het wordt gebracht in de onderkant van die tabel. Maakt het uit dat de dingen niet chronologisch gesorteerd? PUBLIEK: Als het niet chronologisch, hoef je niet te sorteren elke keer je info nemen. Maar als het al gesorteerd, kunt u niet niet te doen dat aanvullende functie aan te roepen? JASON HIRSCHHORN: Dus dat is eigenlijk een goed punt. Voor ons als programmeurs, het zou van belang. En we zouden willen om een ​​database te vinden dat niet de dingen te sorteren chronologisch. Of het opzetten van onze database, dus het houdt dingen gesorteerd per gebruiker ID. Zodat op die manier, zeg, we hebben 1000 gebruikers-ID's. Of Facebook, we hebben miljoenen van gebruikers-ID's. We willen niet dat onze tafel om gewoon willekeurige of onze database willekeurig. Het zou mooi zijn als alle gebruikers-ID's werden gesorteerd. Dus dan kunnen we binaire zoekopdrachten uitvoeren op onze tafel en dan gewoon de specifieke brok. Zo ja, afhankelijk - als we opgeschaald, we zouden willen om een ​​database te vinden dat hield dingen gesorteerd in een andere manier, zodat deze query zou minder tijd in beslag nemen. En we hoefden niet te gaan via onze hele database in elke rij in een gegeven tabel. Maar het niveau werken we op, we geen zorgen te maken over het houden van dingen gesorteerd. We kunnen aannemen dat de tijd die nodig die vraag te lopen gaat worden verwaarloosbaar, gezien wat we te maken hebben. Maar ja, geweldig idee - zoals we opschalen, is het misschien zinvol om het ontwerp van onze database een beetje een andere manier. Een laatste database-ontwerp wat ik wil zo goed te noemen, omdat u worden ingedeeld, of liever scoorde, op het ontwerp van de database. We spraken over dit. Cash is uniek voor elke gebruiker. Dus je hebt een tabel met de naam contanten kreeg dat heeft zijn gebruikers-ID en het bedrag van contanten en vervolgens een tabel met de naam gebruikers die hun gebruiker ID en hun gebruikersnaam. Deze tabellen kaart op elke andere een-op-een. Het waarschijnlijk zinvol voor ze een tafel. Dus laten we aannemen dat u een gebruiker tabel die bijhoudt van houdt gebruikersnamen en contant geld. Je hebt nu een tabel die heeft de voorraden een individu bezit. En een individuele eigenaar zou zijn meer dan een voorraad. Zodat deze niet in kaart op elkaar een-op-een. Het heeft geen zin om een ​​gigantische hebben tabel dat 30 dossiers heeft dat alles herhalen een gebruikersnaam, dat alle herhalen van een wachtwoord, dat alle herhalen een aantal van contant geld. Maar elk heeft misschien een andere voorraad naam of een andere koers. Het heeft geen zin te hebben dat veel grote platen. Wees slim over wanneer u deze creëren databases, zodat u niet te doen iets dwaas als dat, herhalen veel onnodige informatie. OK. We hebben twee minuten over. Mensen buiten zijn enthousiast om mee te doen ons of waarschijnlijk, vermoedelijk, beginnen hun eigen klasse. Heeft iemand enig vragen voordat we eindigen? OK, dit was inderdaad een wervelwind door alles heen. Ik verontschuldig me dat het moest dus snel zijn en dat we konden niet zo hands-on deze week als ik zou hebben graag zijn geweest. Maar als je vragen hebt over alles wat we daarover gaan of iets in dit probleem set - Ervan uitgaande u het hebt gelezen en zet in een goed vertrouwen inspanning - voel je vrij om me te mailen of contact met mij op. Ik ben meer dan gelukkig om door te werken uw code met u of beantwoorden vragen die je hebt. Houd in gedachten dat, deze week, veel uw tijd zal worden besteed aan het leren van de nieuwe syntaxis en proberen te begrijpen hoe om SQL queries of PHP te schrijven functies of omgaan met een MVC framework. Een groot deel van uw tijd deze week waarschijnlijk zal niet proberen te achterhalen van de gekke logica dat we waarin u wordt gevraagd te doen. Een groot deel daarvan gingen we net over is relatief eenvoudig. Dus dat betekent niet wachten tot de laatste minuut. Maar het betekent wel instellen hoe je je dienovereenkomstig te werken, om ervoor te zorgen je begrip en het leren van de syntaxis. Dus je bent niet, alle van een plotselinge, wetende precies wat je wilt doen, maar geen idee hoe te precies schrijven. OK, ik zie je volgende week.