>> 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.