>> [Speel van musiek]
>> David J. Malan Hello.
Kom ons neem 'n wandeling deur Probleem Stel 8 Datavleg,
wat gaan jy uit te daag om vestig op elemente vir Google Maps
met elemente van Google Nuus en mash hulle saam in 'n web applet dat
kan 'n gebruiker om te soek 'n kaart vir nuus plaaslike
spesifieke dorpe, stede, en zip kodes.
Om dit te doen, gaan ons sommige HTML integreer, CSS, PHP, SQL,
JavaScript, en 'n tegniek algemeen bekend as AJAX om
hierdie meeslepende te skep gebruikers ervaring.
>> Kom ons kyk eers vir Google Maps self.
Dit, natuurlik, is dalk 'n bekende interface.
Maar dit blyk dat Google Maps bied ook 'n API-- aansoek
programmering interface-- via wat jy elemente van Google Maps kan neem
en integreer dit in jou eie programme.
Inderdaad, in hierdie proses, jy gaan
'n paar van URLs te vind veral nuttig dat
is in die genoemde spesifikasie vir Probleem Stel 8,
spesifiek hierdie slag Lei of die ontwikkelaar se Guide
Google Maps API weergawe 3 asook as die Google Maps JavaScript API
v3 verwysing, wat 'n bietjie meer arcane te lees
maar eintlik het al van die laer vlak besonderhede oor watter funksies of metodes
en voorwerpe en eienskappe gebeure eintlik kom met die API,
baie soortgelyk in gees te [onhoorbaar] bladsye.
>> Nou as ons neem 'n blik op Google News, sal jy
miskien sien 'n bekende interface hier.
Maar dit blyk jy kan ook soek Google Nuus vir spesifieke geografiese
via 'n HTTP parameter genoem geo.
In werklikheid, as ek zoom in hier, sal jy sien dat
Ek is op news.google.com/news/section?geo=02138.
En, inderdaad, as ek zoom uit, sal jy sien dat ek
op soek na 'n bladsy met 'n hele klomp van die uitsig oor Cambridge, Massachusetts.
>> Intussen, as ek eintlik verander die URL nie 'n kode soos hierdie te wees,
maar iets 'n bietjie morsig soos Cambridge, + Massachusetts,
waar die plus is die manier waarop jy enkodeer 'n ruimte karakter in 'n URL en druk Enter,
jy sal sien dat ek eintlik sien byna dieselfde nuus.
Miskien is dit 'n bietjie anders omdat Cambridge eintlik
het verskeie rits kodes.
Nou hoe sal ek weet dat en, in werklikheid, hoe kon ek een of ander manier
bind stede en dorpe te rits kodes in geval ek
die gebruiker wil toelaat om te kyk of?
Wel, dit blyk dat daar 'n webwerf daar genoem
geonames.org wat 'n inisiatief te hê
'n vrylik beskikbaar databasis van alle vorme van geografiese inligting,
nie net vir die VSA, maar ook vir ander lande.
In werklikheid, as ek gaan na hierdie URL hier, wat ook in die probleem stel genoem
spesifikasie, sal jy dit sien drie notering van 'n hele klomp van die zip-lêers
enige van wat kan afgelaai word deur jou.
Trouens, vir hierdie probleem stel jy gaan om af te laai us.zip.
Nou in hierdie lêer is 'n hele n klomp van die data in teks formaat.
Die lêers is baie soortgelyk aan 'n CSV-- Comma Separated Values ​​file--
maar dit eintlik gebruik tabs velde te baken.
Nou, intussen, as jy kyk hier by wat ek uitgelig,
Die velde in hierdie lêer gaan dinge soos land kodes te wees,
poskodes, plekname, en dan, in een of ander vorm
of ander state en provinsies, gemeenskappe, en nog baie meer.
Trouens, ek het reeds hierdie lêer in advance afgelaai.
Laat my gaan voort en maak dit oop here-- us.text-- en, inderdaad, sal jy
sien as ek gaan na die lyn 16792 jy sal sien 'n paar rekords vir Cambridge,
Massachusetts en sy verskillende zip kodes.
Wat jy sien daar is ook die land, sommige getalle wat ek doen nie regtig
verstaan ​​nie, maar ook al die pad aan die regterkant,
sommige GPS coordinates-- breedtegraad en lengtegraad.
Dit is groot, want een van die funksies van Google Maps API
is die vermoë om op te spoor waar jy geografies
in terme van GPS koördinate.
>> Nou laat ons begin om uit te vind hoe om te begin vasmaak hierdie dinge saam.
Ons het vir jou 'n hele n klomp van die verspreiding kode,
sowel as MySQL databasis.
In werklikheid, as ek trek 'n phpMyAdmin met reeds ingevoer, as jy gou sal,
pset8.SQL, sal jy 'n MySQL tabel sien dat lyk soos hierdie, 'n ID-veld, land
kode, poskode, plek naam en nog baie meer.
Die tipes al daardie kolomme ek afgelei eenvoudig
deur die lees van die readme.text lêer hier dat gespesifiseerde
of 'n veld is 'n heelgetal, of varchar of die wil.
>> Dus het ons geskep daardie tafel vir jy en jou gegee die SQL opdragte
uit te voer wat aan die skep van tabel in jou eie databasis,
maar daar is eintlik geen data in dit nog nie.
Inteendeel, jy gaan te hê aflaai us.zip of enige land se ritssluiter
lêer van die URL daar.
En dan is jy gaan hê om te skryf 'n command line script in PHP dit is
gaan om oop te maak dat die teks lêer, Itereer oor sy lyne,
en dan vir elkeen van die lyne doen 'n insetsel
in daardie plaas tafel in jou MySQL databasis.
So aan die einde van hierdie proses, sal jy het dat script uiteindelik hardloop
net een keer in teorie.
In werklikheid sal jy waarskynlik loop dit 'n klomp van die tye
terwyl hy probeer om verskeie foute op te los.
>> Uiteindelik, jy gaan 'n te hê werklik 'n groot databasis met duisende
en duisende geografiese rye.
Dan is jy gaan om dit invoer te sit script opsy nadat dit werk
en jou databasis is lekker en korrek is, en dan
jy gaan om te beweeg op om werklik die implementering van die mashup self.
Die mashup gaan om te kyk 'n bietjie iets soos hierdie.
Op mashup.cs50.net, ons het 'n personeel oplossing
wat lyk 'n bietjie iets soos hierdie.
Inderdaad, as ek op die koerant ikoon vir Cambridge, Massachusetts,
jy sal 'n spin sien ikoon kortliks en dan
'n geordende lys, 'n kolpuntlys artikels
verwant aan Cambridge, Massachusetts.
As ek op Charlestown, Massachusetts,
Ek sal dieselfde vir daardie dorp sien.
En as ek op Watertown, Massachusetts,
daar dalk nie wees nie nuus van van Watertown,
sodat jy iets sien soos stadige nuus dag.
>> Nou, intussen, op top links is 'n paar bekende Google Maps kontroles
om jou te laat zoom uit, pan op, af, links en regs,
maar ook 'n soekkassie dat ons sit daar.
So as ek soek vir die waarheid te sê, Die enigste ander poskode ek weet,
90210, sal ons eintlik sien Beverly Hills, Kalifornië.
Wanneer gebruik dit lei my na Kalifornië en 'n hele klomp
van die nuus oor Beverly Hills.
Let nou ook, wat daar gebeur het.
As ek hierdie tyd soek vir 02138 of selfs Cambridge komma Massachusetts of 'n
variant daarvan, kry jy ' bietjie outovoltooiing dropdown.
Nou hierdie is die gebruik van 'n prop vir 'n biblioteek genoem jQuery,
en dat plugin genoem typeahead.
Ons het eenvoudig deur te lees die dokumentasie,
afgelaai van die Js lêer geïntegreerde in die verspreiding kode sodat jy
uiteindelik kan die kode skryf dat vul daardie dropdown menu met die motor
keuses of die motor voorstelle.
>> Nou is die verspreiding kode, al is, dat jy ontvang dit nie doen nie naastenby so baie.
Jy kry die Google Map ingebed, en jy die kontroles die top links,
en jy kry die soekkassie.
Maar as ek tik iets soos 02138, daar is geen plekke gevind nie.
So wat gaan wees Een van ons doelwitte hier.
Verder, as jy 'n stap rug en kyk na die kaart,
daar is geen nuus hoegenaamd nie.
Selfs as ek kliek en sleep, geen merkers eintlik
verskyn vir nuus, want dit uitdaging word gelaat vir jou so goed.
>> Kom ons neem 'n blik dan by die verspreiding kode.
Sodra jy afgelaai pset8.zip en uitgeryk
in jou vhost gids in die CS50 Appliance,
jy sal sien hierdie dopgehou hier binne.
Bin-- wat oor die algemeen staan ​​vir binêre vir uitvoerbare programs--
sluit, soos in pset7, sommige PHP lêers wat ander lêers insluit,
dan publiek, wat is die lêers wat nodig
om in die openbaar toeganklik wees aan 'n gebruiker met 'n leser.
Kom ons neem 'n blik in die bin gids, en ons sal
sien dat daar 'n lêer daar reeds genoem Invoer.
As ons oop dit met gedit, sal ons sien wat, ongelukkig, is daar nie veel
daar.
Al wat daar is, al is, is 'n kaboedel op top
wat bepaal wat interpreter-- in hierdie geval PHP--
moet gebruik word om werklik voer hierdie lêer.
Maar dan waar dit sê TODO is waar jy is
gaan 'n paar kode te skryf wat waarskynlik vereis dat die config
lêer wat in die sluit gids Soos ons reeds gedoen met PHP lêers.
En dan gaan jy moet een of ander manier oopmaak
us.text wat jy vermoedelik het reeds oopgemaak.
Dan gaan jy te hê Itereer oor die lyne in die lêer,
dalk deur sommige van die funksies voorgestel in die spesifikasie.
Dan voeg elk van dié lyne in MySQL databasis
deur die gebruik van die navraag funksie, wat ons het julle weer voorsien with--
of ten minste 'n variant daarvan in functions.php,
wat ons sal sien in net 'n oomblik.
>> Nou laat sluit invoer en gaan terug na ons gids en hierdie keer gaan in
sluit.
En as ek doen ls daar is, sal jy sien drie lêers hou Probleem Stel 7.
En laat ons neem 'n vinnige blik, byvoorbeeld by config.php.
Daar is minder lyne as voorheen, en dit
lyk hierdie lêer sluit constants.php en functions.php.
Ons gebruik 'n effens verskillende tegniek hierdie keer om werklik
spesifiseer dat hierdie lêers is relatief aan die huidige gids __ DIR__
verteenwoordig wat gids hierdie lêer, config.php, is self in.
So, dit is 'n meer eksplisiete manier spesifiseer
wat ander lêers wat jy wil om te vereis.
>> Nou as ek sluit hierdie lêer en oopmaak constants.php plaas,
jy sal 'n lêer te sien baie herinner vir Probleem Stel 7 se so goed, al is dit
met 'n ander databasis genaamd pset8.
Ten slotte, in functions.php, ons sal net een funksie te sien
hierdie tyd genoem navraag.
Dit is byna dieselfde, behalwe ons hanteer foute hierdie keer 'n bietjie
anders, maar dit is die gebruik is dieselfde as in die probleem stel sewe.
>> Nou laat ons gaan terug na ons pset8 gids, gaan in die openbaar, en daar
as ek dit doen ls, sal jy sien this-- articles.php, index.html, search.php,
en update.php-- alle lêers.
En dan is die css fonts, img, en JS gids hou pset7.
>> Kom ons neem 'n blik op index.html, wat is
gaan regtig die wees inskrywing punt aan die smashup.
Nou in index.html, sal jy 'n hele sien n klomp van die skakel elemente in die kop,
spesifiek vir bootstrap vir ons eie CSS gevolg deur 'n hele klomp van die script
tags vir dinge soos die kaarte, API self, 'n spesiale merker met die etiket
nut wat ons in die genoemde spesifikasie is beskikbaar vir jou,
jQuery self, bootstrap self, en 'n ander biblioteek
genoem underscore wat ons praat oor in die spec.
Underscore.js soos jquery.js is 'n JavaScript-biblioteek
wat 'n hele klomp van die funksie dat baie van die mense in die wêreld wens
bestaan ​​in JavaScript self.
So al hierdie is eintlik baie gewild.
Ons het ook genoem typeahead wat is die biblioteek wat
doen dit outovoltooiing dropdown en uiteindelik 'n skakel na ons eie JavaScript.
>> Intussen, en miskien Gelukkig, hierdie mashup
word aangedryf deur relatief min HTML hier aan die onderkant.
Kennis dat ons gespesifiseerde n div in ons liggaam van die klas-houer vloeistof.
Dit, per bootstrap se dokumentasie, net
beteken dat hierdie div gaan die te vul vertoonvenster of venster ten volle die leser.
>> Intussen, onder dat ons 'n div dit is geopen en onmiddellik gesluit
met die unieke ID van kaart doek.
Dit is nou van Google Kaarte dokumentasie
vir sy API, waardeur ek net nodig het om te 'n leë div waarin te spuit,
Uiteindelik, 'n werklike Google Maps.
Maar meer oor dit in net 'n bietjie.
>> Ten slotte, daar is 'n vorm binnekant van hier wat
implemente die teks boks aan links bo in ons koppelvlak vir die soek.
Kennis dat ons gebruik 'n bietjie van 'bootstrap
hier too-- dinge soos vorm-inline en vorm-groep.
Ons het die voormalige gegee unieke ID vorm.
En dan, uiteindelik, ek het eintlik ' 'n inset tipe, wat is redelik vertroud,
wie ID is q.
Net 'n konvensie.
Q vir query-- kan hê is iets genoem.
En dan is die plekhouer, Intussen is stad, provinsie,
en poskode wat jy kan onthou sien in ons mashup demo vroeër.
Kom ons sluit hierdie lêer.
>> Nou neem 'n blik op die PHP lêers wat wag en dan die JavaScript-lêers.
In ons PHP lêers, ons het reeds vir jou geïmplementeer word,
byvoorbeeld updates.
Update.php-- sal ons nie spandeer 'n groot bedrag van die tyd op here-- in 'n neutedop
is die lêer wat ons JavaScript-kode gaan
te kontak via AJAX dat asynchrone tegniek wat
gebou in JavaScript hierdie dae wat gaan toelaat om ons te vra update.php
vir meer inligting.
>> Spesifiek, enige tyd die gebruiker sleep die kaart
of 'n soektog wat spring die gebruiker na 'n ander plek,
ons JavaScript-kode, soos ons sal gou sien, is
gaan update.php te roep en vra vir 10 of so merkers
binne die vertoonvenster gebaseer op die GPS koördinate
van die boonste en onderste hoeke van die kaart.
Ons kan dan repopulate die kaart nou dat die gebruiker die skerm om verhuis
om te sien 10 waarskynlik nuwe merkers vir verskillende dorpe.
Intussen hierdie lêer is uiteindelik gaan 'n SQL navraag uit te voer
teen ons databasis tabel genaamd plekke wat
gaan diegene om terug te keer 10 of minder plekke.
>> Intussen, in articles.php, is 'n ander lêer ons in sy geheel geskryf het.
Dit is baie soortgelyk in gees Probleem Stel 7 se funksie ZOEKEN,
wat gekontak Yahoo Finansies vir jou.
Hierdie lêer kontakte Google Nuus vir jou, uiteindelik gryp
'n masjien-leesbare version-- in iets
genoem RSS lêerformaat van die nuus Cambridge of Beverly Hills
of wat ook al dorp wat jy het gesoek vir wat gebaseer is op wat geoparameter.
Ons ontleed wat RSS, wat net 'n tipe opmaak taal genoem XML,
en dan moet ons eintlik stuur dit terug aan die leser
en na jou JavaScript-kode, spesifiek, in 'n formaat genoem
Into JavaScript Object notasie.
Nou sal jy sien in die specification-- wys ons jou
hoe jy kan eintlik sien sommige van die into koms back--
dat hierdie funksie uiteindelik kan jy die opspring kieslyste vul so
dat wanneer jy kliek op 'n merker op die kaart
sien jy eintlik 'n hele klomp van die koeëls, wat elk
skakels na 'n artikel.
>> Nou kom ons neem 'n blik op 'n laaste PHP lêer wat gelukkig nie
veel gaan on-- net 'n mooi groot TODO.
Nou hierdie lêer verklaar 'n skikking met die naam plekke.
En dan uiteindelik afdrukke wat opgestel in into lêerformaat
mooi-druk dit net so dat dinge is makliker om te ontfout.
Ongelukkig, in die middel is daar hierdie TODO,
waarin gevra word vir jou die soek databasis vir plekke wat ooreenstem met 'n geo HTTP
parameter.
>> En, inderdaad, dit gaan een van jou challenges--
hierdie funksie om hier te implementeer sodat wanneer jy kontak hierdie lêer met
'n URL soos search. php? geo = iets, jou kode sal uiteindelik terug 'n into
verskeidenheid van al die plekke in jou databasistabel wat ooreenstem dat insette.
So as die gebruiker in Cambridge, jou lêer hier search.php
moet uiteindelik teruggaan n into verskeidenheid vir al die wedstryde vir Cambridge,
wat dalk in Massachusetts maar kan selfs nêrens anders wees.
>> Laastens, laat ons neem 'n blik op twee lêers wat statiese ultimately--
jou CSS-lêer en jou JavaScript-lêer.
As ek gaan in ons CSS gids, daar is 'n hele klomp van die lêers daar,
maar die meeste van hulle is biblioteke.
Ek gaan 'n blik te neem, spesifiek op styles.css,
wat is ons eie globale CSS dit is gaan hierdie hele mashup te stileer.
Ek sal laat dit aan jou deur te lees die kommentaar hierin, maar in 'n neutedop,
dit is die CSS wat verseker dat ons mashup, by verstek uit die boks,
lyk presies die manier waarop ons wil it-- met die kaart in te vul die oog hawe
en met die soek boks by die top links.
Ons het ook die vryheid van geneem stylizing dat typeahead dropdown
spyskaart 'n bietjie so goed.
>> Die belangrikste lêer miskien vir hierdie probleem stel
is hierdie laaste een, scripts.js.
Binnekant van jou JS gids is selfs meer lêers.
Almal van hulle is die biblioteek lêers behalwe vir hierdie een, scripts.js.
As ons oop hierdie up, laat ons ons finale toer deur die funksies wat
is gebou in die lêer vir jou en oproep aandag
aan die Todos wat voorlê.
>> Op die top van hierdie lêer, is drie globale veranderlikes.
Een vir 'n kaart, wat gaan 'n verwysing na ons Google kaart.
Jy kan dink dit soort van soos 'n wyser.
Intussen het ons 'n ander globale veranderlike
genoem inligting, wat blyk te wees, stoor die terugkeer waarde van 'n oproep
nuwe google.maps.InfoWindow.
JavaScript ondersteun voorwerpe wat is baie soortgelyk in gees stutte.
En wat hierdie lyn vir ons doeleindes doen
is 'n nuwe inligting venster in die geheue en dan
hou om 'n verwysing daartoe in 'n veranderlike genoem Info.
En in tussen daardie, Intussen is wat blyk
te wees om 'n leë JavaScript skikking met die naam merkers.
Al dié koerant ikone, of jy dalk 'n ander ikoon heeltemal kies,
gaan gestoor moet word uiteindelik in hierdie reeks
sodat ons kan baie maklik voeg die kaart en verwyder hulle uit die kaart.
>> Nou laat rol af 'n bietjie en gefluit
deur die kode wat gaan wees uitgevoer sodra die DOM of dokument
voorwerp model of die bladsy self is gereed.
Onthou dat hierdie sintaksis hier eenvoudig spesifiseer
dat die volgende kode moet slegs uitgevoer word
wanneer die leser het klaar laai alles anders.
>> Ons eerste verklaar hele klomp van style,
wat uiteindelik stylizing die kaart soos per die spec.
Ons het toe verklaar hele klomp van opsies,
wat verder aan te pas die Google kaart dat ons oor te sluit.
Ons gebruik dan 'n bietjie van jQuery kode, wat in 'n bietjie meer detail verduidelik word
in die spec, aan te gryp daardie element, kaart-doek
dat ons so uniek geïdentifiseer.
En dan hierdie lyn hier is wat blyk te mettertyd gee ons
'n Google kaart binnekant van ons eie aansoek,
stoor 'n verwysing daarna in daardie veranderlike genoem kaart.
>> Ten slotte, hier is ons registreer wat is bekend as 'n luisteraar.
Dink back-- manier, manier back-- te week nul in CS50
wanneer ons kyk na Scratch en sy steun deur 'n wandeling
deur vir dinge genoem gebeure en uitsendings.
Jy kan nie gebruik het dit self, maar dit is
'n meganisme waardeur 'n leser in hierdie geval
kan ons aandag kry wanneer dit gereed om te eintlik 'n paar kode voer.
In hierdie geval, dit gaan om te luister na die kaart vir 'n gebeurtenis genaamd idle.
Dit beteken dat die leser het klaar laai die Google kaart.
Op hierdie punt 'n funksie genoem instel moet uiteindelik
word uitgevoer.
Daardie funksie, instel, ons sal sien, is geskryf deur ons.
>> Nou hier is 'n funksie wat, ongelukkig,
is net 'n TODO add merker.
Per die spec. jy gaan nodig die kode wat eintlik skryf
voeg 'n marker-- of dit lyk soos 'n koerant, of 'n duim ryg,
of iets else-- die Google kaart.
Hier is nou dat funksie genoem instel.
Ek sal laat dit aan jou om te lees deur dit in meer detail,
maar besef dat ons by te voeg 'n klomp meer Luisteraars
sodat ons kan kode voer wanneer die gebruiker kliek op en sleep die kaart.
Ons het ook 'kode hier dat initialisatie dat typeahead plugin
sodat die dropdown spyskaart werk eintlik.
>> Maar laat ons fokus op net 'n paar plekke hierin.
Spesifiek, om dit te doen hier.
Ek sal stel om die aanlyn dokumentasie en die spesifikasie
hoe om in hierdie TODO vul.
Maar in 'n neutedop, hierdie biblioteek typeahead kan jy om te slaag
in wat algemeen bekend staan ​​as 'n sjabloon, wat het 'n paar veranderlike plekhouers
baie soortgelyk in gees printf se%. * s.
Maar in hierdie geval, die sjabloon per die spec
kan u spesifiseer wat veranderlikes wat jy wil hê
te spuit uit data wat kom terug van iets soos die PHP
lêers wat jy geskryf het wat afgee into uitset.
>> Nou hier besef dat ons luister vir typeahead keuses
wanneer die gebruiker eintlik doen 'n soektog en kies 'n waarde.
Dit is hoe ons is eintlik gaan luister vir daardie
en 'n paar kode voer as 'n resultaat.
Toe ons voortgaan om te instel die mashup net 'n bietjie.
En, uiteindelik, ons noem hierdie funksie update.
Dit updates die merkers op die skerm.
Meer oor wat in net 'n oomblik.
Intussen is daar 'n paar klein funksies in hier.
Waarvan een is hideInfo wat eenvoudig sluit die InfoWindow.
'N Ander funksie hier, wat uiteindelik sal nie te lank wees nie, verwyder merkers.
Dit gaan ongedaan te maak wat jou add merker funksie doen.
En dan hier is soek.
En hierdie een is interessant, want ons het die JavaScript-kode wat geskryf
gaan om te praat met search.php op die bediener en kry terug wat reaksie.
>> Jy, natuurlik, sal steeds moet search.php te implementeer,
maar ons het geïmplementeer om die JavaScript-kode wat
gaan eintlik hanteer presteer soek van dié teks boks.
In die besonder, kennisgewing dat hierdie funksie hier,
soek, nie noem search.php deur 'n metode genoem
kry into, wat ons gesien het in lesing.
En die sintaksis hier is 'n bietjie anders
vanaf lesing in dat ons met behulp van jQuery sogenaamde belofte koppelvlak.
Meer oor wat in die spec.
Dit beteken eenvoudig vir ons doeleindes nou dat daar
is twee spesiale funksies wat ons nodig het om te bel met dot-notasie
hier onmiddellik na die roeping kry into.
Een gedoen genoem.
Een is genoem misluk.
Jy kan dink van hierdie as die sukses hanteerder
en die mislukking hanteerder net in geval iets verkeerd gaan.
>> Nou laat ons kyk na die laaste paar funksies in hierdie lêer.
Hier is 'n funksie genoem showInfo, wat
toon inligting in een van daardie bietjie info vensters wat
verskyn wanneer die gebruiker 'n merker kliek.
Hier is verder dat update funksie
dat ons vir jou geïmplementeer.
Dit bepaal die grense van die kaart.
Wat is die GPS koördinate van sy noordooste en suidweste hoeke hier.
Ons het voorberei sommige HDP parameters hier en dan verby hulle uiteindelik
te update.php, wat ons het ook geïmplementeer vir jou.
Wat kry uiteindelik terug sommige into uit die lêer genaamd update.php
en verwyder dan enige merkers op die skerm
en dan herhaal oor die data wat is terug te kom
van update.php, wat weer is net 'n into skikking.
En dan is dit uiteindelik voeg 'n merker vir elk van die plekke, hantering mislukking
of foute wat dalk baie goed gebeur.
>> Nou net om te gee jou 'n voorsmakie van hoe jy kan gaan oor die opsporing van hierdie projek,
besef dat ek in oopgemaak het bevorder hierdie blad hier om hierdie URL,
pset8 / articles.php? geo = 02138.
Nou, weer, artikels oor PHP ons geïmplementeer vir jou
so dit is nie soseer wat jy sal gebruik word om
te ontfout, maar eerder die tegniek.
Kennis dat ek gesoek Cambridge se poskode hier,
en ek het terug gekry, inderdaad, 'n into verskeidenheid van into voorwerpe binnekant van wat
is twee keys-- skakel en titel.
>> So hierdie funksie werk reeds vir jou.
Maar hierdie tegniek van die hand gaan na 'n URL soos hierdie vir iets soos
search.php? geo = Cambridge of 02138 of wat die gebruiker getik in behoort
bewys van onskatbare waarde as jy self probeer om uit te vind presies of waarom
search.php werk of nie.
>> Uiteindelik dan, jy het 'n paar Todos voor jou.
Jy gaan na die eerste implemente dat die invoer script wat
lees in us.text in jou databasis.
Jy dan gaan nodig search.php te implementeer
sodat dit optree presies soos gespesifiseer.
Jy dan gaan wil om te fokus op scripts.js
en uiteindelik implemente diegene paar Todos,
insluitend instel en dat sjabloon,
voeg, opsieners verwyder, en dan laaste, maar nie die minste nie, die een
persoonlike touch.
>> Sodra jy jou mashup werk baie soos ons s'n, is die doel aan die hand
is vir jou om by te voeg 'n persoonlike raak aan jou mashup,
of dit nou estetiese of funksionele.
Neem die mashup ooit so effens na die volgende vlak.
So lank as wat jy druk jouself buite jou bekendheid met die spec self
en haal een tegniek nuwe, selfs al is dit net
iets estetiese soos die verandering van die uitleg van die kaart wat jy gebruik,
die omvang wat ons verwag tevrede sal wees.
Dit is dan Probleem Stel 8 Datavleg.
Bly ingeskakel vir meer in die spesifikasie en die beste van geluk
aanpak van hierdie, jou laaste CS50 probleem stel ooit.
>> [Speel van musiek]