1 00:00:00,000 --> 00:00:05,040 2 00:00:05,040 --> 00:00:08,440 >> SAM LEVATICH: Velkommen til seksjon for denne uken. 3 00:00:08,440 --> 00:00:10,040 Jeg er ikke Andi. 4 00:00:10,040 --> 00:00:14,590 Andi har blitt syk denne dagen, og jeg har liksom kalt i siste øyeblikk 5 00:00:14,590 --> 00:00:15,700 å overta. 6 00:00:15,700 --> 00:00:20,920 Det er influensasesongen, så sørg for at du holder seg rusfri, vaske hendene, 7 00:00:20,920 --> 00:00:24,800 og spise sunt slik at du også, er ikke sengeliggende. 8 00:00:24,800 --> 00:00:26,870 >> Men uten videre larm, la oss komme i gang. 9 00:00:26,870 --> 00:00:29,970 I dag skal vi snakke om PHP litt bit-- hvordan 10 00:00:29,970 --> 00:00:33,900 PHP er relatert til HTML, hvor det vedrører CSS, og noen av web 11 00:00:33,900 --> 00:00:36,100 ting du gjorde på den siste oppgaven. 12 00:00:36,100 --> 00:00:37,930 Vi kommer til å snakke litt om SQL 13 00:00:37,930 --> 00:00:41,360 og hvordan du kan jobbe med databaser, som er en ganske viktig del av P 14 00:00:41,360 --> 00:00:43,650 satt 8-- P satt 7. 15 00:00:43,650 --> 00:00:44,480 P satt 7. 16 00:00:44,480 --> 00:00:48,400 >> Og så skal vi snakke litt litt om hvordan view kontrollere fungerer 17 00:00:48,400 --> 00:00:54,640 og hvorfor det er en filosofi bak noen moderne nettsider og annerledes design. 18 00:00:54,640 --> 00:00:58,760 Ganske mye mye typer apps og programmer du kan sende 19 00:00:58,760 --> 00:01:01,120 bruker denne modellen view controller rammeverk, 20 00:01:01,120 --> 00:01:02,890 at du skal bruke i P satt 7, så jeg skal 21 00:01:02,890 --> 00:01:05,220 snakke litt om hvorfor det er blitt 22 00:01:05,220 --> 00:01:07,970 populært, hvorfor det er viktig og hyggelig. 23 00:01:07,970 --> 00:01:12,052 Og så skal jeg endelig gå videre til noen tips om å takle P satt 7. 24 00:01:12,052 --> 00:01:13,760 Og hvis vi har tid igjen på slutten, 25 00:01:13,760 --> 00:01:17,320 vi kan faktisk gjøre noen jobbe med det sammen. 26 00:01:17,320 --> 00:01:20,380 >> Så, PHP. 27 00:01:20,380 --> 00:01:23,790 Faktisk har du kanskje lagt merke til dette-- du egentlig ikke trenger å dykke inn it-- 28 00:01:23,790 --> 00:01:27,880 men P satt seks hadde noen PHP kode som var på gang. 29 00:01:27,880 --> 00:01:34,710 Og fordi PHP er et C-lignende språk, PHP, i motsetning til HTML og CSS, 30 00:01:34,710 --> 00:01:39,030 er et programmeringsspråk, mens HTML og CSS er statiske. 31 00:01:39,030 --> 00:01:44,050 De er kodespråk som omhandler med stil og visuell layout. 32 00:01:44,050 --> 00:01:46,230 PHP er the real deal. 33 00:01:46,230 --> 00:01:51,590 >> PHP har løkker, det har conditions-- alle at ting som er gøy om C. 34 00:01:51,590 --> 00:01:56,190 Den har et par ting som er litt litt bedre enn C, som vi vil se, 35 00:01:56,190 --> 00:01:59,760 men jeg tror den enkleste måten å snakke om PHP er bare å dykke i. 36 00:01:59,760 --> 00:02:04,087 Så jeg kommer til å gå rett inn i IDE på dette punktet. 37 00:02:04,087 --> 00:02:06,170 Det første vi skal å gjøre er å se egentlig 38 00:02:06,170 --> 00:02:10,169 en liten bit på noen av PHP-kode som var i P satt seks. 39 00:02:10,169 --> 00:02:13,600 Så måten vi gjør at-- før, slik at vi fikk kjøre 40 00:02:13,600 --> 00:02:18,550 serveren for apparatet var at vi måtte type-- 41 00:02:18,550 --> 00:02:21,750 enten bruke implementeringen eller personalet implementering 42 00:02:21,750 --> 00:02:27,059 av server.c ved å gå inn i katalogen og kjører server.c med enten ingen 43 00:02:27,059 --> 00:02:30,100 arguments-- så bare kalle det på lokale verten, som er det du sannsynligvis 44 00:02:30,100 --> 00:02:31,849 gjorde det meste av tid-- og deretter fôre det 45 00:02:31,849 --> 00:02:35,380 en directory-- med som å bruke som sin rot 46 00:02:35,380 --> 00:02:38,310 hvor nettsiden ville være drevet, i utgangspunktet. 47 00:02:38,310 --> 00:02:42,180 >> Denne uken for P satt 7, som stor som vår kode for server.c 48 00:02:42,180 --> 00:02:47,580 er, det er folk som allerede har skrevet disse fine tingene over på CS50 49 00:02:47,580 --> 00:02:49,630 som har en liten bit mer funksjonalitet, 50 00:02:49,630 --> 00:02:52,920 en server program som er i stand for å håndtere en litt mer 51 00:02:52,920 --> 00:02:56,350 av de vanskelighetene som vi vil se i både P satt 7 og P satt åtte. 52 00:02:56,350 --> 00:03:01,410 Og måten at du starter opp Serveren er ved bare å skrive, "apache50." 53 00:03:01,410 --> 00:03:03,960 >> Og før du gjør noe, du vil være sikker 54 00:03:03,960 --> 00:03:06,070 at Apache 50 er ikke allerede kjører som det er 55 00:03:06,070 --> 00:03:08,130 på min maskin, som jeg gjorde for å teste den. 56 00:03:08,130 --> 00:03:10,320 Og du gjør det ved å ringe apache50. 57 00:03:10,320 --> 00:03:14,070 Stoppe, og du vil se at det hindrer webserveren, hvis du kan se det 58 00:03:14,070 --> 00:03:16,340 på bunnen av terminalen vinduet. 59 00:03:16,340 --> 00:03:21,090 Og da bare for å starte, vi er kommer til å kalle "apache50 starte." 60 00:03:21,090 --> 00:03:23,150 Og så skal vi å mate den en katalog. 61 00:03:23,150 --> 00:03:26,950 >> Nå, fordi vi ønsker å se på noen av P satt 6-kode 62 00:03:26,950 --> 00:03:32,850 at vi hadde gjennomført, jeg faktisk kopiert litt av P 63 00:03:32,850 --> 00:03:37,090 satt seks kode inn i min egen mappe, som du kan se til venstre der. 64 00:03:37,090 --> 00:03:40,170 Det kalles "SeCtIoN8" med store bokstaver 65 00:03:40,170 --> 00:03:44,510 fordi jeg er så spent å bli live-streamet i dag. 66 00:03:44,510 --> 00:03:47,330 >> Så hvis vi kjører dette, bør det alt fungerer ganske effektivt. 67 00:03:47,330 --> 00:03:52,350 Den sier, OK, er vår side nå tilgjengelig på adressen til IDE, 68 00:03:52,350 --> 00:03:57,710 utgangspunktet, som er hva du brukte akkurat som det var i P satt 7-- P satt seks. 69 00:03:57,710 --> 00:04:00,899 Alle mine indekser er én indeksen i dag. 70 00:04:00,899 --> 00:04:02,940 Så vi kan gå til den adresse, hvis du vil huske, 71 00:04:02,940 --> 00:04:05,710 bare ved å klikke på denne lille -knappen øverst til høyre. 72 00:04:05,710 --> 00:04:14,200 >> Og du vil huske denne koden, som skjedde da du gikk inn hello.php. 73 00:04:14,200 --> 00:04:18,000 Og hva koden er utformet for å gjør er når du har skrevet inn et navn 74 00:04:18,000 --> 00:04:20,550 her-- hvis du sier Sam fordi det er min name-- 75 00:04:20,550 --> 00:04:23,620 og jeg klikker si hei, når vi gikk til neste side, 76 00:04:23,620 --> 00:04:25,270 det navnet skulle bli vist. 77 00:04:25,270 --> 00:04:28,550 Det vil si, "Hei, Sam" eller "Hei," det navnet du 78 00:04:28,550 --> 00:04:32,470 legger i det, selv om vi gikk til en helt ny nettside. 79 00:04:32,470 --> 00:04:36,610 >> Og dette er den typen ting at PHP kan gjøre for deg. 80 00:04:36,610 --> 00:04:42,840 PHP er i stand til å overføre data mellom to nettsider. 81 00:04:42,840 --> 00:04:44,390 Dette er en helt annen side. 82 00:04:44,390 --> 00:04:46,990 Du vil se tittelen er "hallo" her. 83 00:04:46,990 --> 00:04:49,080 Faktisk har de samme tittel, men jeg 84 00:04:49,080 --> 00:04:52,560 lover de er forskjellige web sider hvis vi ser på kilden. 85 00:04:52,560 --> 00:04:55,890 Og du kan passere data som er inn i dette tekstfeltet 86 00:04:55,890 --> 00:04:59,830 du sender det til neste side som blir kalt opp, 87 00:04:59,830 --> 00:05:02,490 og deretter at data er i stand til å være der i sin nåværende form. 88 00:05:02,490 --> 00:05:04,810 >> Nå har vi ennå ikke har implementert dette selv, noe som 89 00:05:04,810 --> 00:05:08,710 er det vi kommer til å gjøre akkurat nå for å liksom få en smak for hvordan PHP fungerer, 90 00:05:08,710 --> 00:05:15,070 men nøkkelen ideen er at PHP-- du kan liksom tenke på det som en funksjon. 91 00:05:15,070 --> 00:05:18,570 Noe som PHP kan la deg vet er at det kan ta parametere 92 00:05:18,570 --> 00:05:24,710 at du innspill til en HTML-side gjennom bruk av PHP og former, 93 00:05:24,710 --> 00:05:29,960 og det kan passere dem som parametere til neste side at det lastes opp. 94 00:05:29,960 --> 00:05:35,110 >> I dette tilfellet, vi laste opp dette side med "Si hei" -knappen. 95 00:05:35,110 --> 00:05:38,960 Men for nå, jeg faktisk slettet noe av den koden 96 00:05:38,960 --> 00:05:44,850 i hello.php som ble kjørt som faktisk var å vise "hallo, 97 00:05:44,850 --> 00:05:49,680 verden "eller" hallo, Sam "eller "Hei," hva var bare inngang. 98 00:05:49,680 --> 00:05:53,620 Så for akkurat nå, vi er kommer til å gjøre det, i utgangspunktet. 99 00:05:53,620 --> 00:05:56,570 Vi kommer til å gjenskape den og også legge litt mer funksjonalitet, 100 00:05:56,570 --> 00:06:00,210 gjøre litt mer med det, se hva PHP er virkelig i stand til. 101 00:06:00,210 --> 00:06:04,870 >> Så først, la oss snakke om denne filen, hello.php. 102 00:06:04,870 --> 00:06:07,440 Så hvis vi zoomer inn en Litt bit-- og nå er jeg 103 00:06:07,440 --> 00:06:10,520 liksom prøve å bla alle måten around-- der vi går. 104 00:06:10,520 --> 00:06:14,220 Du vil se det heter hello.php, men syntaksen til det 105 00:06:14,220 --> 00:06:16,880 ser ut som en HTML-fil. 106 00:06:16,880 --> 00:06:20,380 Dette er fordi faktiske PHP i denne filen 107 00:06:20,380 --> 00:06:25,220 er alle fast mellom disse spørsmålstegn-caret blokker. 108 00:06:25,220 --> 00:06:28,610 Alt rett her anses PHP-kode. 109 00:06:28,610 --> 00:06:32,040 >> Og du vil legge merke til at når jeg gjorde en kommentar, 110 00:06:32,040 --> 00:06:35,320 vil du se det velkjente to skråstreker. 111 00:06:35,320 --> 00:06:38,440 Og hvis du husker, i HTML, hvis jeg skriver en kommentar, 112 00:06:38,440 --> 00:06:42,540 det ser noe nærmere dette, noe som er en kommentar i HTML. 113 00:06:42,540 --> 00:06:46,570 Så egentlig alt mellom disse to vinkelparenteser 114 00:06:46,570 --> 00:06:50,060 Nå er PHP-kode, som er reflektert i det faktum 115 00:06:50,060 --> 00:06:53,270 at denne lille kommentaren symbol blir forvandlet til en kommentar. 116 00:06:53,270 --> 00:06:58,420 >> Så hver gang du skriver PHP-kode, selv Hvis det er ingen HTML kode utenfor den, 117 00:06:58,420 --> 00:07:02,720 det er alltid kommer til å være omsluttet av disse vinkelparenteser 118 00:07:02,720 --> 00:07:04,080 med spørsmålstegn. 119 00:07:04,080 --> 00:07:08,260 Du kan liksom tenke på it-- hvordan alle av koden som kjørte i dine C-programmer 120 00:07:08,260 --> 00:07:13,950 var vedlagt i en int main, ugyldig klammeparentes, end krøllete brace uttalelse. 121 00:07:13,950 --> 00:07:17,100 Og du vil se klammeparentes i PHP, også, men dette er liksom 122 00:07:17,100 --> 00:07:20,490 som den viktigste metoden for PHP. 123 00:07:20,490 --> 00:07:25,630 >> Så nå, hvordan kan vi gjøre noe i PHP? 124 00:07:25,630 --> 00:07:29,190 Nå er PHP et programmerings språk som er veldig C-aktig, 125 00:07:29,190 --> 00:07:30,970 men den opererer på nettet. 126 00:07:30,970 --> 00:07:33,270 Så en ting som du immediately-- én 127 00:07:33,270 --> 00:07:38,130 av de første tingene du virkelig gjorde med C ble du skrevet ting ut, ikke sant? 128 00:07:38,130 --> 00:07:42,290 Så i C vi gjorde det med en printf funksjon. 129 00:07:42,290 --> 00:07:46,430 Vi ga det en streng, sannsynligvis med en ny linje, 130 00:07:46,430 --> 00:07:49,850 og da vi avsluttet det med et semikolon. 131 00:07:49,850 --> 00:07:53,790 >> Så den måten at vi kommer til å gjøre det i PHP-- fordi det er ikke helt printf. 132 00:07:53,790 --> 00:07:55,940 Det er en liten bit av forskjellig syntaks. 133 00:07:55,940 --> 00:08:02,580 Måten vi skrive ting ut i PHP er vi sier, "echo Hei" 134 00:08:02,580 --> 00:08:04,180 eller "echo" noen ord. 135 00:08:04,180 --> 00:08:09,830 Og som har den virkning av å gjøre printf med en streng, "hallo". 136 00:08:09,830 --> 00:08:11,990 Og det legger den nye linjen til den. 137 00:08:11,990 --> 00:08:16,000 >> Så la oss nå gjøre sure-- Jeg skal zoome ut igjen litt bit-- 138 00:08:16,000 --> 00:08:18,250 La oss sørge for at at koden fungerer 139 00:08:18,250 --> 00:08:21,030 fordi det kan meget godt være en feil i denne koden 140 00:08:21,030 --> 00:08:22,880 at vi blir nødt til å takle. 141 00:08:22,880 --> 00:08:25,860 Slik at serveren kjører allerede. 142 00:08:25,860 --> 00:08:30,630 Så hvis vi rulle tilbake ned til bunnen, yup, er serveren fortsatt kjører. 143 00:08:30,630 --> 00:08:34,510 Så hvis vi bare trykk på denne litt rett her-- 144 00:08:34,510 --> 00:08:37,620 welcome-- vi bør get-- stor. 145 00:08:37,620 --> 00:08:39,930 >> Vi fortsatt har den familiar "Si hei" dialog, 146 00:08:39,930 --> 00:08:45,750 men når jeg skriver inn "hei," vi får se at teksten "hei" var faktisk 147 00:08:45,750 --> 00:08:50,080 skrives ut, som er nøyaktig som vi forventet fordi ekko i PHP 148 00:08:50,080 --> 00:08:53,190 er akkurat som en printf uttalelse. 149 00:08:53,190 --> 00:09:01,410 Så tilbake til koden, hvordan i P satt seks gjorde fordelingen koden du er gitt 150 00:09:01,410 --> 00:09:05,920 gjøre det slik at PHP ville utgang ting som du 151 00:09:05,920 --> 00:09:07,920 skrevet i på forrige skjermen? 152 00:09:07,920 --> 00:09:10,350 >> Og for å liksom undersøke hvorfor det skjer, er vi 153 00:09:10,350 --> 00:09:15,510 kommer til å gå inn i index.html, som er den opprinnelige filen, filen 154 00:09:15,510 --> 00:09:18,710 dukker opp på denne skjermen med "Si hei" -knappen. 155 00:09:18,710 --> 00:09:20,950 Du legger merke til at det er alle de klassiske tingene 156 00:09:20,950 --> 00:09:26,910 vi har kommet til å forvente fra HTML slik som disse tingene, disse kodene vedlagt 157 00:09:26,910 --> 00:09:31,080 i vinkelparenteser, som PHP men uten spørsmålstegn, 158 00:09:31,080 --> 00:09:34,650 noe som indikerer en spesiell ting til HTML. 159 00:09:34,650 --> 00:09:36,895 Vi har tittel, som er "hei." 160 00:09:36,895 --> 00:09:41,010 Og du vil merke at vi så, tittelen er "hallo" i begge tilfeller. 161 00:09:41,010 --> 00:09:43,260 La oss endre dette å "si" bare slik at vi 162 00:09:43,260 --> 00:09:48,170 kan skille oss selv hvor vi er. 163 00:09:48,170 --> 00:09:49,600 >> Men vi har fått en kropp. 164 00:09:49,600 --> 00:09:52,690 Og så interessant bit, bit som dukker opp i HTML, 165 00:09:52,690 --> 00:09:54,530 er denne formen element. 166 00:09:54,530 --> 00:09:56,370 Og så har vi fått en form. 167 00:09:56,370 --> 00:09:58,330 Og dette er nøkkelen. 168 00:09:58,330 --> 00:10:00,530 Dette er hvordan vi jobber med PHP. 169 00:10:00,530 --> 00:10:05,790 Handlingen parameter av skjemaet sier at hello.php 170 00:10:05,790 --> 00:10:09,310 er det vi kommer til å sende verdiene i dette skjemaet til. 171 00:10:09,310 --> 00:10:13,830 Det er der vi kjører parametrene, så å si. 172 00:10:13,830 --> 00:10:18,680 >> Du vil merke en annen ting her er at metoden er "bli". 173 00:10:18,680 --> 00:10:24,450 Det er to primære metoder som vil 174 00:10:24,450 --> 00:10:28,750 være å bruke PHP for å overføre data mellom websites-- nettsider, 175 00:10:28,750 --> 00:10:30,500 rather-- i dette oppdraget. 176 00:10:30,500 --> 00:10:34,070 Og disse metodene er "få" og "post". 177 00:10:34,070 --> 00:10:37,010 Det er noen subtile Forskjellene mellom get og post 178 00:10:37,010 --> 00:10:40,520 at vi vil få into-- vi vil "komme" inn, hvis du vil. 179 00:10:40,520 --> 00:10:44,030 >> Men for alle praktiske og formål, får og post 180 00:10:44,030 --> 00:10:47,120 er begge bare måter som du sende parametre 181 00:10:47,120 --> 00:10:49,500 med litt ulike henrettelser. 182 00:10:49,500 --> 00:10:53,500 For nå kommer vi til å bruke få fordi få var det som ble brukt opprinnelig 183 00:10:53,500 --> 00:10:57,340 i PHP-filen fra P satt seks. 184 00:10:57,340 --> 00:11:00,850 Og faktisk, hvis vi går inn og se før vi har redigert noe annet, 185 00:11:00,850 --> 00:11:03,090 Jeg kommer til å si hei to-- hva heter du? 186 00:11:03,090 --> 00:11:03,812 >> PUBLIKUM: Elliot. 187 00:11:03,812 --> 00:11:04,770 SAM LEVATICH: Åh, gosh. 188 00:11:04,770 --> 00:11:05,600 Jeg vet ikke hvordan å stave det. 189 00:11:05,600 --> 00:11:06,766 Kan du stave det for meg? 190 00:11:06,766 --> 00:11:08,710 PUBLIKUM: E-L-L-I-O-T. 191 00:11:08,710 --> 00:11:09,720 >> SAM LEVATICH: I-O-T? 192 00:11:09,720 --> 00:11:10,440 >> PUBLIKUM: Yeah. 193 00:11:10,440 --> 00:11:10,960 >> SAM LEVATICH: Perfect. 194 00:11:10,960 --> 00:11:11,210 OK. 195 00:11:11,210 --> 00:11:12,751 Jeg antar at jeg visste hvordan å stave det. 196 00:11:12,751 --> 00:11:13,510 Beklager for det. 197 00:11:13,510 --> 00:11:16,560 Men hvis vi sier "Si hei," det er ikke det er ikke til å dukke opp på skjermen 198 00:11:16,560 --> 00:11:18,476 ennå fordi vi endret koden litt. 199 00:11:18,476 --> 00:11:21,290 Men hvis vi gjør "Si hei" - OK, så "hallo" er her. 200 00:11:21,290 --> 00:11:24,137 Men hvis vi tar en nærmere se på nettadressen selv, 201 00:11:24,137 --> 00:11:26,220 vi vil se at det ender med hello.php? name = Elliot. 202 00:11:26,220 --> 00:11:30,980 203 00:11:30,980 --> 00:11:37,180 >> Så dette er en måte å kommunisere til neste nettside 204 00:11:37,180 --> 00:11:39,240 parametrene som vi har passert. 205 00:11:39,240 --> 00:11:40,870 Vi sa name = Elliot. 206 00:11:40,870 --> 00:11:46,290 Og det er til syvende og sist hvordan P satt 6 vist den variabelen som vi passerte i 207 00:11:46,290 --> 00:11:47,520 gjennom skjemaet. 208 00:11:47,520 --> 00:11:51,470 Og dette er noe som er særegen for en GET forespørsel. 209 00:11:51,470 --> 00:11:57,480 En get forespørsel gjør parametrene kjent i nettadressen til nettstedet. 210 00:11:57,480 --> 00:12:01,190 >> Og du vil huske, også, i P satt seks som du 211 00:12:01,190 --> 00:12:04,450 måtte skrive en funksjon som jobbet med det faktum 212 00:12:04,450 --> 00:12:09,700 at denne søkestrengen kunne eksistere etter en fil. 213 00:12:09,700 --> 00:12:14,684 Det kan være et spørsmålstegn etterfulgt ved utgangspunktet vilkårlig antall tegn. 214 00:12:14,684 --> 00:12:16,350 Og det er akkurat det som skjer her. 215 00:12:16,350 --> 00:12:21,280 Og grunnen til at du måtte analysere det i implementeringen av server.c i P 216 00:12:21,280 --> 00:12:27,570 satt seks er slik at du kan fortelle PHP-kode som navnet = Elliot. 217 00:12:27,570 --> 00:12:30,460 Du trengte å være i stand til å analysere det ut av URL 218 00:12:30,460 --> 00:12:35,900 slik at PHP aktuelle filen visste hva det var å gjøre med. 219 00:12:35,900 --> 00:12:39,350 >> Så forhåpentligvis dette gir motivasjon til å server.c 220 00:12:39,350 --> 00:12:43,900 nå som vi går videre utsiden av C i PHP. 221 00:12:43,900 --> 00:12:48,240 Så la oss faktisk fokusere på å få tilgang til ting gått gjennom en get forespørsel nå 222 00:12:48,240 --> 00:12:48,880 På dette punktet. 223 00:12:48,880 --> 00:12:50,157 Jeg kommer til å spare dette. 224 00:12:50,157 --> 00:12:51,240 Vi gjorde ikke endre noe. 225 00:12:51,240 --> 00:12:56,080 Det ser ut som vi har fått et inntastingsfelt. 226 00:12:56,080 --> 00:12:58,550 >> Vi sette noen egenskaper, som vi kan gjøre en HTML. 227 00:12:58,550 --> 00:12:59,550 Dette er enkle ting. 228 00:12:59,550 --> 00:13:00,580 Vi trenger ikke disse. 229 00:13:00,580 --> 00:13:03,750 Men vi har fått autofullføring av, som i utgangspunktet says-- du vet, 230 00:13:03,750 --> 00:13:05,710 når du skriver ting inn i nettet, noen ganger 231 00:13:05,710 --> 00:13:07,355 den prøver å fylle det inn for deg. 232 00:13:07,355 --> 00:13:08,230 Så det er en fin ting. 233 00:13:08,230 --> 00:13:11,700 Vi ønsker å slå den av til dette formålet. 234 00:13:11,700 --> 00:13:13,970 Det var en CS50 beslutning. 235 00:13:13,970 --> 00:13:15,640 Så vi kan slette det hvis vi ønsket. 236 00:13:15,640 --> 00:13:19,510 >> Autofokus bare stikker markøren i form helt i begynnelsen. 237 00:13:19,510 --> 00:13:21,060 Igjen, ikke så viktig. 238 00:13:21,060 --> 00:13:26,220 >> Men name = "navn" - det er litt vanskelig fordi det er navn og navn. 239 00:13:26,220 --> 00:13:28,730 Men vi kunne har endret dette til noe annet. 240 00:13:28,730 --> 00:13:30,563 Og faktisk, det er hva vi skal gjøre akkurat nå. 241 00:13:30,563 --> 00:13:34,830 Vi vil si "person", som er liksom som navn 242 00:13:34,830 --> 00:13:36,790 hvis en person er definert av deres navn. 243 00:13:36,790 --> 00:13:41,480 >> Så la oss lukke denne, åpne opp vår hjemmeside 244 00:13:41,480 --> 00:13:46,110 siden serveren vår er fremdeles i gang Apache 50, og vi vil si, hei, her 245 00:13:46,110 --> 00:13:47,200 Elliot igjen. 246 00:13:47,200 --> 00:13:48,460 Hvorfor ikke? 247 00:13:48,460 --> 00:13:49,220 Hallo. 248 00:13:49,220 --> 00:13:52,880 Og hvis vi går opp her, vi får se så i stedet for navn = Elliot, 249 00:13:52,880 --> 00:13:55,200 det står person = Elliot. 250 00:13:55,200 --> 00:14:00,060 Og det er et direkte resultat av det faktum at vi nettopp endret name = "person." 251 00:14:00,060 --> 00:14:06,840 >> Så i en inngang element et HTML-skjema, navnefeltet 252 00:14:06,840 --> 00:14:10,590 er identifikatoren for den parameter som blir vedtatt. 253 00:14:10,590 --> 00:14:14,250 Det er som om du oppretter en funksjon "legge" som tok i to heltall 254 00:14:14,250 --> 00:14:16,670 og du sa int en og int b. 255 00:14:16,670 --> 00:14:22,680 Det ville være navn en, og hvis du ville ha en annen form, som 256 00:14:22,680 --> 00:14:27,800 vi kan gjøre bare ved å kopiere og lime, så vi ville ha navn b. 257 00:14:27,800 --> 00:14:31,030 >> Så nå skal vi ha to parametre som blir ført gjennom 258 00:14:31,030 --> 00:14:36,970 komme til neste website-- neste nettside, hello.php. 259 00:14:36,970 --> 00:14:39,770 Og vi kan faktisk se det igjen hvis vi ønsker. 260 00:14:39,770 --> 00:14:44,830 Dette er den enkleste måten å håndtere nettkoden i IDE, i utgangspunktet. 261 00:14:44,830 --> 00:14:47,940 Du starter opp serveren, få det kjører, og deretter hver gang du 262 00:14:47,940 --> 00:14:50,649 gjøre noen endringer, bare lukke at filen bare for å være trygg. 263 00:14:50,649 --> 00:14:52,440 Ved å trykke på tilbake-knappen er litt vanskelig 264 00:14:52,440 --> 00:14:55,800 fordi det kan laste en tidligere versjon, ikke den mest oppdaterte en. 265 00:14:55,800 --> 00:14:59,200 >> Og så kan du bare klikke deg knappen igjen, pop rett opp-- oh, 266 00:14:59,200 --> 00:15:00,510 og nå er det to former. 267 00:15:00,510 --> 00:15:10,440 Og så hvis vi skriver en ting i hver one-- "jason Hirshhorn," for instance-- 268 00:15:10,440 --> 00:15:11,590 vi si hei. 269 00:15:11,590 --> 00:15:12,840 Vi ser opp på våre parametere. 270 00:15:12,840 --> 00:15:18,910 Det ser ut som vi har fått, som forventet, a = jason og b = Hirshhorn, 271 00:15:18,910 --> 00:15:23,760 som representerer de to parametrene at vi passerte til denne funksjonen. 272 00:15:23,760 --> 00:15:27,900 >> Så nå kan vi faktisk komme til implementere den funksjonaliteten som vi 273 00:15:27,900 --> 00:15:30,840 hadde i P satt seks. 274 00:15:30,840 --> 00:15:32,490 Så akkurat nå er vi bare ekko hei. 275 00:15:32,490 --> 00:15:34,310 Og det er ikke veldig nyttig. 276 00:15:34,310 --> 00:15:38,530 Vi ønsker å ekko noen variable som ble sendt til oss. 277 00:15:38,530 --> 00:15:40,320 Og vi vet navnet på denne variabelen. 278 00:15:40,320 --> 00:15:41,770 Vi har en, og vi har b. 279 00:15:41,770 --> 00:15:43,500 Slik at vi kunne velge å ekko ett. 280 00:15:43,500 --> 00:15:45,470 >> Men hvordan få tilgang vi det? 281 00:15:45,470 --> 00:15:48,820 Vel, det er visse globale variabler i PHP. 282 00:15:48,820 --> 00:15:51,240 Og jeg kommer til å skrive dem i kommentarene her. 283 00:15:51,240 --> 00:15:59,910 De to viktigste er get og legge for vårt formål akkurat nå. 284 00:15:59,910 --> 00:16:05,350 Dette er de arrays eller, Teknisk, ordbøker 285 00:16:05,350 --> 00:16:10,540 hvor våre variabler som vi er passerer til neste nettside levende. 286 00:16:10,540 --> 00:16:14,520 Og vi skal snart se hvordan du bruker dem. 287 00:16:14,520 --> 00:16:19,720 >> Et annet kort notat om PHP-kode og noen spesifikk av it i C, 288 00:16:19,720 --> 00:16:23,260 å erklære en variabel eller å bruke variable 289 00:16:23,260 --> 00:16:24,570 du først måtte erklære dem. 290 00:16:24,570 --> 00:16:30,860 Og hva du måtte gjøre når du erklærte dem var si int en eller røye b. 291 00:16:30,860 --> 00:16:35,630 Du måtte erklære hvilke typer disse variabler før du har opprettet dem. 292 00:16:35,630 --> 00:16:38,800 PHP-- du ikke trenger å gjøre noe av det. 293 00:16:38,800 --> 00:16:42,522 PHP spør ikke om den type variabel. 294 00:16:42,522 --> 00:16:44,480 Og måten du skape en variable-- heller 295 00:16:44,480 --> 00:16:49,930 enn si int, røye, string-- som er virkelig char *, som vi know-- 296 00:16:49,930 --> 00:16:52,180 snarere enn å gjøre alle det, fordi alt 297 00:16:52,180 --> 00:16:54,620 er av samme type, typeless, kan vi bare 298 00:16:54,620 --> 00:16:59,210 bruke én karakter, som er dollartegn. 299 00:16:59,210 --> 00:17:03,700 Og du vil se det allerede dukker opp, små autofullfør ting. 300 00:17:03,700 --> 00:17:11,380 Og det er å si at _GET og _POST er to alternativer som jeg har tilgjengelig 301 00:17:11,380 --> 00:17:11,900 til meg. 302 00:17:11,900 --> 00:17:16,430 Noen av disse andre tingene er andre globale variabler i PHP 303 00:17:16,430 --> 00:17:18,430 at du skal bruke over løpet av P satt 7. 304 00:17:18,430 --> 00:17:20,569 For nå skal vi fokusere på få og innlegg. 305 00:17:20,569 --> 00:17:22,910 Men dette er et nyttig Det som IDE gjør 306 00:17:22,910 --> 00:17:24,980 der en gang du har skrevet i at dollartegn, 307 00:17:24,980 --> 00:17:28,760 det vil begynne å fylle i globale variabler eller variabler du allerede har definert. 308 00:17:28,760 --> 00:17:34,360 >> Så hvis du ønsket å definere en variabel kalt "streng" 309 00:17:34,360 --> 00:17:38,290 du kunne bare sette den lik "hei." 310 00:17:38,290 --> 00:17:40,100 Og det er i utgangspunktet så enkelt som det. 311 00:17:40,100 --> 00:17:44,720 Og så kan vi gjøre noe sånt som "echo $ string." 312 00:17:44,720 --> 00:17:48,524 IDE bør kaste noen feil hvis jeg gjør noe galt, 313 00:17:48,524 --> 00:17:50,190 så forhåpentligvis jeg gjør alt rett. 314 00:17:50,190 --> 00:17:52,060 Men bugs alltid oppstår. 315 00:17:52,060 --> 00:17:56,670 >> En annen lur ting om PHP er at det ikke er utarbeidet. 316 00:17:56,670 --> 00:18:00,640 Så med C-programmer, ville du gjøre den daglige rutinen of-- utgangspunktet, 317 00:18:00,640 --> 00:18:02,710 du ville gjøre endringer til koden din, vil du lagre det, 318 00:18:02,710 --> 00:18:04,460 og så ville du gjøre det, hvor make var 319 00:18:04,460 --> 00:18:08,830 trinnet som kalles kompilatoren, clang, gjøre koden, denne teksten 320 00:18:08,830 --> 00:18:10,570 fil, i en kjørbar. 321 00:18:10,570 --> 00:18:15,550 PHP er C-aktig, men det er utført på sparket av nettleseren din. 322 00:18:15,550 --> 00:18:17,640 Så det er ingen måte å vite. 323 00:18:17,640 --> 00:18:19,790 >> Gjør ville kaste dem nyttige feil, ikke sant? 324 00:18:19,790 --> 00:18:22,190 Det ville være som, du erklærte ikke denne variabelen 325 00:18:22,190 --> 00:18:23,320 før du prøvde å bruke den. 326 00:18:23,320 --> 00:18:29,120 Du gjorde alt dette dårlig stuff-- segfault, segfault, all den slags moro ganger 327 00:18:29,120 --> 00:18:31,000 som fulgte med make. 328 00:18:31,000 --> 00:18:33,920 PHP er et tveegget sverd fordi du ikke vil få disse feilene, 329 00:18:33,920 --> 00:18:37,770 men det betyr også at du ikke vil vite egentlig hva som er galt med programmet 330 00:18:37,770 --> 00:18:39,840 hvis du bare kjøre den og den fungerer ikke. 331 00:18:39,840 --> 00:18:45,130 Men debugger skal peke ut noen forhåpentligvis nyttige småting 332 00:18:45,130 --> 00:18:47,950 syntaktisk at du kan fikse. 333 00:18:47,950 --> 00:18:52,850 >> Så nå hvis vi går over to-- si, la oss lukke det. 334 00:18:52,850 --> 00:18:54,522 Gjenåpne. 335 00:18:54,522 --> 00:18:55,480 Og vi er tilbake til her. 336 00:18:55,480 --> 00:18:57,210 Så vi har en variabel og en variabel b. 337 00:18:57,210 --> 00:18:58,626 Og disse vil ikke slutt saken. 338 00:18:58,626 --> 00:19:01,850 Vi kaller dem h og g uten noen spesiell grunn. 339 00:19:01,850 --> 00:19:03,120 >> Og vi sier hei. 340 00:19:03,120 --> 00:19:07,480 Nå ser det ut som vår string "Hei" er faktisk utskrift. 341 00:19:07,480 --> 00:19:10,460 Vi skapte en variabel kalt "streng", sette den lik "hei." 342 00:19:10,460 --> 00:19:15,520 Legg merke til at vi ikke har å gjøre malloc eller gjøre et tegn array. 343 00:19:15,520 --> 00:19:19,110 >> I PHP, fordi variabler er typeless, en streng 344 00:19:19,110 --> 00:19:22,230 er den samme som for en char alle praktiske formål. 345 00:19:22,230 --> 00:19:23,570 Dette kan være "hei." 346 00:19:23,570 --> 00:19:26,340 Dette kan være akkurat den karakteren k. 347 00:19:26,340 --> 00:19:29,290 Dette kan være et tall 1. 348 00:19:29,290 --> 00:19:30,300 Og det bryr seg ikke. 349 00:19:30,300 --> 00:19:33,560 PHP ikke bryr seg om hvilken type variabel. 350 00:19:33,560 --> 00:19:34,390 Eller, det gjør det vare. 351 00:19:34,390 --> 00:19:36,240 Det bryr seg når du prøver og gjøre ting med det, 352 00:19:36,240 --> 00:19:38,790 men det bryr seg ikke i erklæringen trinnet. 353 00:19:38,790 --> 00:19:46,960 >> Og akkurat som du kan i C, kan du erklære strenger på stakken som dette 354 00:19:46,960 --> 00:19:51,130 om å si "stack" er en liten litt av en potensiell misvisende når 355 00:19:51,130 --> 00:19:52,230 vi snakker om PHP. 356 00:19:52,230 --> 00:19:54,020 Men vi trenger ikke å bekymre deg for det. 357 00:19:54,020 --> 00:19:55,936 Så vi fikk vår string "Hei," og vi ekko streng. 358 00:19:55,936 --> 00:19:58,880 Så nå har vi diskutert variabler. 359 00:19:58,880 --> 00:20:06,060 Så nå må vi snakke om get og legge og utføre den endelige ting som er 360 00:20:06,060 --> 00:20:12,660 nødvendig for å virkelig få dette opp igjen til funksjonaliteten av P satt 6. 361 00:20:12,660 --> 00:20:14,990 Så akkurat nå er vi ekko strengen, men vi 362 00:20:14,990 --> 00:20:17,080 har disse variablene får og post. 363 00:20:17,080 --> 00:20:19,430 Og fordi vi bruker metoden får, det 364 00:20:19,430 --> 00:20:24,810 synes naturlig at vår variabel som vi er interessert i, både a og b, 365 00:20:24,810 --> 00:20:29,870 vil bli plassert i matrisen eller ordbok, teknisk får. 366 00:20:29,870 --> 00:20:33,510 >> Så hvis vi setter opp blir som dette med groups-- jeg trykket angi 367 00:20:33,510 --> 00:20:36,770 og det liker ikke it-- men her har vi får. 368 00:20:36,770 --> 00:20:38,000 Og så får allerede eksisterer. 369 00:20:38,000 --> 00:20:41,380 Så vi kan allerede nå begynne å få tilgang noen av elementene i Get. 370 00:20:41,380 --> 00:20:45,000 Hvis vi får denne syntaksen for arrays i PHP er veldig C-aktig. 371 00:20:45,000 --> 00:20:47,900 Vi har våre to hakeparenteser. 372 00:20:47,900 --> 00:20:53,440 >> Så hvis vi sier får i en vanlig array, kan vi få tilgang til 373 00:20:53,440 --> 00:20:55,600 zeroth indeksen, den første indeksen. 374 00:20:55,600 --> 00:20:56,840 PHP er null indeksen. 375 00:20:56,840 --> 00:21:00,550 Vi kunne si null, en, two-- ting som dette. 376 00:21:00,550 --> 00:21:03,420 Og jeg har sagt at få er teknisk sett en ordbok. 377 00:21:03,420 --> 00:21:08,290 Så hva PHP gjør under panseret, som er litt bedre enn C, 378 00:21:08,290 --> 00:21:12,760 er det allerede gir deg noen ordbok funksjonalitet, som 379 00:21:12,760 --> 00:21:16,240 er egentlig hash tabeller, eller prøver å, visstnok. 380 00:21:16,240 --> 00:21:19,360 Eller, teknisk sett kan være en prøve så godt. 381 00:21:19,360 --> 00:21:25,500 Men PHP gjennomfører en hash table, som danner en effektiv ordbok. 382 00:21:25,500 --> 00:21:28,400 >> Og så vi vet navnet av våre variable, ikke sant? 383 00:21:28,400 --> 00:21:32,440 Det blir vedtatt i søkestrengen av PHP. 384 00:21:32,440 --> 00:21:37,290 Vi har a = b = h og g og der b er navnene på variablene. 385 00:21:37,290 --> 00:21:41,580 Så den måten at vi kan få tilgang til verdi som svarer til den tast 386 00:21:41,580 --> 00:21:45,055 i vår ordbok er bare ved å si _GET_GET ["a"]. 387 00:21:45,055 --> 00:21:48,170 388 00:21:48,170 --> 00:21:51,365 >> Så nå har vi _GET ["a"]. 389 00:21:51,365 --> 00:21:56,930 Og hvis vi bare erstatte inne vår ekko, hvis vi ekko _GET_GET ["a"] - 390 00:21:56,930 --> 00:22:02,410 og vi får se om det debugger kaster eventuelle feil om dette-- 391 00:22:02,410 --> 00:22:05,620 vi vil lagre det og lukke ut dette. 392 00:22:05,620 --> 00:22:07,130 Åpne den opp. 393 00:22:07,130 --> 00:22:10,390 Så vi bare gjør en rett nå, så b bør ikke saken. 394 00:22:10,390 --> 00:22:12,980 "henne" og "ham" - "hum". "henne" og "hum". 395 00:22:12,980 --> 00:22:14,810 Høres bra ut. 396 00:22:14,810 --> 00:22:18,040 >> Og det skrives ut "henne", som er gal. 397 00:22:18,040 --> 00:22:21,920 Men det er akkurat det som foregikk i P satt seks. 398 00:22:21,920 --> 00:22:27,240 Innerst inne, hva P satt 6 var doing-- echo hello, 399 00:22:27,240 --> 00:22:31,580 name-- hvor det hadde en variabelnavn og det bare 400 00:22:31,580 --> 00:22:35,520 ber deg om å skrive inn det litt av teksten. 401 00:22:35,520 --> 00:22:37,380 Det var også noen tilleggskode der 402 00:22:37,380 --> 00:22:40,550 det inkludert hvis uttalelser, som vi kan gjøre akkurat nå. 403 00:22:40,550 --> 00:22:50,120 >> Vi kan si at hvis det finnes, som er en funksjonalitet innen PHP, 404 00:22:50,120 --> 00:22:55,110 _GET Med understrek, "navn" - som er utgangspunktet si, 405 00:22:55,110 --> 00:22:58,760 "hvis navn er blitt fylt i" fordi vi kunne bare ha klikket på knappen 406 00:22:58,760 --> 00:23:02,580 å sende inn skjemaet uten å skrive noe inn det feltet. 407 00:23:02,580 --> 00:23:07,760 Og vi vikle at i vår vennlige klammeparentes. 408 00:23:07,760 --> 00:23:09,175 Vi kan ha et annet utsagn. 409 00:23:09,175 --> 00:23:13,300 410 00:23:13,300 --> 00:23:18,820 Og det er alt innen PHP vinkel brakett, spørsmålstegn, vinkelbeslag, 411 00:23:18,820 --> 00:23:20,040 hvis du vil. 412 00:23:20,040 --> 00:23:21,750 >> Og nå får vi se om dette fungerer. 413 00:23:21,750 --> 00:23:26,300 Jeg fortsetter å vente på det å feilsøke og crap ut på meg, i utgangspunktet, 414 00:23:26,300 --> 00:23:28,410 men det har ennå ikke. 415 00:23:28,410 --> 00:23:30,830 Kanskje det vil nå fordi jeg snakket om. 416 00:23:30,830 --> 00:23:31,330 Jepp. 417 00:23:31,330 --> 00:23:32,510 Det gjorde det, faktisk. 418 00:23:32,510 --> 00:23:34,610 Så, er det ingenting å dukke opp. 419 00:23:34,610 --> 00:23:38,750 Det er på grunn av noe galt som jeg skrev i PHP-koden. 420 00:23:38,750 --> 00:23:42,844 Og jeg nevnte debugging er vanskelig fordi i PHP, vi 421 00:23:42,844 --> 00:23:45,260 ikke kompilere det på forhånd og kompilatoren ble ikke liker, 422 00:23:45,260 --> 00:23:46,710 her er hvor feilene er. 423 00:23:46,710 --> 00:23:49,690 >> Men det vi kan gjøre er-- gjøre folk husker 424 00:23:49,690 --> 00:23:57,010 hvordan å se på ulike nettverk forespørsler som PHP-- eller at nettsteder 425 00:23:57,010 --> 00:23:57,620 sende? 426 00:23:57,620 --> 00:24:00,290 [? Malin?] Gjorde dette i foredrag en gang eller to. 427 00:24:00,290 --> 00:24:05,830 Husker du hvor vi går for å finne de ulike gjeld og 200 OKS, 428 00:24:05,830 --> 00:24:09,780 alle disse kodene som blir sendt gjennom HTTP fra nettside til nettside? 429 00:24:09,780 --> 00:24:12,514 Er det noen som husker hvor vi går for å gjøre det? 430 00:24:12,514 --> 00:24:13,787 >> PUBLIKUM: Page Source. 431 00:24:13,787 --> 00:24:14,870 SAM LEVATICH: Side kilde. 432 00:24:14,870 --> 00:24:15,890 Nettopp. 433 00:24:15,890 --> 00:24:19,230 Hvis du går til siden Source-- perfekt. 434 00:24:19,230 --> 00:24:21,630 Så Page Source trekker opp inspektøren. 435 00:24:21,630 --> 00:24:23,140 >> Og jeg bruker Safari. 436 00:24:23,140 --> 00:24:25,790 Mange av dere vil sannsynligvis være bruker Chrome eller Firefox. 437 00:24:25,790 --> 00:24:27,750 Men så lenge du er i enhver moderne browser-- 438 00:24:27,750 --> 00:24:29,500 og føler seg fri til å følge sammen hvis du vil. 439 00:24:29,500 --> 00:24:32,560 Du kan skrive opp denne koden eller bare se inne i P sett 6 440 00:24:32,560 --> 00:24:35,820 katalog for noen lignende ting. 441 00:24:35,820 --> 00:24:41,020 hello.php er hva vi er jobber for tiden med etterligning. 442 00:24:41,020 --> 00:24:42,476 >> Så det er en rekke kategorier. 443 00:24:42,476 --> 00:24:43,850 Vi kan se på alle ressursene. 444 00:24:43,850 --> 00:24:45,810 Vi kan se kildekoden. 445 00:24:45,810 --> 00:24:49,900 Så ser ut som det gjorde ikke komme forbi kroppen til slutt. 446 00:24:49,900 --> 00:24:54,890 Det funnet en feil i PHP, og det stoppet lasting av hele nettsiden. 447 00:24:54,890 --> 00:24:58,320 Vi har ikke engang en slutt tag for HTML eller noe. 448 00:24:58,320 --> 00:25:07,189 >> Og hvis vi ser på nettet, kan vi se at vi blir sendt en forespørsel. 449 00:25:07,189 --> 00:25:07,980 Dette er domenet. 450 00:25:07,980 --> 00:25:09,270 Dette er adressen. 451 00:25:09,270 --> 00:25:10,070 Det er et dokument. 452 00:25:10,070 --> 00:25:14,310 Vi bruker GET-metoden. 453 00:25:14,310 --> 00:25:15,760 >> Og det er rødt. 454 00:25:15,760 --> 00:25:19,030 Eller, det ble rødt når jeg ble ikke velger det. 455 00:25:19,030 --> 00:25:22,680 Hvordan velge bort jeg det? 456 00:25:22,680 --> 00:25:23,980 Vel, det var rødt. 457 00:25:23,980 --> 00:25:25,201 La meg oppdatere. 458 00:25:25,201 --> 00:25:25,700 Det er det. 459 00:25:25,700 --> 00:25:26,640 Nå er det rødt. 460 00:25:26,640 --> 00:25:30,530 >> Så det er rødt, som betyr det mislyktes, noe som er dårlig. 461 00:25:30,530 --> 00:25:32,280 Så la oss undersøke hvorfor det gjorde mislykkes. 462 00:25:32,280 --> 00:25:37,070 Så alt at Page Source kan utgangspunktet fortelle deg er din greie 463 00:25:37,070 --> 00:25:38,720 fungerte ikke, som vi allerede kan se. 464 00:25:38,720 --> 00:25:42,100 Så ideelt sett ville det være et mer nyttig verktøy. 465 00:25:42,100 --> 00:25:45,710 Og er det noen nettleserutvidelser som tillater deg å feilsøke PHP, 466 00:25:45,710 --> 00:25:50,490 men vi kommer ikke til å være å skrive massevis av PHP, 467 00:25:50,490 --> 00:25:53,190 så det er nok bare beste å se gjennom koden din 468 00:25:53,190 --> 00:25:56,760 nøye og bare sørge for at det er ikke å gjøre noe annet. 469 00:25:56,760 --> 00:26:03,876 >> Så la oss se om formatet på denne hvis setningen er der problemet ligger. 470 00:26:03,876 --> 00:26:07,420 Jeg ønsker å laste det opp igjen her. 471 00:26:07,420 --> 00:26:09,830 Hei, hei. 472 00:26:09,830 --> 00:26:11,350 Så det er et problem der. 473 00:26:11,350 --> 00:26:15,130 >> Så for riktig syntaks av PHP, er PHP kommer 474 00:26:15,130 --> 00:26:17,369 å være C-aktig i at du får se sløyfer. 475 00:26:17,369 --> 00:26:18,410 Du får se om uttalelser. 476 00:26:18,410 --> 00:26:20,920 Du vil se alle disse vennene at du har blitt kjent 477 00:26:20,920 --> 00:26:24,820 med løpet av denne CS50 semester. 478 00:26:24,820 --> 00:26:29,960 Men den beste måten å finne ut hvordan du gjøre noe i PHP er å google det 479 00:26:29,960 --> 00:26:33,170 eller for å se på noen eksempler på PHP-kode fordi du vet funksjonaliteten. 480 00:26:33,170 --> 00:26:35,080 >> Du vet hva du kan gjøre med programmet. 481 00:26:35,080 --> 00:26:35,976 Du kan sløyfe. 482 00:26:35,976 --> 00:26:37,600 Du kan sløyfe så mange ganger du vil. 483 00:26:37,600 --> 00:26:39,433 Du kan sløyfe i alt slags forskjellige måter. 484 00:26:39,433 --> 00:26:40,700 Du kan lage funksjoner. 485 00:26:40,700 --> 00:26:43,241 Du kan opprette funksjoner som ringe andre funksjoner, funksjoner 486 00:26:43,241 --> 00:26:44,150 som kaller seg. 487 00:26:44,150 --> 00:26:45,733 Og har du navnene på disse begrepene. 488 00:26:45,733 --> 00:26:49,860 Du har rekursjon, løkker, hvis, andre kontrollstrømmer. 489 00:26:49,860 --> 00:26:51,300 Og slik Google er din beste venn. 490 00:26:51,300 --> 00:26:53,540 Selv sier, "PHP hvis statement "og det vil 491 00:26:53,540 --> 00:26:57,740 være tonnevis av innlegg med svar til andre mennesker 492 00:26:57,740 --> 00:27:02,090 som har hatt lignende spørsmål til deg, som bare starte opp med PHP 493 00:27:02,090 --> 00:27:03,820 og er nysgjerrig på en syntaks ting. 494 00:27:03,820 --> 00:27:08,480 >> Fordi vi har luksusen av å være i stand til å se på koden i P sett 6, 495 00:27:08,480 --> 00:27:14,980 vi faktisk dra den opp og se at OK, her er noe interessant. 496 00:27:14,980 --> 00:27:18,070 Så dette er hva det faktisk så ut i P satt seks. 497 00:27:18,070 --> 00:27:20,340 Så hvis vi går gjennom dette, Vi kan se at vi har 498 00:27:20,340 --> 00:27:27,150 fikk flere av disse små PHP-lignende spørsmålstegn biter. 499 00:27:27,150 --> 00:27:29,050 >> Og det er ikke klammeparentes. 500 00:27:29,050 --> 00:27:30,250 Det er kolon. 501 00:27:30,250 --> 00:27:32,340 Og det er krøllete bukseseler i PHP, men dette 502 00:27:32,340 --> 00:27:38,700 er et format og en måte å gjøre PHP som fungerer godt med HTML 503 00:27:38,700 --> 00:27:43,830 fordi som du ser, vi lukker off disse PHP bits-- den andens 504 00:27:43,830 --> 00:27:49,770 og ifs og alle at-- og deretter vi intersper HTML inni dem 505 00:27:49,770 --> 00:27:54,640 mens de fortsatt følger kontrollflyt satt ut av PHP. 506 00:27:54,640 --> 00:27:58,480 >> Så jeg skal bare rask spasertur gjennom denne 507 00:27:58,480 --> 00:28:01,740 fordi det er mye av det samme konsepter som vi gjorde før. 508 00:28:01,740 --> 00:28:07,280 Vi har fått hvis ikke tom, parentes, _GET_GET ["navn"]. 509 00:28:07,280 --> 00:28:08,500 Dette er alle de samme tingene. 510 00:28:08,500 --> 00:28:15,430 Vi bruker den _GET ordbok som PHP sender på forespørsel av former, 511 00:28:15,430 --> 00:28:20,720 fordi det er parametrene av virkning, og fremgangsmåten er å få. 512 00:28:20,720 --> 00:28:22,110 Og da ender det. 513 00:28:22,110 --> 00:28:27,420 Kolon er et signifier å bare gjøre dette hvis hvis setningen evalueres til sann. 514 00:28:27,420 --> 00:28:29,490 Det er som en klammeparentes. 515 00:28:29,490 --> 00:28:33,320 Og faktisk, det er en klammeparentes i andre språk som Python, 516 00:28:33,320 --> 00:28:37,070 som kan oppstå hvis du bare gjøre det for det endelige prosjektet. 517 00:28:37,070 --> 00:28:40,170 >> Og så denne linjen, hallo. 518 00:28:40,170 --> 00:28:41,510 Så har vi denne rare ting. 519 00:28:41,510 --> 00:28:43,190 Vi har fått flere konsoller. 520 00:28:43,190 --> 00:28:46,140 Det er ingen HTTP det-- eller PHP, beklager. 521 00:28:46,140 --> 00:28:47,250 Men det er et likhetstegn. 522 00:28:47,250 --> 00:28:50,625 Og så har vi en funksjon, htmlspecialchars (_GEThtmlspecialchars (_GET ["navn"]). 523 00:28:50,625 --> 00:28:54,440 524 00:28:54,440 --> 00:28:58,040 Dette er liksom som en mer avansert versjon av ekko. 525 00:28:58,040 --> 00:29:01,450 Som vi hadde ekko som en måte for å skrive ut ting i PHP. 526 00:29:01,450 --> 00:29:03,890 Dette er en funksjon som er definert i PHP som 527 00:29:03,890 --> 00:29:08,160 vil omhandle litt mer ekkel tegn og byte-verdier 528 00:29:08,160 --> 00:29:09,540 at du kunne passere den. 529 00:29:09,540 --> 00:29:11,070 Det er alltid tryggest å bruke denne. 530 00:29:11,070 --> 00:29:14,930 Men ekko vil gjøre jobben bare fint hvis vi ikke er 531 00:29:14,930 --> 00:29:17,620 arbeider med noe som er for stygg. 532 00:29:17,620 --> 00:29:20,340 >> Og slik at dette har samme Effekten av utgangspunktet, 533 00:29:20,340 --> 00:29:26,360 denne ting i mellom spørsmålet merkene er evaluert av PHP. 534 00:29:26,360 --> 00:29:34,490 htmlspecialchars returnerer en fin HTML trykt verdien av _GET_GET ["navn"], dvs. 535 00:29:34,490 --> 00:29:36,010 hva vi skrev i form. 536 00:29:36,010 --> 00:29:40,025 Og så vil det si hei, komma plass, og deretter det. 537 00:29:40,025 --> 00:29:42,910 At hele greia mellom vinkelbrak 538 00:29:42,910 --> 00:29:47,390 vil bli erstattet av hva htmlspecialchars legger ut. 539 00:29:47,390 --> 00:29:49,390 Så det er i utgangspunktet like til det vi holder på med. 540 00:29:49,390 --> 00:29:54,760 Og vi har et annet utsagn som er hello world, som er fornuftig. 541 00:29:54,760 --> 00:29:58,070 Så nå la oss gå tilbake til vår kode og se exactly-- oh. 542 00:29:58,070 --> 00:30:02,200 I nevnte eksisterer, som ikke er en ting som vi ønsket å gjøre. 543 00:30:02,200 --> 00:30:05,370 Vi ønsket å si ikke tom. 544 00:30:05,370 --> 00:30:10,020 >> Og så dette bør jobbe litt litt bedre, ikke tom _GET_GET ["navn"]. 545 00:30:10,020 --> 00:30:12,710 Og at klammeparentes kamper som curly brace. 546 00:30:12,710 --> 00:30:15,210 Vi har fått våre klammeparentes her. 547 00:30:15,210 --> 00:30:17,790 echo hei _GET ["navn"]. 548 00:30:17,790 --> 00:30:19,912 La oss se om dette fungerer litt bedre. 549 00:30:19,912 --> 00:30:21,350 Vi er fortsatt kjører serveren vår. 550 00:30:21,350 --> 00:30:23,910 Hei Jason. 551 00:30:23,910 --> 00:30:24,780 Hei Jason. 552 00:30:24,780 --> 00:30:25,810 Og det fungerte denne gangen. 553 00:30:25,810 --> 00:30:29,860 Og så det er et bevis at du kan faktisk 554 00:30:29,860 --> 00:30:35,180 bruke klammeparentes som du kjenner og elsker i PHP-koden i HTML. 555 00:30:35,180 --> 00:30:41,100 PHP-koden gitt til du i PSet 6-- PSet 6-- 556 00:30:41,100 --> 00:30:44,760 gir en annen måte å gjøre det samme. 557 00:30:44,760 --> 00:30:49,220 >> Så nå har vi makt. 558 00:30:49,220 --> 00:30:55,740 Vi har funksjonalitet for å implementere PHP-kode som vi så i PSet 6 559 00:30:55,740 --> 00:30:57,390 av oss selv, i utgangspunktet. 560 00:30:57,390 --> 00:31:01,350 Før jeg går videre, hva er noen av de spørsmål som du har på dette punktet? 561 00:31:01,350 --> 00:31:02,066 Ja [uhørbart]. 562 00:31:02,066 --> 00:31:06,512 >> PUBLIKUM: Så i den versjonen i pset6, når du kjører den, det er en plass. 563 00:31:06,512 --> 00:31:09,330 Og jeg kan se hvor plassen er etter komma. [Uhørbart] start 564 00:31:09,330 --> 00:31:10,700 den åpne braketten. 565 00:31:10,700 --> 00:31:15,420 Hvordan innlemme du gjøre plass i måten du skrev dine egne koder? 566 00:31:15,420 --> 00:31:17,910 >> SPEAKER: Det er et godt spørsmål. 567 00:31:17,910 --> 00:31:21,650 Og så la oss finne det ut. 568 00:31:21,650 --> 00:31:24,450 Så det er et veldig godt spørsmål og en som jeg ikke vurdere. 569 00:31:24,450 --> 00:31:25,950 Men la oss gjøre det sammen. 570 00:31:25,950 --> 00:31:30,280 >> Så først av alt, hva Jeg gjør med ekko 571 00:31:30,280 --> 00:31:33,690 er når vi bare ekko hallo, utganger det hei. 572 00:31:33,690 --> 00:31:41,310 Hvis vi ekko nå dette komme på et eget linjen, la oss undersøke hva som skjer. 573 00:31:41,310 --> 00:31:43,740 Så vi klikker på denne. 574 00:31:43,740 --> 00:31:45,220 Vi fortsetter å si, hei Jason. 575 00:31:45,220 --> 00:31:48,690 Så igjen, har vi ikke denne plassen. 576 00:31:48,690 --> 00:31:53,090 >> Og det er fordi, i PHP, når vi har ekko, 577 00:31:53,090 --> 00:31:55,820 uansett hvor mange spaces-- nope, ikke V-- 578 00:31:55,820 --> 00:32:01,770 uansett hvor mange plasser vi satt i her-- hvis vi nå laste det opp igjen, 579 00:32:01,770 --> 00:32:03,010 hei Jason. 580 00:32:03,010 --> 00:32:05,770 Ja, se, alle de mellomrom fikk spist opp. 581 00:32:05,770 --> 00:32:08,020 Og det er noe som ekkoet funksjonen gjør. 582 00:32:08,020 --> 00:32:11,110 >> Så for å ta vare på at plassen er og dette 583 00:32:11,110 --> 00:32:14,960 en av grunnene hvorfor du ikke bruker ekko 584 00:32:14,960 --> 00:32:18,200 og du bruker htmlspecialchars stedet. 585 00:32:18,200 --> 00:32:22,140 Jeg er nysgjerrig på hva ville skje hvis vi gjorde dette 586 00:32:22,140 --> 00:32:26,700 hvor vi vedlagt en plass i en streng. 587 00:32:26,700 --> 00:32:29,720 Jeg er ærlig talt ikke sikker på hva vil skje når jeg gjør dette. 588 00:32:29,720 --> 00:32:30,790 >> Så det er en vei. 589 00:32:30,790 --> 00:32:32,210 Det er en måte å ta vare på den. 590 00:32:32,210 --> 00:32:34,840 Hvis du vikler opp plass i en streng, så plassen 591 00:32:34,840 --> 00:32:36,920 vil bli sendt ut pent av ekko. 592 00:32:36,920 --> 00:32:41,930 Den sikreste tingen å gjøre er å gjøre htmlspecialchars. 593 00:32:41,930 --> 00:32:43,800 Det er alltid den sikkert kort. 594 00:32:43,800 --> 00:32:47,050 Men nå har vi en måte å gjøre den med ekko hvis det er nødvendig. 595 00:32:47,050 --> 00:32:50,700 Og på en lignende måte, kan vi ekko nye linjer, alle slags 596 00:32:50,700 --> 00:32:53,550 av ting du er kjent gjør i PHP. 597 00:32:53,550 --> 00:32:57,460 >> Noen andre, hva er noe mer spørsmål som andre folk har 598 00:32:57,460 --> 00:33:01,090 på dette punktet om PHP? 599 00:33:01,090 --> 00:33:04,620 Hvis folk viste litt sent, Jeg er glad for å bo etter en liten bit 600 00:33:04,620 --> 00:33:06,420 og snakke om noen av begynnelsen. 601 00:33:06,420 --> 00:33:10,380 Og det er også alt livestreamed, og arkivert, som er gal. 602 00:33:10,380 --> 00:33:13,960 >> Uansett, så nå la oss gjøre noen mer avanserte ting med PHP. 603 00:33:13,960 --> 00:33:18,790 Og en av de tidligste tingene du ble introdusert for i C var for sløyfer. 604 00:33:18,790 --> 00:33:24,060 Og PHP har en kraftigere for sløyfe kalt foreach loop. 605 00:33:24,060 --> 00:33:37,940 Og det ser ut som dette-- for hver tomt som tomme, klammeparentes, gjør ting. 606 00:33:37,940 --> 00:33:41,500 Så dette er egentlig en forkortelse. 607 00:33:41,500 --> 00:33:45,380 >> Se, for loop som en syntaktisk konstruksjon 608 00:33:45,380 --> 00:33:50,590 ble utviklet i C og i forsamlingen språk og ting liker. 609 00:33:50,590 --> 00:33:56,300 Utviklet i C, nettopp, som en forkortelse for mange av de typer sløyfer 610 00:33:56,300 --> 00:33:57,750 at folk ville se. 611 00:33:57,750 --> 00:34:01,230 Som når du skrev en loop, der var ofte en initialiseringstrinn 612 00:34:01,230 --> 00:34:04,700 henrettet helt i begynnelsen, en tilstand hvor sløyfen ville stop-- 613 00:34:04,700 --> 00:34:07,030 og det er den funksjonen det er bare på en stund loop, 614 00:34:07,030 --> 00:34:10,040 eller som en stund har nøyaktig bare at feature-- og deretter 615 00:34:10,040 --> 00:34:12,320 en incrementation skritt på slutten. 616 00:34:12,320 --> 00:34:16,489 Og så du vil ofte finne deg selv skrive kode som følgende. 617 00:34:16,489 --> 00:34:19,780 Jeg kommer til å slette noen av dette. 618 00:34:19,780 --> 00:34:23,850 >> Men hvis vi gjentar gjennom tegn i en matrise, 619 00:34:23,850 --> 00:34:26,960 for eksempel, som vi har fikk en rekke tegn. 620 00:34:26,960 --> 00:34:29,400 Beklager å bringe tilbake C. Jeg vet, du trodde du var ferdig. 621 00:34:29,400 --> 00:34:31,900 Men det er bare for det formål av å lære PHP, jeg lover. 622 00:34:31,900 --> 00:34:38,880 Så hvis du fikk en char str av lengde 8, og la oss 623 00:34:38,880 --> 00:34:46,760 si det står Hellooo med en etterfølgende null. 624 00:34:46,760 --> 00:34:48,270 Stor, så det er vår streng. 625 00:34:48,270 --> 00:34:51,469 >> Og så hadde vi en for loop. 626 00:34:51,469 --> 00:34:53,730 Vi har int i lik 0. 627 00:34:53,730 --> 00:34:57,960 628 00:34:57,960 --> 00:35:09,110 Og vi ønsker å gå ut når str av lik jeg ikke er lik null, 629 00:35:09,110 --> 00:35:11,590 fordi vi avslutter når det er lik null. 630 00:35:11,590 --> 00:35:19,170 Og så gjør vi i ++ på hver punkt i for loop. 631 00:35:19,170 --> 00:35:30,480 Gjør noe med str av i. 632 00:35:30,480 --> 00:35:34,950 >> Så grunnleggende formelen var, vi hadde denne matrisen som vi 633 00:35:34,950 --> 00:35:37,910 ønsket å behandle som egne elementer. 634 00:35:37,910 --> 00:35:45,170 Men hva vi måtte gjøre, er vi måtte utgangspunktet opprette en egen heltall 635 00:35:45,170 --> 00:35:50,530 variabelen som var telle opp hver Da vi gikk gjennom løkken. 636 00:35:50,530 --> 00:35:55,240 Og så ville vi måtte deretter ringe strstr [i] når det vi egentlig ønsket å gjøre 637 00:35:55,240 --> 00:35:57,280 er bare gå karakter for tegn, ikke sant? 638 00:35:57,280 --> 00:36:00,185 Vi ønsker ikke å øke en heltall og deretter bruke denne heltall 639 00:36:00,185 --> 00:36:02,780 for å få tilgang til hver karakter individuelt. 640 00:36:02,780 --> 00:36:04,410 Vi ønsker virkelig tegn for tegn. 641 00:36:04,410 --> 00:36:08,600 >> Og så for hver intelligent beregner at for oss. 642 00:36:08,600 --> 00:36:11,875 Hvis vi har en matrise, som vi kan erklære i PHP 643 00:36:11,875 --> 00:36:15,900 som just-- hvis vi har en variabel kalt, la oss kalle det array. 644 00:36:15,900 --> 00:36:19,840 Mirakler av ikke å skrive, er det akkurat som alle andre variable. 645 00:36:19,840 --> 00:36:20,730 Det er bare en matrise. 646 00:36:20,730 --> 00:36:26,890 Og vi har en liten [uhørbart] som en, 2, 3, bare en slags initialisert array. 647 00:36:26,890 --> 00:36:29,680 Det er OK, det liker ikke min foreach. 648 00:36:29,680 --> 00:36:33,120 >> Men hvis vi foreach-- faktisk Jeg skrev det litt feil. 649 00:36:33,120 --> 00:36:34,840 Det er to måter å gjøre en foreach loop. 650 00:36:34,840 --> 00:36:37,400 Det er i syntaks og som syntaks. 651 00:36:37,400 --> 00:36:40,580 Og vi kommer til å gjøre i syntaks første, ikke så. 652 00:36:40,580 --> 00:36:41,780 Det er min feil. 653 00:36:41,780 --> 00:36:53,785 >> Så foreach num i array, ekko num. 654 00:36:53,785 --> 00:36:56,970 655 00:36:56,970 --> 00:36:59,500 Og PHP er roping på meg for noen grunn. 656 00:36:59,500 --> 00:37:03,520 Det å finne en uventet i på noe, 657 00:37:03,520 --> 00:37:05,820 som er litt av en plage. 658 00:37:05,820 --> 00:37:09,105 Men vi vil finne ut hvorfor det er i et øyeblikk. 659 00:37:09,105 --> 00:37:11,960 660 00:37:11,960 --> 00:37:13,610 Så ikke sånn. 661 00:37:13,610 --> 00:37:15,040 La oss prøve å bruke den som. 662 00:37:15,040 --> 00:37:17,310 Den foretrekker den som syntaksen er virker. 663 00:37:17,310 --> 00:37:22,550 Så la oss gjøre foreach matrise som num. 664 00:37:22,550 --> 00:37:24,520 >> Så en liten forklaring av hva som skjedde 665 00:37:24,520 --> 00:37:30,670 er den som syntaksen saying-- godt først, la oss se på hva dette skrives ut. 666 00:37:30,670 --> 00:37:32,260 Så åpner vi opp vår IDE. 667 00:37:32,260 --> 00:37:33,110 Vi går her. 668 00:37:33,110 --> 00:37:35,845 Vi sier: Hei Jason. 669 00:37:35,845 --> 00:37:41,390 Og det gjorde 123, som var innholdet av tabellen at vi skapte opp toppen. 670 00:37:41,390 --> 00:37:45,500 >> Så dykke inn i denne foreach loop, vi har en variabel kalt matrise 671 00:37:45,500 --> 00:37:47,470 som er en matrise av tre tall. 672 00:37:47,470 --> 00:37:52,120 Og så gjør vi foreach matrise som num, ekko num. 673 00:37:52,120 --> 00:37:54,990 Og det er mer intuitiv enn en for lop. 674 00:37:54,990 --> 00:38:02,380 Vi sier, behandle hver av ting i rekken som num, 675 00:38:02,380 --> 00:38:05,180 Jeg vil at du skal gi meg num. 676 00:38:05,180 --> 00:38:06,640 Og det er akkurat det det gjør. 677 00:38:06,640 --> 00:38:12,000 >> PHP beregner at når du sier foreach array, 678 00:38:12,000 --> 00:38:16,080 og du arbeider med en rekke, hva du kommer til å ønske å iterere over 679 00:38:16,080 --> 00:38:19,950 er karakterene i denne matrisen, er ints i denne matrisen, 680 00:38:19,950 --> 00:38:21,920 er elementene i den oppstillingen. 681 00:38:21,920 --> 00:38:26,110 Og det er slik at du kan lagre disse variablene som num, 682 00:38:26,110 --> 00:38:29,360 og så bare utgang num med en gang i stedet for å si: 683 00:38:29,360 --> 00:38:34,090 Jeg har en variabel som heter jeg, og da vil jeg utgang strstr [i]. 684 00:38:34,090 --> 00:38:39,130 >> Og slik som tillater oss å gjøre kule ting. 685 00:38:39,130 --> 00:38:43,330 Som i utgangspunktet vi ikke trenger å lage disse variablene som jeg er og gjøre alt 686 00:38:43,330 --> 00:38:45,090 dette incrementation ting på slutten. 687 00:38:45,090 --> 00:38:48,290 PHP tar seg av alt dette for deg. 688 00:38:48,290 --> 00:38:54,470 >> Så nå la oss snakke om foreach som det gjelder vår _GET ordbok. 689 00:38:54,470 --> 00:38:57,170 Så vi vil kommentere dette ut raskt. 690 00:38:57,170 --> 00:39:02,030 Så vi har vår _GET array. 691 00:39:02,030 --> 00:39:04,361 Vi har denne variabelen. 692 00:39:04,361 --> 00:39:05,610 Og det har noen ting i den. 693 00:39:05,610 --> 00:39:10,275 >> Akkurat nå har vi bare én variabel som sendes til det, som er navnet. 694 00:39:10,275 --> 00:39:13,420 Men hvis vi på Enter, nå vi kan ha to variabler. 695 00:39:13,420 --> 00:39:17,910 Vi kan ha navn og alder, for eksempel, hvis vi ønsker å få alder og også 696 00:39:17,910 --> 00:39:20,960 navnet på en person, pussig nok. 697 00:39:20,960 --> 00:39:25,690 >> Så nå _GET kommer til å bli en ordbok med to elementer, 698 00:39:25,690 --> 00:39:27,980 med to sentrale verdiparene. 699 00:39:27,980 --> 00:39:33,490 Og den første key-- jeg kommer til å skrive dette opp på bordet også. 700 00:39:33,490 --> 00:39:37,136 Vi har vår ordbok er _GET. 701 00:39:37,136 --> 00:39:39,520 Beklager, det er er litt vanskelig å se. 702 00:39:39,520 --> 00:39:46,690 Men inni vår ordbok vi har navn, som kommer til å være noe 703 00:39:46,690 --> 00:39:47,680 at vi er gitt. 704 00:39:47,680 --> 00:39:53,040 Og vi vil ha alder, som også er kommer til å være noe som vi er gitt. 705 00:39:53,040 --> 00:39:56,020 Og dette er helheten av vår ordbok. 706 00:39:56,020 --> 00:39:57,730 >> Så det har to elementer i den. 707 00:39:57,730 --> 00:40:01,310 Og så fordi foreach sløyfer er smarte, vi 708 00:40:01,310 --> 00:40:04,900 kanskje tror, ​​og riktig tenker kanskje at foreach 709 00:40:04,900 --> 00:40:08,080 kan iterere gjennom denne ordbok, skrive ut 710 00:40:08,080 --> 00:40:10,850 verdiene gitt ved navn og alder. 711 00:40:10,850 --> 00:40:14,510 >> Så la oss faktisk gjøre nettopp det. 712 00:40:14,510 --> 00:40:17,520 La oss bygge en foreach loop. 713 00:40:17,520 --> 00:40:23,351 Og vi kommer til å gjøre for _GET as. 714 00:40:23,351 --> 00:40:24,850 Og vi kommer til å gjøre følgende. 715 00:40:24,850 --> 00:40:34,186 Så la oss se hva som skjer når vi taster bare ord, og deretter si ekko ord. 716 00:40:34,186 --> 00:40:40,540 Vi kommer også til å ekko en ny linje bare for å gjøre det litt klarere, 717 00:40:40,540 --> 00:40:41,260 hva er det som skjer. 718 00:40:41,260 --> 00:40:42,890 >> Så la oss se. 719 00:40:42,890 --> 00:40:44,390 Det er ikke å gi meg noen feil. 720 00:40:44,390 --> 00:40:46,810 Og vi vil lukke denne. 721 00:40:46,810 --> 00:40:51,020 På vår hjemmeside, du kommer til å gjøre mye av det i løpet av pset7. 722 00:40:51,020 --> 00:40:53,890 Så vi sier mitt navn er Sam. 723 00:40:53,890 --> 00:40:58,560 Min alder er 45. 724 00:40:58,560 --> 00:41:01,060 Det er ikke. 725 00:41:01,060 --> 00:41:05,640 Men det skrives ut, som forventet, Sam 45. 726 00:41:05,640 --> 00:41:08,930 >> Og så vil du legge merke til at hva foreach løkke did-- her, 727 00:41:08,930 --> 00:41:12,360 la oss gå tilbake til det, så det er opp på board-- får vi _GET som ord. 728 00:41:12,360 --> 00:41:15,130 Og det var fire ting i _GET. 729 00:41:15,130 --> 00:41:17,410 Men det bare skrives ut to ting. 730 00:41:17,410 --> 00:41:21,290 foreach, å være sin intelligens selv, antok at det vi egentlig ønsket 731 00:41:21,290 --> 00:41:24,100 var verdiene, ikke nøkler. 732 00:41:24,100 --> 00:41:27,800 >> Men det er en måte at vi kunne skrive ut nøklene også, hvis vi ville. 733 00:41:27,800 --> 00:41:30,810 Hvis vi ønsket å også vite hva disse variablene ble kalt, 734 00:41:30,810 --> 00:41:33,540 det er en måte at vi kan få tilgang til dette også. 735 00:41:33,540 --> 00:41:36,840 Og måten å liksom gjøre det, så vi kan si, kan virkelig 736 00:41:36,840 --> 00:41:39,485 dele den opp i sentrale verdiparene. 737 00:41:39,485 --> 00:41:42,370 738 00:41:42,370 --> 00:41:47,580 Så la oss se hva som skjer nå. 739 00:41:47,580 --> 00:41:50,550 >> Så vi har nøkkelen. 740 00:41:50,550 --> 00:41:52,290 Vi har verdi. 741 00:41:52,290 --> 00:41:56,650 Vi har en annen ny linjen for lesbarhet. 742 00:41:56,650 --> 00:42:00,540 Og la oss se hva som skjer når vi gjør dette nå. 743 00:42:00,540 --> 00:42:04,950 744 00:42:04,950 --> 00:42:06,720 Jeg vet ikke hvor gammel Jason er. 745 00:42:06,720 --> 00:42:09,180 Jasons 15. 746 00:42:09,180 --> 00:42:11,650 Så vi har navn Jason, 15 år. 747 00:42:11,650 --> 00:42:15,830 Så var vi i stand til å få tilgang til nøkkel og verdi par av denne ordboken 748 00:42:15,830 --> 00:42:18,590 bare ved å si som viktige punkter til verdi. 749 00:42:18,590 --> 00:42:23,350 Og det er en foreach syntaktisk sukker bit som gjør 750 00:42:23,350 --> 00:42:25,960 deg tilgang til ting i ordlisten. 751 00:42:25,960 --> 00:42:31,190 >> Så forhåpentligvis denne typen streker kraften i foreach loop. 752 00:42:31,190 --> 00:42:35,690 Du kan ganske mye kast noe som synes iterable, 753 00:42:35,690 --> 00:42:38,922 som noe som har flere elementer som en matrise, 754 00:42:38,922 --> 00:42:41,880 som en dictionary-- de er to viktigste tingene du skal jobbe med 755 00:42:41,880 --> 00:42:45,630 både i livet og i PSet 7. 756 00:42:45,630 --> 00:42:49,350 Så du kan kaste at ting på det, og det vil finne ut 757 00:42:49,350 --> 00:42:51,030 hva du vil gjøre med det. 758 00:42:51,030 --> 00:42:54,250 Det vil si, OK, jeg kommer til å få disse tingene fra de data som 759 00:42:54,250 --> 00:42:55,680 ble sendt til meg. 760 00:42:55,680 --> 00:43:02,470 Og det er noe som du er kommer til å bruke mye i PSet 7. 761 00:43:02,470 --> 00:43:08,550 >> Jeg kommer til å bla fort ned bare for å se hvor jeg er på. 762 00:43:08,550 --> 00:43:11,410 763 00:43:11,410 --> 00:43:13,070 Har folk har spørsmål på dette punktet? 764 00:43:13,070 --> 00:43:13,778 Spørsmål i det hele tatt? 765 00:43:13,778 --> 00:43:14,400 Ja? 766 00:43:14,400 --> 00:43:18,320 >> PUBLIKUM: Så med nøkkelen og verdi, du kan kalle det noe annet 767 00:43:18,320 --> 00:43:20,507 og det vil fortsatt fungere? 768 00:43:20,507 --> 00:43:21,090 SPEAKER: Oops. 769 00:43:21,090 --> 00:43:22,820 Wow, jeg helt slettet hele linjen. 770 00:43:22,820 --> 00:43:23,380 Flott arbeid. 771 00:43:23,380 --> 00:43:26,502 Så en, en. 772 00:43:26,502 --> 00:43:30,109 Nøkkel og verdien er bare en konvensjon. 773 00:43:30,109 --> 00:43:30,650 Det er nyttig. 774 00:43:30,650 --> 00:43:34,010 Du vil få noen design poeng, kanskje noen stil poeng 775 00:43:34,010 --> 00:43:36,970 for å gjøre det fordi det virkelig formidler intensjonen. 776 00:43:36,970 --> 00:43:39,650 Men vi sier et og yarp. 777 00:43:39,650 --> 00:43:42,476 >> PUBLIKUM: Du trenger ikke å endre noe i HTML-filen 778 00:43:42,476 --> 00:43:43,607 for å reflektere det? 779 00:43:43,607 --> 00:43:44,440 SPEAKER: Ikke i det hele tatt. 780 00:43:44,440 --> 00:43:47,260 PUBLIKUM: Og det bare vet at på grunn av den tilsvarer større than-- 781 00:43:47,260 --> 00:43:47,801 SPEAKER: Ja. 782 00:43:47,801 --> 00:43:49,489 PUBLIKUM: --that indikator på at that's-- 783 00:43:49,489 --> 00:43:50,030 SPEAKER: Ja. 784 00:43:50,030 --> 00:43:52,260 Det er en foreach syntaks, men ja. 785 00:43:52,260 --> 00:43:53,720 >> PUBLIKUM: Det er ikke typer. 786 00:43:53,720 --> 00:43:57,230 Så hva om du ønsket alder å bare være et tall? 787 00:43:57,230 --> 00:43:59,510 Er det en måte å gjøre det? 788 00:43:59,510 --> 00:44:04,550 >> SPEAKER: Det finnes måter å kontrollere om variabler i samsvar med visse typer. 789 00:44:04,550 --> 00:44:08,482 Så PHP spør litt mer fra deg fordi det ikke er noen typer i. 790 00:44:08,482 --> 00:44:09,440 Noen måter den ber mindre. 791 00:44:09,440 --> 00:44:11,070 På noen måter spør det mer. 792 00:44:11,070 --> 00:44:13,320 Fordi hvis du har bare noe i en variabel, 793 00:44:13,320 --> 00:44:14,960 du aner ikke hvilken type det er. 794 00:44:14,960 --> 00:44:19,310 Men hvis du er smart om variablene at du tilordner typer til og sørge for at 795 00:44:19,310 --> 00:44:22,750 som fungerer bare return-- deg Vil funksjoner til kun retur 796 00:44:22,750 --> 00:44:26,210 en type verdi så at du kan i utgangspunktet 797 00:44:26,210 --> 00:44:31,090 forvente at variabelen du får tilbake fra en funksjon vil være av typen 798 00:44:31,090 --> 00:44:32,780 at du tror det vil være, i utgangspunktet. 799 00:44:32,780 --> 00:44:36,550 >> Men det er noen metoder som du kan sjekke. 800 00:44:36,550 --> 00:44:39,801 Jeg kan ikke huske dem på toppen av hodet mitt. 801 00:44:39,801 --> 00:44:43,300 Jeg venter på det å bli blått. 802 00:44:43,300 --> 00:44:45,560 isint? 803 00:44:45,560 --> 00:44:48,070 isstr? 804 00:44:48,070 --> 00:44:52,000 Det finnes metoder innebygd i PHP som kan 805 00:44:52,000 --> 00:44:54,440 sjekk den type variabler for deg. 806 00:44:54,440 --> 00:44:58,250 Men hvis du tilordne variabler smart, bør du ikke 807 00:44:58,250 --> 00:45:01,330 må gjøre det for mye i PSet 7. 808 00:45:01,330 --> 00:45:02,780 Men disse metodene finnes. 809 00:45:02,780 --> 00:45:06,704 Og det er noe som er i språket i seg selv. 810 00:45:06,704 --> 00:45:08,370 Og jeg husker ikke nøyaktig syntaks. 811 00:45:08,370 --> 00:45:09,930 Vi kunne selv slå det opp. 812 00:45:09,930 --> 00:45:11,974 Men tiden er kjernen. 813 00:45:11,974 --> 00:45:13,890 har Har noen andre har flere spørsmål? 814 00:45:13,890 --> 00:45:14,660 Ja. 815 00:45:14,660 --> 00:45:15,951 >> PUBLIKUM: Jeg har bare en mer. 816 00:45:15,951 --> 00:45:19,050 Så du nevnte GET-metoden, men du nevner ikke POST-metoden. 817 00:45:19,050 --> 00:45:20,500 Vi kommer tilbake til det? 818 00:45:20,500 --> 00:45:21,540 >> SPEAKER: Ja, vil vi komme tilbake til det. 819 00:45:21,540 --> 00:45:24,840 Det er akkurat det jeg var ute på min telefon, som nå sovnet, 820 00:45:24,840 --> 00:45:26,960 men jeg finner den. 821 00:45:26,960 --> 00:45:30,680 Bare pass på at vi treffer alle PHP notater. 822 00:45:30,680 --> 00:45:35,640 Jepp, det er ingen debugging versjon. 823 00:45:35,640 --> 00:45:41,940 Ja, vi har noen flere ting som vi ønsker å gjøre nå på dette punktet. 824 00:45:41,940 --> 00:45:45,980 >> Så snakker om POST, som du nevnte, 825 00:45:45,980 --> 00:45:49,630 den eneste forskjellen mellom GET og POST er 826 00:45:49,630 --> 00:45:53,150 som husker da vi så på denne nettadressen, og vi så, oh, 827 00:45:53,150 --> 00:45:58,270 navn tilsvarer en og alder er lik yarp har rett i nettadressen der for oss. 828 00:45:58,270 --> 00:46:03,300 POST er litt mer hemmelighets med sin passering av informasjon. 829 00:46:03,300 --> 00:46:08,090 >> Så hvis du ikke vil at en bruker kjent, for eksempel, du 830 00:46:08,090 --> 00:46:11,160 ikke ønsket brukernavn og passord på personen 831 00:46:11,160 --> 00:46:15,080 logget inn for å bli vist i URL-adressen, som er en fornuftig ting 832 00:46:15,080 --> 00:46:17,770 å ikke ha i nettadressen, fordi noen kan se det. 833 00:46:17,770 --> 00:46:21,520 Hvis de knytter noen til en side, du ønsker ikke deres URL pusset der, 834 00:46:21,520 --> 00:46:27,850 fordi det ville tillate folk å logge inn bare med lime av en URL i stedet 835 00:46:27,850 --> 00:46:29,670 for faktisk å fylle ut et skjema. 836 00:46:29,670 --> 00:46:31,710 POST er litt mer hemmelighetsfull. 837 00:46:31,710 --> 00:46:34,150 >> Og det eneste som vi må endre 838 00:46:34,150 --> 00:46:38,550 er denne metoden, endringen fra å komme til innlegget. 839 00:46:38,550 --> 00:46:42,367 Og så inne i HTTP, i stedet for tilgang rekken _GET, 840 00:46:42,367 --> 00:46:43,950 vi kommer til å få tilgang rekken _POST. 841 00:46:43,950 --> 00:46:48,600 >> Og vi vil legge merke til at dersom vi åpner dette opp igjen, 842 00:46:48,600 --> 00:46:51,910 Jason langsomt avtar i alder. 843 00:46:51,910 --> 00:46:53,230 navn Jason, alder 14. 844 00:46:53,230 --> 00:46:54,280 De samme tingene spretter opp. 845 00:46:54,280 --> 00:46:57,190 Men vi går til nettadressen og disse variablene er ikke der. 846 00:46:57,190 --> 00:47:00,540 >> Og måten POST passes-- så husk 847 00:47:00,540 --> 00:47:02,750 hvordan å se på kilden til en side. 848 00:47:02,750 --> 00:47:04,570 Vi går til nettverket. 849 00:47:04,570 --> 00:47:06,920 Vi oppdatere. 850 00:47:06,920 --> 00:47:10,690 Og dette er en annen ting som POST vil gi deg advarsler om. 851 00:47:10,690 --> 00:47:15,050 Du har kanskje sett en boks, en tekst box som dette i nettleseren din. 852 00:47:15,050 --> 00:47:18,170 Er du sikker på at du vil å sende en form igjen? 853 00:47:18,170 --> 00:47:21,170 POST er hva som er å sende disse skjemaene. 854 00:47:21,170 --> 00:47:24,680 >> Fordi utgangspunktet hvis du har sendt din kredittkortinformasjon til noen, 855 00:47:24,680 --> 00:47:26,350 som ikke kommer til å dukke opp i nettadressen. 856 00:47:26,350 --> 00:47:28,180 Det kommer til å bli en POST-forespørsel. 857 00:47:28,180 --> 00:47:32,905 Så når du oppdaterer siden, det er den sender det innlegget forespørsel. 858 00:47:32,905 --> 00:47:35,530 Så nå er vi ønsker å sende danner igjen fordi det ikke kommer 859 00:47:35,530 --> 00:47:37,340 å skape noen dupliserte kjøp. 860 00:47:37,340 --> 00:47:41,160 >> Og vi vil legge merke til at her nede, metoden vi bruker er POST. 861 00:47:41,160 --> 00:47:43,065 Og det gjorde faktisk overføre bytes. 862 00:47:43,065 --> 00:47:45,460 Det overførte 401 av dem. 863 00:47:45,460 --> 00:47:47,190 Programmet er ganske liten. 864 00:47:47,190 --> 00:47:51,600 Men det er intet som vi kan se verdiene som blir vedtatt. 865 00:47:51,600 --> 00:47:59,540 Nettsidene selv kan se, men vi som brukere ikke er i stand til å se, 866 00:47:59,540 --> 00:48:01,650 med mindre du er en hacker. 867 00:48:01,650 --> 00:48:05,340 Hvis du er en god hacker, kan du se. 868 00:48:05,340 --> 00:48:09,360 >> Hvis du vet det grunnleggende format av HTML, 869 00:48:09,360 --> 00:48:11,790 verdiene vil gjøre seg kjent på sidene. 870 00:48:11,790 --> 00:48:13,160 Du vil være i stand til å se. 871 00:48:13,160 --> 00:48:16,720 Verdiene vil være der, de er bare litt mindre opplagt for deg 872 00:48:16,720 --> 00:48:19,522 å få tilgang til, i utgangspunktet. 873 00:48:19,522 --> 00:48:23,620 >> Har vi noe mer spørsmål om GET, POST 874 00:48:23,620 --> 00:48:26,800 before-- hva vi skal gjøre videre er faktisk ser på noen av koden 875 00:48:26,800 --> 00:48:30,837 at du gir i PSet 7, snakke om hvordan den bruker noen av disse begrepene, 876 00:48:30,837 --> 00:48:32,670 og snakke om ting som du skal 877 00:48:32,670 --> 00:48:35,090 til å gjøre litt i PSet 7. 878 00:48:35,090 --> 00:48:36,760 Flere spørsmål før det? 879 00:48:36,760 --> 00:48:38,047 Flere spørsmål dere har? 880 00:48:38,047 --> 00:48:41,250 881 00:48:41,250 --> 00:48:41,840 Flott. 882 00:48:41,840 --> 00:48:45,370 >> Greit, la oss se litt på PSet 7, 883 00:48:45,370 --> 00:48:49,530 ingen tvil om hva du er alle mest begeistret for. 884 00:48:49,530 --> 00:48:52,126 885 00:48:52,126 --> 00:48:54,750 Jeg mener, dette er noe som David går gjennom en liten bit. 886 00:48:54,750 --> 00:49:00,890 Men vi vil ha tre kataloger på topp, samt en konfigurasjonsfil. 887 00:49:00,890 --> 00:49:04,650 Det er for databaser, som vi vil snakke om i omtrent fem minutter. 888 00:49:04,650 --> 00:49:07,220 Inkluderer du aldri trenger å se i denne katalogen 889 00:49:07,220 --> 00:49:12,480 hvis du ikke vil, men det er fint å vet det er alle slags hjelpere. 890 00:49:12,480 --> 00:49:14,210 Hjelpere er like nyttige funksjoner. 891 00:49:14,210 --> 00:49:18,120 Og så har vi config, som setter noen ting opp. 892 00:49:18,120 --> 00:49:24,590 >> Det er noen funksjoner som CS50 har skrevet at er i hjelper og config. 893 00:49:24,590 --> 00:49:27,250 Og noen av PHP som allerede kommer ut i filer 894 00:49:27,250 --> 00:49:30,880 vil gjøre mye av de mer sort av stumpe etappe arbeidet for deg. 895 00:49:30,880 --> 00:49:35,250 Som hvis vi går inn i offentlig login.php, som er det 896 00:49:35,250 --> 00:49:38,350 dukker opp til høyre når du går inn PSet 7. 897 00:49:38,350 --> 00:49:40,580 Vi vil se at det er Dette krever uttalelse. 898 00:49:40,580 --> 00:49:43,420 Og det liksom som en skarp inkluderer hashtag 899 00:49:43,420 --> 00:49:46,850 inkluderer hvis du er av en nyere generasjon. 900 00:49:46,850 --> 00:49:49,740 Men dette utgangspunktet sier at jeg trenger tilgang 901 00:49:49,740 --> 00:49:52,260 til alle funksjoner i config.php. 902 00:49:52,260 --> 00:49:55,290 Og du kan ha et behov for alle slags andre ting. 903 00:49:55,290 --> 00:49:59,670 >> config krever faktisk hjelpere. 904 00:49:59,670 --> 00:50:02,490 Så når du trenger config, du også 905 00:50:02,490 --> 00:50:05,660 inkludert eller krever hjelpere i tillegg. 906 00:50:05,660 --> 00:50:09,590 Slik som gir deg tilgang til alle kule funksjoner som vi kommer til å bruke, 907 00:50:09,590 --> 00:50:10,420 Ting som gjengi. 908 00:50:10,420 --> 00:50:13,490 Jeg faktisk kommer til å lette dette ned litt. 909 00:50:13,490 --> 00:50:16,280 Så funksjonen da er vi kommer til å gå gjennom 910 00:50:16,280 --> 00:50:22,380 like før vi går videre til SQL litt bit er login.php funksjon, bare 911 00:50:22,380 --> 00:50:26,586 fordi den bruker noen av temaene at vi bare snakket om i PHP. 912 00:50:26,586 --> 00:50:30,840 >> Du ser det første er hvis $ _SERVER. 913 00:50:30,840 --> 00:50:34,500 Dette er en annen global variabel som du kommer til å være med å gjøre. 914 00:50:34,500 --> 00:50:38,460 Det er som _GET og _POST, men hva Serveren inneholder dette kan la deg 915 00:50:38,460 --> 00:50:42,730 vite om forespørselen metode var en GET eller POST. 916 00:50:42,730 --> 00:50:47,250 Som tidligere hva vi gjorde er bare i vår kode som vi skrev, 917 00:50:47,250 --> 00:50:51,880 vi var bare å endre det å være få og POST avhengig av hva HTML har. 918 00:50:51,880 --> 00:50:55,120 Men det er sider som kan være nås med begge typer henvendelser. 919 00:50:55,120 --> 00:50:57,410 Og du vil kanskje gjøre forskjellige ting avhengig 920 00:50:57,410 --> 00:50:59,740 av typen anmodning akkurat som innlogging gjør. 921 00:50:59,740 --> 00:51:04,400 >> Så du kan sjekke at forespørselen metoden gjennom tilgang til nøkler, 922 00:51:04,400 --> 00:51:08,630 gjennom å bruke en nøkkel og få verdien av noe i ordlisten 923 00:51:08,630 --> 00:51:10,260 _SERVER. 924 00:51:10,260 --> 00:51:13,800 Så det er en annen global variable som _GET og _POST. 925 00:51:13,800 --> 00:51:16,990 >> Hvis det er GET, vi ønsker å gjengi innloggingsskjemaet. 926 00:51:16,990 --> 00:51:21,920 Render er en funksjon som i utgangspunktet bare setter opp den aktuelle HTML 927 00:51:21,920 --> 00:51:24,500 og sender den enkelte parametere. 928 00:51:24,500 --> 00:51:28,740 Denne tittelen er en parameter som er brukes i visning, merkelig nok, 929 00:51:28,740 --> 00:51:32,670 tittelen på siden i spørsmålet, tingen her oppe, 930 00:51:32,670 --> 00:51:34,850 si eller hallo i vår forrige eksempel. 931 00:51:34,850 --> 00:51:36,100 Nå har vi en annen ting. 932 00:51:36,100 --> 00:51:38,570 Annet hvis det er POST, vi gjøre noen andre ting. 933 00:51:38,570 --> 00:51:40,790 Vi bruker den tomme metoden. 934 00:51:40,790 --> 00:51:42,750 Det er ikke eksisterer, den er tom. 935 00:51:42,750 --> 00:51:45,440 Og vi så før, PHP har en god del av bygget 936 00:51:45,440 --> 00:51:52,370 i metoder som David will-- hvis det er metoder som er nyttige for deg, 937 00:51:52,370 --> 00:51:55,560 de vil bli varslet til deg i går gjennom at David 938 00:51:55,560 --> 00:51:59,770 gir i begynnelsen oversikt, og også Zamyla er nyttige biter. 939 00:51:59,770 --> 00:52:01,040 Hun er tilbake alle. 940 00:52:01,040 --> 00:52:03,100 Vi kan alle glede seg. 941 00:52:03,100 --> 00:52:06,530 beklager er et treffende navn funksjon at bare utgangspunktet skrives ut 942 00:52:06,530 --> 00:52:10,130 noen feilmeldinger, fordi CS50 er veldig høflig. 943 00:52:10,130 --> 00:52:14,770 >> Og nå dette, dette er en vanskelige biten fordi dette 944 00:52:14,770 --> 00:52:16,697 er der vi spørre databasen. 945 00:52:16,697 --> 00:52:18,280 Nå har vi ikke snakket om databaser. 946 00:52:18,280 --> 00:52:22,220 Og vi kommer til i neste fem minutter eller så, maksimum. 947 00:52:22,220 --> 00:52:24,980 Men dette er en funksjon at CS50 har skrevet 948 00:52:24,980 --> 00:52:38,050 for å få en tabell i utgangspunktet fra en database at vi arbeider med i PSet 7. 949 00:52:38,050 --> 00:52:40,860 Jeg er veldig dårlig med min null indeksering dag. 950 00:52:40,860 --> 00:52:42,060 Men ja, det er syv. 951 00:52:42,060 --> 00:52:46,340 >> Så spør det kommer til å returnere en matrise, er i utgangspunktet den nøkkelskjegget. 952 00:52:46,340 --> 00:52:54,130 Og fordi disse tingene ikke har skrive, så rekker er en matrise av arrays. 953 00:52:54,130 --> 00:52:59,480 Fordi når vi tenker på et bord, hva vi skal gjøre 954 00:52:59,480 --> 00:53:04,830 er, som du lærte i psets som spillet på 15, uansett 955 00:53:04,830 --> 00:53:06,990 hvor du måtte bruke en double array, vi i utgangspunktet 956 00:53:06,990 --> 00:53:15,210 har rekke andre arrays gjør en tabell. 957 00:53:15,210 --> 00:53:18,150 Og du har rader og kolonner. 958 00:53:18,150 --> 00:53:24,450 Og så kan du få tilgang til dem som [0] [1], får du [0] [1]. 959 00:53:24,450 --> 00:53:26,900 Grunnleggende ting som det. 960 00:53:26,900 --> 00:53:29,380 >> Så hva vi gjør her i denne funksjonen 961 00:53:29,380 --> 00:53:35,070 vi ber databasen hvis brukeren som er 962 00:53:35,070 --> 00:53:40,200 prøver å logge inn, vil det være sendes gjennom POST-metoden. 963 00:53:40,200 --> 00:53:43,950 Vi får se vi får brukernavn fra _POST. 964 00:53:43,950 --> 00:53:46,900 De vil har sendt, brukeren eller du vil sende en verdi 965 00:53:46,900 --> 00:53:50,750 gjennom en form gjennom POST fordi det er brukernavn og passord ting. 966 00:53:50,750 --> 00:53:54,830 Vi sjekker inn brukernavn å se, er dette i tabellen? 967 00:53:54,830 --> 00:53:58,070 Fordi hvis en bruker logger i, da deres brukernavn 968 00:53:58,070 --> 00:54:03,320 bør lagres i tabellen over brukere som eksisterer for dette nettstedet. 969 00:54:03,320 --> 00:54:09,360 Så i utgangspunktet hvis Brukeren er i databasen, 970 00:54:09,360 --> 00:54:16,400 spørring kommer til å returnere denne raden, som er en matrise. 971 00:54:16,400 --> 00:54:24,560 >> Men den vanskelige delen er at hvis selv om den doble matrise er bare av en rad, 972 00:54:24,560 --> 00:54:31,900 selv om det er en en rad array-- som du har fått basically-- 973 00:54:31,900 --> 00:54:36,900 hvis du har en størrelse ett array som holder en annen array, 974 00:54:36,900 --> 00:54:38,940 du egentlig gjøre med én kolonne. 975 00:54:38,940 --> 00:54:41,420 Men det er fortsatt behandlet som en dobbel array. 976 00:54:41,420 --> 00:54:44,560 >> Og det er her det kan noen ganger få vanskelig, fordi vi har fått rader her. 977 00:54:44,560 --> 00:54:46,440 Vår variabelen er rader. 978 00:54:46,440 --> 00:54:48,590 Og så skal vi lage en ny variabel kalt rad 979 00:54:48,590 --> 00:54:51,450 og sette den lik den første raden av rader. 980 00:54:51,450 --> 00:54:55,150 Og du vil merke at kommentaren sier det er den første og eneste rad. 981 00:54:55,150 --> 00:54:57,080 >> Så dette er vanskelig del der nå funksjoner 982 00:54:57,080 --> 00:54:59,660 kan returnere arrays meget lett. 983 00:54:59,660 --> 00:55:01,270 Det er ikke mallocs. 984 00:55:01,270 --> 00:55:02,280 Du vil ikke se mallocs. 985 00:55:02,280 --> 00:55:03,940 Så du vil ikke se SEG feil. 986 00:55:03,940 --> 00:55:08,380 Men funksjoner vil fortsatt være bestått rundt arrays og data i grupper. 987 00:55:08,380 --> 00:55:12,250 Og du må være forsiktig med hva akkurat dine funksjoner vil returnere. 988 00:55:12,250 --> 00:55:15,160 Og selv om det er en kolonne som dette, må du sjekke 989 00:55:15,160 --> 00:55:17,520 er fortsatt kommer til å returnere en dobbel array. 990 00:55:17,520 --> 00:55:21,390 Så for å tilgang som column-- eller du kan tenke på alt dette som invertert 991 00:55:21,390 --> 00:55:22,870 siden vi snakker om rader. 992 00:55:22,870 --> 00:55:26,810 Men for å få tilgang til én rad, du kan ikke bare si rader. 993 00:55:26,810 --> 00:55:31,540 Selv om det er én rad, må du trenger rowsrows [0] for å liksom eliminere denne 994 00:55:31,540 --> 00:55:37,360 ytre bit av tabellen og har bare din én rad. 995 00:55:37,360 --> 00:55:38,342 >> Gjøre noen andre ting. 996 00:55:38,342 --> 00:55:40,050 Det er en funksjon kalt password_verify 997 00:55:40,050 --> 00:55:42,980 som verifiserer passordet som ble postet. 998 00:55:42,980 --> 00:55:48,500 Og så ser vi en annen global variabel her, _SESSION. 999 00:55:48,500 --> 00:55:51,340 I utgangspunktet session id er hvordan du holde styr 1000 00:55:51,340 --> 00:55:53,990 av om noen er logget på eller ikke. 1001 00:55:53,990 --> 00:55:58,590 Så akkurat nå med login.php, vi logger en bruker i. 1002 00:55:58,590 --> 00:56:01,920 Så det vi ønsker å gjøre er vi ønsker å si økten id er lik rad 1003 00:56:01,920 --> 00:56:05,890 id, som bare er fornuftig fordi hver rad vil ha en annen id 1004 00:56:05,890 --> 00:56:07,239 antall som en del av bordet. 1005 00:56:07,239 --> 00:56:09,280 Vi får inn SQL i en sekund, slik at hvis noe av denne 1006 00:56:09,280 --> 00:56:13,500 virker litt som blah, så alt vil bli ryddet opp. 1007 00:56:13,500 --> 00:56:18,450 Men vi kommer til å sette id lik den riktige tingen, logger brukeren i. 1008 00:56:18,450 --> 00:56:20,530 Beklager hvis noe går galt. 1009 00:56:20,530 --> 00:56:27,600 Og det er innlogginger formål i livet som professor Malan ville si. 1010 00:56:27,600 --> 00:56:29,130 >> Så det var login.php. 1011 00:56:29,130 --> 00:56:33,750 Og mye av PHP koden du skriver i PSet 7, vil de være litt. 1012 00:56:33,750 --> 00:56:36,470 Ikke glem å chmod til de riktige tillatelsene. 1013 00:56:36,470 --> 00:56:40,180 Det vil være litt om at det i begynnelsen av spesifikasjonen. 1014 00:56:40,180 --> 00:56:46,382 >> Men PHP som du er skriving kommer til å være 1015 00:56:46,382 --> 00:56:47,840 gjøre ting som ligner på dette. 1016 00:56:47,840 --> 00:56:49,715 Du kommer til å være tilgang til noen ting som 1017 00:56:49,715 --> 00:56:52,760 er gitt til deg i globale variabler i PHP som 1018 00:56:52,760 --> 00:56:56,105 har å gjøre med den nåværende innlogget bruker, om det 1019 00:56:56,105 --> 00:57:00,460 har vært forespørsler sendes til denne side, forskjellige ting som det. 1020 00:57:00,460 --> 00:57:05,790 Og det vil også være potensielt itera gjennom rader av denne tingen. 1021 00:57:05,790 --> 00:57:09,010 >> I en annen funksjon, spørring starter opp igjen denne doble array. 1022 00:57:09,010 --> 00:57:11,450 Og hvis det er flere enn én rader i det, 1023 00:57:11,450 --> 00:57:15,080 Hvis det are-- ja, hvis der er mer enn én rader i det, 1024 00:57:15,080 --> 00:57:16,870 så vil det være en tabell. 1025 00:57:16,870 --> 00:57:20,500 Og du vil kanskje reagere gjennom radene av denne matrisen ved hjelp 1026 00:57:20,500 --> 00:57:22,860 foreach loop som vi beskrev. 1027 00:57:22,860 --> 00:57:30,270 >> Så hvis du gjør foreach på en dobbel array, hva vil word-- her, 1028 00:57:30,270 --> 00:57:31,909 Jeg skal faktisk skrive det. 1029 00:57:31,909 --> 00:57:32,950 Jeg skal skrive det raskt her. 1030 00:57:32,950 --> 00:57:44,280 >> Hvis vi har en foreach rader som rad, hva er den type rad? 1031 00:57:44,280 --> 00:57:45,390 Er det noen som vet? 1032 00:57:45,390 --> 00:57:54,000 1033 00:57:54,000 --> 00:57:54,500 Du har det? 1034 00:57:54,500 --> 00:57:57,110 Så rekker er en dobbel array. 1035 00:57:57,110 --> 00:58:02,810 Så hva er foreach kommer til å antyde at vi ønsker fra denne doble utvalg 1036 00:58:02,810 --> 00:58:04,280 hvis vi gjentar over det? 1037 00:58:04,280 --> 00:58:07,170 1038 00:58:07,170 --> 00:58:10,770 Vi kan i utgangspunktet anta at det kommer til å være enten elementer, 1039 00:58:10,770 --> 00:58:14,970 eller rader eller kolonner, i utgangspunktet. 1040 00:58:14,970 --> 00:58:18,740 Og så rader og kolonner vi kan behandle som det samme. 1041 00:58:18,740 --> 00:58:23,880 >> I utgangspunktet hva foreach løkke kommer å gjøre er det kommer til å returnere rader. 1042 00:58:23,880 --> 00:58:28,500 rad kommer til å være av typen p, mens radene er en dobbel array. 1043 00:58:28,500 --> 00:58:32,290 Så hvis du gir foreach en dobbel array, er det 1044 00:58:32,290 --> 00:58:35,830 ikke kommer til å reagere mer enn ett nivå. 1045 00:58:35,830 --> 00:58:44,464 Som er utgangspunktet for å si om det er åtte celler i denne table-- 1,2, 1046 00:58:44,464 --> 00:58:48,110 3 4, 5, 6, 7, 8-- den foreach løkke er ikke 1047 00:58:48,110 --> 00:58:51,880 kommer til å gå gjennom hver av disse cellene. 1048 00:58:51,880 --> 00:58:56,390 Hva foreach løkke vil gjøre ble det vil gå gjennom denne rad, 1049 00:58:56,390 --> 00:58:57,870 gi deg hele denne raden. 1050 00:58:57,870 --> 00:58:59,410 Og så skal det gå gjennom den raden. 1051 00:58:59,410 --> 00:59:01,850 >> Så det bare gjentar ett nivå dypt. 1052 00:59:01,850 --> 00:59:05,310 Hvis du legger til en nestet foreach loop, så du 1053 00:59:05,310 --> 00:59:16,280 kan behandle hver rad returnert fra rader, gjør du foreach rad som element, 1054 00:59:16,280 --> 00:59:17,640 la oss si. 1055 00:59:17,640 --> 00:59:22,750 Og så kan du ekko elementet. 1056 00:59:22,750 --> 00:59:24,930 Så det er en kort liten oppfriskning på hvordan 1057 00:59:24,930 --> 00:59:30,220 du kanskje bruker foreach looper i sammenheng med søket. 1058 00:59:30,220 --> 00:59:32,840 >> Er det noe du lurer på PHP? 1059 00:59:32,840 --> 00:59:36,520 Noe som helst før vi gå videre til å snakke om SQL 1060 00:59:36,520 --> 00:59:37,820 og moro av databasen? 1061 00:59:37,820 --> 00:59:41,480 1062 00:59:41,480 --> 00:59:42,110 Føles godt? 1063 00:59:42,110 --> 00:59:42,750 Føles godt. 1064 00:59:42,750 --> 00:59:43,470 Greit. 1065 00:59:43,470 --> 00:59:49,130 >> La oss gå videre tilbake til PowerPoint, som du sannsynligvis glipp av. 1066 00:59:49,130 --> 00:59:51,800 SQL, yay. 1067 00:59:51,800 --> 00:59:57,900 Folk som er i min seksjon typisk vil vite at varenumrene til akronymer 1068 00:59:57,900 --> 01:00:01,220 er alltid bare de første ordene Jeg tenker på den kampen som 1069 01:00:01,220 --> 01:00:02,690 algorithm-- at akronym. 1070 01:00:02,690 --> 01:00:04,090 Det er ikke en algoritme. 1071 01:00:04,090 --> 01:00:08,050 >> Så SQL er en database. 1072 01:00:08,050 --> 01:00:11,060 Det er et språk som arbeider med databaser. 1073 01:00:11,060 --> 01:00:14,440 Og alle databaser er er bord, i det minste på den måten 1074 01:00:14,440 --> 01:00:17,220 at SQL representerer dem. 1075 01:00:17,220 --> 01:00:23,610 >> En annen måte å tenke på databaser er databaser er et sett med nøkler og verdier 1076 01:00:23,610 --> 01:00:24,110 i utgangspunktet. 1077 01:00:24,110 --> 01:00:29,530 Du kan tenke på en database som en ordbok og også som en tabell. 1078 01:00:29,530 --> 01:00:34,300 I utgangspunktet er det en måte å knytte forskjellige data med andre data, 1079 01:00:34,300 --> 01:00:36,270 ofte gjennom rader og kolonner. 1080 01:00:36,270 --> 01:00:38,470 Og det er slik det er SQL fungerer best. 1081 01:00:38,470 --> 01:00:40,880 >> Så dette er et eksempel på et bord. 1082 01:00:40,880 --> 01:00:44,610 Jeg har et par eksempler på mennesker i avsnittet mitt, som 1083 01:00:44,610 --> 01:00:45,970 Jeg hadde ikke tid til å endre. 1084 01:00:45,970 --> 01:00:52,020 Men vi har fått ting som ID, navn, supermakt, og hjemby. 1085 01:00:52,020 --> 01:00:54,100 Jeg vet ikke hvor alle er fra i min del, 1086 01:00:54,100 --> 01:00:56,266 så jeg skal bare anta alle er fra New York 1087 01:00:56,266 --> 01:00:59,370 Byen fordi jeg har en høy statistisk sannsynlighet for å være riktig. 1088 01:00:59,370 --> 01:01:04,200 >> SQL vil automatisk ta omsorg av ID-kolonnen for deg. 1089 01:01:04,200 --> 01:01:07,560 Hvis du setter inn en ny rad inn i en SQL database, 1090 01:01:07,560 --> 01:01:09,700 det vil øke som ID-nummer og bare 1091 01:01:09,700 --> 01:01:14,890 utgangspunktet stikke ut fem navn, supermakt, hjemby, hvem 1092 01:01:14,890 --> 01:01:16,430 på enden av den tabellen. 1093 01:01:16,430 --> 01:01:19,160 Så ID er en kolonne du vil aldri trenger å bekymre seg for. 1094 01:01:19,160 --> 01:01:22,770 Men, som i tilfellet av login.php, når vi 1095 01:01:22,770 --> 01:01:26,610 var å få økt-ID fra et bord og bare bruker-ID, 1096 01:01:26,610 --> 01:01:30,320 ID er en måte å identifisere et element av en database. 1097 01:01:30,320 --> 01:01:34,980 >> Så hvis vi hadde to Sams, som begge som underviste CS50, og begge som 1098 01:01:34,980 --> 01:01:39,370 var fra Milwaukee, de ville fortsatt har forskjellige ID-numre 1099 01:01:39,370 --> 01:01:43,420 og dermed være tydelig i sammenheng med tabellen. 1100 01:01:43,420 --> 01:01:48,700 Så dette er hva SQL er å håndtere med, arbeider med i bakenden. 1101 01:01:48,700 --> 01:01:54,160 >> Nå er det disse fire kommandoer at du må jobbe med SQL. 1102 01:01:54,160 --> 01:01:56,390 Og jeg kastet dem opp på ett lysbilde. 1103 01:01:56,390 --> 01:01:59,530 Men vi kommer til å gå gjennom dem alle individuelt. 1104 01:01:59,530 --> 01:02:03,300 >> Den første kommandoen er UPDATE, som gjør hva man kunne forvente. 1105 01:02:03,300 --> 01:02:07,240 Fortell at du har noen data i tabellen som er gått ut på dato. 1106 01:02:07,240 --> 01:02:09,470 Som hvis du holder styr på folks navn 1107 01:02:09,470 --> 01:02:13,350 og aldre, hvis noen er alder øker, deretter 1108 01:02:13,350 --> 01:02:18,590 du kommer til å ønske å gå inn og oppdatere bare at personens alder. 1109 01:02:18,590 --> 01:02:21,902 For et eksempel som fungerer med vår første table-- 1110 01:02:21,902 --> 01:02:24,610 ikke bry deg om å skrive alle Disse kommandoene på samme tid. 1111 01:02:24,610 --> 01:02:27,640 Men hvis du har fått oppdateringen ned, som vil være bra for denne delen, 1112 01:02:27,640 --> 01:02:29,790 fordi vi kommer til å gå tilbake til bordet. 1113 01:02:29,790 --> 01:02:33,920 >> Så hvis vi går tilbake til bordet, la oss si noe som skjedde 1114 01:02:33,920 --> 01:02:38,480 var at det var et jordskjelv eller en feil linje som deles direkte 1115 01:02:38,480 --> 01:02:39,920 gjennom New York City. 1116 01:02:39,920 --> 01:02:45,130 Og vi ønsket å oppdatere alle som bodde i New York City. 1117 01:02:45,130 --> 01:02:49,670 De måtte flytte til Pennsylvania. 1118 01:02:49,670 --> 01:02:51,130 Det er ikke en hjemby. 1119 01:02:51,130 --> 01:02:53,180 De måtte flytte til New Haven. 1120 01:02:53,180 --> 01:02:54,030 Det vi går. 1121 01:02:54,030 --> 01:02:57,630 Slik at alle i New York flytter til New Haven. 1122 01:02:57,630 --> 01:03:01,300 >> Og så det er noe som er redigering av tre rader i denne tabellen. 1123 01:03:01,300 --> 01:03:04,716 Men i SQL, kan du gjøre at i bare en uttalelse. 1124 01:03:04,716 --> 01:03:05,715 Så vi går tilbake for å oppdatere. 1125 01:03:05,715 --> 01:03:09,670 La meg raskt slette dette brettet igjen. 1126 01:03:09,670 --> 01:03:14,570 Når vi snakker om oppdatering, det er 1127 01:03:14,570 --> 01:03:17,640 noen deler av syntaks som er nøkkelen. 1128 01:03:17,640 --> 01:03:19,770 Vel, alt av syntaksen nøkkelen. 1129 01:03:19,770 --> 01:03:22,210 Men ting i grønt er valgfritt. 1130 01:03:22,210 --> 01:03:25,680 Den hvite er nødvendig, som forhåndsdefinerte navn. 1131 01:03:25,680 --> 01:03:30,750 Og den lyseblå er ting som varierer avhengig av bordet. 1132 01:03:30,750 --> 01:03:34,640 Så det er hva som skjer med fargevalget her, der oppe. 1133 01:03:34,640 --> 01:03:40,250 >> Så hvis vi ønsker å oppdatere bare de radene av folk som bor i New York, 1134 01:03:40,250 --> 01:03:43,490 så hva vi skulle gjøre hvis vi sa UPDATE? 1135 01:03:43,490 --> 01:03:46,320 Så tabellen er der vi legger navnet på vår bord. 1136 01:03:46,320 --> 01:03:49,170 La oss bare si navnet av bordet vårt er bordet en. 1137 01:03:49,170 --> 01:03:52,515 Så vi ønsker å oppdatere tabellen én. 1138 01:03:52,515 --> 01:03:57,470 Og vi ønsker å set-- hva gjør vi ønsker å stille? 1139 01:03:57,470 --> 01:04:05,160 Vel, vi ønsker å si, så column-- PHP behandler rader som unike identifikatorer. 1140 01:04:05,160 --> 01:04:07,930 Og så kolonnene er de ulike feltene 1141 01:04:07,930 --> 01:04:09,940 av disse elementer i databasen. 1142 01:04:09,940 --> 01:04:14,210 >> Slik at det første element av databasen har et navn av Sam, supermakt av CS50, 1143 01:04:14,210 --> 01:04:16,210 og en hjemby Milwaukee. 1144 01:04:16,210 --> 01:04:20,710 Så hvis vi nevnte sett, la oss se på parametrene igjen at settet tar. 1145 01:04:20,710 --> 01:04:23,880 Vi har kolonne lik verdi. 1146 01:04:23,880 --> 01:04:27,290 Så vi ønsker å si noe column-- som husker 1147 01:04:27,290 --> 01:04:31,850 er en field-- vi ønsker å se en feltet lik noe nytt. 1148 01:04:31,850 --> 01:04:42,340 >> Så hvis vi bare sa oppdatering tabell 1, setter navn lik Elliot. 1149 01:04:42,340 --> 01:04:46,310 Få noen folk fra ny seksjon med på dette. 1150 01:04:46,310 --> 01:04:51,540 Men hvis vi bare gjorde oppdatering tabell 1 sette navn lik Elliot, hva ville 1151 01:04:51,540 --> 01:04:55,530 tabellen ser ut etter det? 1152 01:04:55,530 --> 01:04:56,410 Folk har noen ide? 1153 01:04:56,410 --> 01:04:59,710 1154 01:04:59,710 --> 01:05:00,210 Yeah. 1155 01:05:00,210 --> 01:05:03,195 >> PUBLIKUM: Alt i at rad skulle bli Elliot. 1156 01:05:03,195 --> 01:05:04,570 SPEAKER: Alt i hvilken rad? 1157 01:05:04,570 --> 01:05:06,067 PUBLIKUM: I den første raden. 1158 01:05:06,067 --> 01:05:07,150 SPEAKER: I den første raden? 1159 01:05:07,150 --> 01:05:09,724 Hvorfor den første raden? 1160 01:05:09,724 --> 01:05:10,890 Jeg mener ikke å hakke på deg. 1161 01:05:10,890 --> 01:05:13,287 >> PUBLIKUM: Kanskje alt i hele bordet? 1162 01:05:13,287 --> 01:05:15,120 SPEAKER: Alt i hele tabellen, ja. 1163 01:05:15,120 --> 01:05:19,520 Og det er helt riktig because-- jeg var bare å hjelpe deg ut litt 1164 01:05:19,520 --> 01:05:22,650 det-- fordi vi utelatt tilleggs WHERE klausulen. 1165 01:05:22,650 --> 01:05:27,260 Hvis du ikke har WHERE klausul, hva denne kommandoen vil gjøre 1166 01:05:27,260 --> 01:05:32,240 er det vil fungere med alle enkelt rad i tabellen. 1167 01:05:32,240 --> 01:05:35,430 Alles navn vil blir Elliott, i utgangspunktet, 1168 01:05:35,430 --> 01:05:37,360 som Elliot er veldig fornøyd med. 1169 01:05:37,360 --> 01:05:40,070 Eller Yanni, en av de to. 1170 01:05:40,070 --> 01:05:42,490 Men alles navn vil endre seg. 1171 01:05:42,490 --> 01:05:47,880 >> Så måten vi bruker WHERE clause-- og dette gjelder for alle de Wheres 1172 01:05:47,880 --> 01:05:51,410 det er i hver av disse forskjellige ting. 1173 01:05:51,410 --> 01:05:54,380 Så vil du legge merke til at SET har kolonne lik verdi. 1174 01:05:54,380 --> 01:05:55,190 Og det gjør HVOR. 1175 01:05:55,190 --> 01:06:00,040 Men disse er forskjellige typer utsagn. 1176 01:06:00,040 --> 01:06:04,400 Så kolonnen lik verdi i SET er i oppdrag. 1177 01:06:04,400 --> 01:06:08,320 Som vi sier vi vil ha å sette navn lik Elliot. 1178 01:06:08,320 --> 01:06:15,390 Men i WHERE klausuler, disse er likestilling uttalelser. 1179 01:06:15,390 --> 01:06:20,410 Så la oss si at vi bare ønsket å endre personens navn til Elliot 1180 01:06:20,410 --> 01:06:23,940 hvis deres navn var Ryan, la oss si. 1181 01:06:23,940 --> 01:06:24,920 >> Så når vi sier 1182 01:06:24,920 --> 01:06:32,700 >> WHERE navn lik Ryan, som ville lykkes eneste endringen 1183 01:06:32,700 --> 01:06:37,440 den name-- det ville bare endre navnet feltet i rader 1184 01:06:37,440 --> 01:06:40,770 hvor navnefeltet er lik Ryan. 1185 01:06:40,770 --> 01:06:44,430 Så hvis vi hadde flere folk heter Ryan, alle navnene deres 1186 01:06:44,430 --> 01:06:45,730 ville endre til Elliot. 1187 01:06:45,730 --> 01:06:48,169 >> Dette ligner eksempelet av hvis en feil linje deler 1188 01:06:48,169 --> 01:06:50,960 New York City, og alle må flytte til New Haven, måten vi kan 1189 01:06:50,960 --> 01:06:56,570 gjøre det i en uttalelse er UPDATE Tabell1 SET hjemby = New Haven 1190 01:06:56,570 --> 01:07:00,210 hvor hjemby lik New York City. 1191 01:07:00,210 --> 01:07:03,410 Dette er kraften i UPDATE-setningen. 1192 01:07:03,410 --> 01:07:10,530 Vi kan velge hvilket som helst antall rader gjennom sanne påstander 1193 01:07:10,530 --> 01:07:12,860 om feltene i disse radene. 1194 01:07:12,860 --> 01:07:19,510 Vi kan ikke si UPDATE table1 sett name = Elliot WHERE rad = 1, 1195 01:07:19,510 --> 01:07:24,820 bortsett fra at vi kan hvis vi sier ID = 1. 1196 01:07:24,820 --> 01:07:27,350 1197 01:07:27,350 --> 01:07:29,830 >> Så vi kommer til å være arbeide med likestilling 1198 01:07:29,830 --> 01:07:32,830 felt, likestilling mellom kolonner. 1199 01:07:32,830 --> 01:07:38,030 Men ved hjelp av ID-feltet er en måte å velge individuelle rader spesifikt, 1200 01:07:38,030 --> 01:07:43,210 fordi ID-feltet er et unikt identifikator i en SQL database. 1201 01:07:43,210 --> 01:07:45,860 Så som å oppdatere rad én, tilsvarer ID 1. 1202 01:07:45,860 --> 01:07:49,560 Oppdatering rad to, bare endre det ID-nummeret. 1203 01:07:49,560 --> 01:07:51,610 Men kraften i HVOR uttalelsen er at vi 1204 01:07:51,610 --> 01:07:57,480 kan oppdatere ting basert på hva deres gjeldende verdiene for visse ting er. 1205 01:07:57,480 --> 01:07:58,155 Ja Elliot? 1206 01:07:58,155 --> 01:08:02,678 >> PUBLIKUM: Og hva om du vil to-- igjen, dette er et annet spørsmål. 1207 01:08:02,678 --> 01:08:07,660 Men mitt første spørsmål var: hvor skjer dette? 1208 01:08:07,660 --> 01:08:09,130 Hvor skal jeg oppdatere denne? 1209 01:08:09,130 --> 01:08:11,100 Er dette i et PHP-koden? 1210 01:08:11,100 --> 01:08:13,379 >> SPEAKER: Hvor du oppdaterer, ja. 1211 01:08:13,379 --> 01:08:15,170 Vi kommer til å snakke på hvor all denne 1212 01:08:15,170 --> 01:08:18,729 skjer liksom når vi går gjennom alle kommandoer. 1213 01:08:18,729 --> 01:08:21,130 Men det du trenger å vet for nå er i utgangspunktet 1214 01:08:21,130 --> 01:08:26,279 at SQL database eksisterer som noe 1215 01:08:26,279 --> 01:08:30,090 å få tilgang til spørringen funksjon, som CS50 definerer. 1216 01:08:30,090 --> 01:08:33,800 Så hvis du bruker spørringen funksjon, du kan få tilgang til denne tabellen. 1217 01:08:33,800 --> 01:08:39,529 >> Så du skal sende disse kommandoer til tabellen i PHP-filer 1218 01:08:39,529 --> 01:08:41,420 gjennom spørrefunksjonen. 1219 01:08:41,420 --> 01:08:45,410 Du kan også leke deg med bordet ditt direkte. 1220 01:08:45,410 --> 01:08:49,050 Og det er den beste måten å teste disse slags kommandoer. 1221 01:08:49,050 --> 01:08:52,720 Og vi vil gå gjennom nøyaktig hvordan å gjøre det med bare en liten bit. 1222 01:08:52,720 --> 01:08:54,910 >> Så det er UPDATE kommando. 1223 01:08:54,910 --> 01:08:57,939 Og resten av kommandoene kommer til å være liksom like, 1224 01:08:57,939 --> 01:08:59,069 jobber med lignende ting. 1225 01:08:59,069 --> 01:09:02,740 INSERT INTO er trolig den mest forskjellig fra UPDATE. 1226 01:09:02,740 --> 01:09:06,170 Jeg kommer til å la det opp der for bare litt og arbeid over her. 1227 01:09:06,170 --> 01:09:10,215 Så INSERT INTO, vil du se at bordet er fremdeles det samme. 1228 01:09:10,215 --> 01:09:17,010 Du ønsker å sette inn. 1229 01:09:17,010 --> 01:09:20,286 Kapitalisering, SQL er små bokstaver. 1230 01:09:20,286 --> 01:09:22,160 Så du trenger ikke å kapitalisere disse tingene. 1231 01:09:22,160 --> 01:09:27,960 Ved kongress, ordene i hvitt føres. 1232 01:09:27,960 --> 01:09:31,590 Men jeg har også fargekodet dem. 1233 01:09:31,590 --> 01:09:34,390 Den eneste grunnen til at du kapital de når du skriver dem 1234 01:09:34,390 --> 01:09:36,609 er bare for å understreke at de er konstanter. 1235 01:09:36,609 --> 01:09:39,189 Og så kan du heller se på kapitalisering eller det faktum 1236 01:09:39,189 --> 01:09:40,740 at jeg har farget dem annerledes. 1237 01:09:40,740 --> 01:09:44,910 >> Så vi har fått INSERT INTO, la oss gjøre Tabell1 igjen. 1238 01:09:44,910 --> 01:09:45,930 Dette er alt på én linje. 1239 01:09:45,930 --> 01:09:48,609 Jeg bare skille det fra de ulike uttalelser. 1240 01:09:48,609 --> 01:09:52,399 Så ikke bekymre deg om det faktum at Tabell1 gjort det på den andre linjen. 1241 01:09:52,399 --> 01:09:56,130 >> Så vi ønsker å sette inn INTO Tabell1 noen verdier. 1242 01:09:56,130 --> 01:09:58,922 Og du vil merke den valgfrie bit, som jeg får til i et sekund. 1243 01:09:58,922 --> 01:09:59,755 Så vi har fått VERDIER. 1244 01:09:59,755 --> 01:10:03,640 1245 01:10:03,640 --> 01:10:08,100 >> Så la oss si at vi ønsker å legge til Andi til bordet vårt, fordi vi savner Andi. 1246 01:10:08,100 --> 01:10:09,390 Andi er syk. 1247 01:10:09,390 --> 01:10:12,490 Så la oss legge Andi til bordet vårt. 1248 01:10:12,490 --> 01:10:15,150 Husk at ID-nummer oppdateres automatisk. 1249 01:10:15,150 --> 01:10:17,320 Så de eneste feltene vi trenger å bekymre deg for 1250 01:10:17,320 --> 01:10:20,230 er navn, supermakt, og hjemby. 1251 01:10:20,230 --> 01:10:23,660 >> Og så den måten at vi gjør det, ser på vår syntaks, er vi har 1252 01:10:23,660 --> 01:10:28,780 bare fikk en parentes, med komma adskilte verdier, som hver for seg 1253 01:10:28,780 --> 01:10:29,890 er en verdi. 1254 01:10:29,890 --> 01:10:35,530 Så hvis vi ønsket å sette Andi inn i vårt tabellen, er alt vi trenger å gjøre rett Andi. 1255 01:10:35,530 --> 01:10:38,630 Hva er Andi supermakt, folk i Andi-delen? 1256 01:10:38,630 --> 01:10:45,406 1257 01:10:45,406 --> 01:10:47,545 Hun liker fly, eller liker hastighet, eller noe. 1258 01:10:47,545 --> 01:10:48,920 Hva gjør vi allerede har der oppe? 1259 01:10:48,920 --> 01:10:53,425 Vi har CS50, fly, hurtighet og styrke. 1260 01:10:53,425 --> 01:10:54,850 >> PUBLIKUM: Tidsreiser. 1261 01:10:54,850 --> 01:10:56,180 >> SPEAKER: Tidsreiser, fantastisk. 1262 01:10:56,180 --> 01:11:04,280 Så vi har fått Andi, tid reise, og hennes hjemby. 1263 01:11:04,280 --> 01:11:05,530 Det er et veldig godt spørsmål. 1264 01:11:05,530 --> 01:11:09,210 New York, med mindre noen vet. 1265 01:11:09,210 --> 01:11:13,600 Alle er fra New York er den lærdom å ta unna i dag. 1266 01:11:13,600 --> 01:11:17,710 >> Så dette utsagnet ville setter inn, som en femte rad, 1267 01:11:17,710 --> 01:11:21,900 med supermakt tidsreiser og en hjemby New York City. 1268 01:11:21,900 --> 01:11:25,660 Men valgfritt felt er i utgangspunktet en vei 1269 01:11:25,660 --> 01:11:30,090 å spesifisere nøyaktig hvilke kolonner du ønsker å sette ting i. 1270 01:11:30,090 --> 01:11:33,710 >> Måten vi gjør det nå, Andi, tidsreiser, New York 1271 01:11:33,710 --> 01:11:38,150 kommer i den rekkefølgen av vår table-- navn, supermakt, hjembyen. 1272 01:11:38,150 --> 01:11:42,290 Og hvis du ønsket å gjøre noe annet enn det, 1273 01:11:42,290 --> 01:11:44,970 som sier at du ikke visste noens supermakt, 1274 01:11:44,970 --> 01:11:47,660 som hvor jeg ikke visste Andis supermakt i begynnelsen. 1275 01:11:47,660 --> 01:11:50,450 Så alt jeg visste var hennes navngi og hennes hjemby. 1276 01:11:50,450 --> 01:11:54,550 Det jeg kan gjøre er jeg kunne do-- jeg skal slette denne raske. 1277 01:11:54,550 --> 01:11:57,910 1278 01:11:57,910 --> 01:12:00,090 >> Jeg vil bare oppdatere kolonnene. 1279 01:12:00,090 --> 01:12:04,100 Og det er her den valgfrie kolonneliste kommer inn i bildet. 1280 01:12:04,100 --> 01:12:09,185 Jeg bare ønsker å oppdatere navn og hjemby. 1281 01:12:09,185 --> 01:12:12,650 1282 01:12:12,650 --> 01:12:16,480 Og så vil jeg si VERDIER. 1283 01:12:16,480 --> 01:12:24,430 Jeg skal gjøre Andi og New York City. 1284 01:12:24,430 --> 01:12:28,980 >> Hvis jeg hadde utelatt listen over kolonner og bare gjort disse to tingene, 1285 01:12:28,980 --> 01:12:32,450 hvor ville New York har gått? 1286 01:12:32,450 --> 01:12:35,900 Hvilken kolonne ville New York Byen har blitt plassert i? 1287 01:12:35,900 --> 01:12:38,950 Folk har noen ide? 1288 01:12:38,950 --> 01:12:40,160 Supermakt, akkurat. 1289 01:12:40,160 --> 01:12:41,890 >> Så dette vil bare gå i orden. 1290 01:12:41,890 --> 01:12:45,530 Og når den når enden av listen, vil det bare stoppe å fylle ting i. 1291 01:12:45,530 --> 01:12:49,080 Og de verdiene som det vil holde i alle kolonnene vil bare være NULL. 1292 01:12:49,080 --> 01:12:51,840 Så fordi vi spesifisert navn og hjemby, 1293 01:12:51,840 --> 01:12:56,110 vi kommer til å ha ID 5, nevne Andi, supermakt NULL. 1294 01:12:56,110 --> 01:12:58,750 Så supermakt er en initialisert verdi. 1295 01:12:58,750 --> 01:13:01,340 Du vil ikke nødvendigvis få samme Valgrind feil hvis du prøver 1296 01:13:01,340 --> 01:13:01,970 og få tilgang til den. 1297 01:13:01,970 --> 01:13:05,160 Alt vil bli pent nullet ut, fordi NULL er en verdi i SQL. 1298 01:13:05,160 --> 01:13:06,780 Det er en konstant. 1299 01:13:06,780 --> 01:13:08,980 Og så hjemby blir New York City. 1300 01:13:08,980 --> 01:13:11,860 Så det er INSERT kommandoen INTO. 1301 01:13:11,860 --> 01:13:13,610 Før vi går, er det to flere kommandoer. 1302 01:13:13,610 --> 01:13:19,060 Har folk har spørsmål om UPDATE, om INSERT INTO, om SQL 1303 01:13:19,060 --> 01:13:21,556 generelt før vi flytter på vår endelige bits? 1304 01:13:21,556 --> 01:13:25,500 1305 01:13:25,500 --> 01:13:26,910 Folk føler seg bra, flott. 1306 01:13:26,910 --> 01:13:27,410 Elsker det. 1307 01:13:27,410 --> 01:13:29,480 Så la oss snakke om SELECT. 1308 01:13:29,480 --> 01:13:33,445 Går grøft UPDATE over her. 1309 01:13:33,445 --> 01:13:35,720 >> Og SELECT kommer til å være svært like. 1310 01:13:35,720 --> 01:13:38,790 Målet med SELECT, VELG hensikt i livet 1311 01:13:38,790 --> 01:13:45,910 er å gi deg en haug med kolonner som tilfredsstiller visse vilkår. 1312 01:13:45,910 --> 01:13:48,230 Og når jeg sier tilfreds visse vilkår, 1313 01:13:48,230 --> 01:13:50,800 hjernen din makt umiddelbart gå tilbake til at WHERE klausulen 1314 01:13:50,800 --> 01:13:52,090 som kom opp i UPDATE. 1315 01:13:52,090 --> 01:13:54,880 Og at klausulen er akkurat der i SELECT. 1316 01:13:54,880 --> 01:14:06,020 >> Hvis vi ikke setter WHERE klausulen og vi sier SELECT navn, 1317 01:14:06,020 --> 01:14:16,490 hometown-- stavet det litt wrong-- navn, hjemby Fra Tabell1. 1318 01:14:16,490 --> 01:14:19,690 Hvis vi bare si det, hva VELG kommer til å gi oss er det er 1319 01:14:19,690 --> 01:14:23,730 kommer til å gi oss en double-- et bord, heller. 1320 01:14:23,730 --> 01:14:27,450 En dobbel matrise hvis vi er tenker på i PHP sanser. 1321 01:14:27,450 --> 01:14:33,239 Men det er bare kommer til å gi oss en dobbel rekke på to columns-- navn, 1322 01:14:33,239 --> 01:14:33,780 og hjemby. 1323 01:14:33,780 --> 01:14:36,400 1324 01:14:36,400 --> 01:14:38,130 Og det vil ignorere ID. 1325 01:14:38,130 --> 01:14:41,310 Og det vil ignorere supermakt. 1326 01:14:41,310 --> 01:14:44,696 Og det vil bare gi oss hver enkelt rad av tabellen. 1327 01:14:44,696 --> 01:14:46,570 Så hvis vi bare satt inn Andi, vil vi ha Andi. 1328 01:14:46,570 --> 01:14:48,605 Og vi vil ha den opprinnelige fire. 1329 01:14:48,605 --> 01:14:53,720 Hvis de har blitt oppdatert, vil det bli reflektert, et cetera, et cetera. 1330 01:14:53,720 --> 01:14:56,520 >> Så dette er fordi vi fikk ikke bruke WHERE klausulen. 1331 01:14:56,520 --> 01:14:59,200 Men vi kan bruke det på nøyaktig samme måte som vi har brukt det i oppdateringen. 1332 01:14:59,200 --> 01:15:05,310 Hvis vi bare vil ha et bord av navnene og superkrefter av mennesker lever 1333 01:15:05,310 --> 01:15:13,430 i New York, kan vi utføre en uttalelse som SELECT navn, superpower-- 1334 01:15:13,430 --> 01:15:27,190 Jeg bare kommer til å forlate at-- FRA Tabell1 WHERE hjemby = New York City. 1335 01:15:27,190 --> 01:15:33,370 >> Så dette går for å vise at du kan får helt forskjellige kolonner, 1336 01:15:33,370 --> 01:15:36,920 og deretter sette kolonner som du ikke selv får tilbake i WHERE-leddet. 1337 01:15:36,920 --> 01:15:39,200 Vi ønsker ikke selv den hjemby alle. 1338 01:15:39,200 --> 01:15:41,920 Men vi vil at navnet og supermakt av mennesker 1339 01:15:41,920 --> 01:15:43,817 hvis hjemby er New York City. 1340 01:15:43,817 --> 01:15:45,650 Så det er noe vi kan gjøre med WHERE 1341 01:15:45,650 --> 01:15:49,112 klausulen er at vi kan håndtere kolonner at vi ikke nødvendigvis ønsker tilbake. 1342 01:15:49,112 --> 01:15:52,320 På samme måte i UPDATE, kan vi avtale med kolonner som gjør at vi ikke nødvendigvis 1343 01:15:52,320 --> 01:15:53,270 vil oppdatere. 1344 01:15:53,270 --> 01:15:58,890 Vi kan oppdatere byen alle som har navn er Sam, for eksempel. 1345 01:15:58,890 --> 01:16:02,080 Vi kan oppdatere byen alle som har nummer ID er 2. 1346 01:16:02,080 --> 01:16:04,960 Så bare oppdatere by på den andre raden 1347 01:16:04,960 --> 01:16:08,220 hvor vi ikke trenger å forholde seg til nødvendig vanlig spørsmål. 1348 01:16:08,220 --> 01:16:13,264 >> Og slett er, som du hadde forvente, DELETE FROM Tabell1. 1349 01:16:13,264 --> 01:16:14,930 Og så har vi en annen WHERE-leddet. 1350 01:16:14,930 --> 01:16:17,940 Så vi kan si WHERE ID = 1. 1351 01:16:17,940 --> 01:16:18,950 Slett den første raden. 1352 01:16:18,950 --> 01:16:23,240 Og DELETE vil alltid slette en rad, eller det vil slette noen antall rader. 1353 01:16:23,240 --> 01:16:26,990 DELETE FROM tabell WHERE hjemby = New York by 1354 01:16:26,990 --> 01:16:28,740 vil slette alle i New York City. 1355 01:16:28,740 --> 01:16:30,985 Det er hvis det var en plutselig tragisk pesten 1356 01:16:30,985 --> 01:16:33,360 og du bare ønsket å fjerne alle fra bordet som 1357 01:16:33,360 --> 01:16:35,760 levde i en viss by som ble rammet av pesten. 1358 01:16:35,760 --> 01:16:38,050 Må de hvile i fred. 1359 01:16:38,050 --> 01:16:43,849 >> Dette er de fire SQL-kommandoer at du må bruke. 1360 01:16:43,849 --> 01:16:45,390 Du trenger ikke engang kan bruke dem alle. 1361 01:16:45,390 --> 01:16:47,690 Men disse er de fire at CS50 forventer du 1362 01:16:47,690 --> 01:16:53,630 å være komfortabel med å gå inn både quiz 1 og også pset7 og pset8. 1363 01:16:53,630 --> 01:16:55,820 >> Det er bare det at bordet igjen. 1364 01:16:55,820 --> 01:16:58,930 I denne, har Roy supermakt blitt oppdatert til laserstråler som 1365 01:16:58,930 --> 01:17:00,880 er et eksempel jeg bruker ikke. 1366 01:17:00,880 --> 01:17:05,480 Jeg vet ikke hvilken som Roy foretrekker, men styrke. 1367 01:17:05,480 --> 01:17:07,670 Roy har en supermakt på styrke. 1368 01:17:07,670 --> 01:17:09,090 Katherine ikke gjøre det i dag. 1369 01:17:09,090 --> 01:17:10,260 Det er uheldig. 1370 01:17:10,260 --> 01:17:11,260 Men hun har super fart. 1371 01:17:11,260 --> 01:17:13,780 1372 01:17:13,780 --> 01:17:14,670 >> Vel det var PHP. 1373 01:17:14,670 --> 01:17:19,410 Før vi snakker om MVC, gjør noen som har spørsmål om PHP? 1374 01:17:19,410 --> 01:17:23,864 Nå SQL, eller PHP hvis du plutselig har komme opp med et spørsmål om PHP? 1375 01:17:23,864 --> 01:17:27,560 1376 01:17:27,560 --> 01:17:28,460 Flott. 1377 01:17:28,460 --> 01:17:29,920 Greit, er vi alle satt da. 1378 01:17:29,920 --> 01:17:33,660 >> Så snakker litt om Model View kontrollere, 1379 01:17:33,660 --> 01:17:38,770 la oss gå tilbake til noen av ting i pset7. 1380 01:17:38,770 --> 01:17:42,470 Så hva modellen visning kontrolleren er-- jeg er ikke 1381 01:17:42,470 --> 01:17:45,660 kommer til å spare mine endringer for å logge inn fordi jeg helt slaktet den. 1382 01:17:45,660 --> 01:17:49,220 Men i utgangspunktet har vi to separate ting skjer. 1383 01:17:49,220 --> 01:17:52,390 Vi har en offentlig katalog som inneholder 1384 01:17:52,390 --> 01:17:56,460 koden som kommer til å bli henrettet og nettsidene som vil bli besøkt. 1385 01:17:56,460 --> 01:17:58,780 Og vi har også denne utsikten katalogen. 1386 01:17:58,780 --> 01:18:01,780 Og utsikten inneholder maler. 1387 01:18:01,780 --> 01:18:04,390 >> Dette er hva funksjonen render-- vi så gjengi 1388 01:18:04,390 --> 01:18:08,240 funksjon i en haug av PHP-kode at CS50 har allerede skrevet for deg, 1389 01:18:08,240 --> 01:18:10,550 som tar i visse parametre. 1390 01:18:10,550 --> 01:18:14,510 Hva denne koden gjør er det kommer til oversikter, 1391 01:18:14,510 --> 01:18:18,000 som er sett med like forhåndsskrevet HTML-kode, 1392 01:18:18,000 --> 01:18:20,720 og det er å sette inn verdier inn enkelte steder. 1393 01:18:20,720 --> 01:18:23,990 Dette er hvordan man når gå inn CS50 Finance, 1394 01:18:23,990 --> 01:18:25,760 samme header er på hver side. 1395 01:18:25,760 --> 01:18:28,130 Det samme bunnteksten på hver side. 1396 01:18:28,130 --> 01:18:31,880 Dette er fordi den måten at gjengi verk er det vil 1397 01:18:31,880 --> 01:18:36,720 automatisk oppdatering i at header og seer som du finner i utsikt. 1398 01:18:36,720 --> 01:18:41,400 >> Vi kan faktisk gå inn i mål og se, det er en HTML-fil med et hode. 1399 01:18:41,400 --> 01:18:43,280 Det har noen stilark. 1400 01:18:43,280 --> 01:18:48,450 Du trenger ikke å se på CSS for pset7 hvis du ikke vil. 1401 01:18:48,450 --> 01:18:50,560 Men du kan endre dem hvis du vil, gjøre 1402 01:18:50,560 --> 01:18:53,470 din Finance ser litt annerledes. 1403 01:18:53,470 --> 01:18:57,560 >> Det fikk noen PHP i overskriften litt for å se 1404 01:18:57,560 --> 01:19:01,240 hvis det er en annen tittel det bør settes i denne spissen. 1405 01:19:01,240 --> 01:19:04,300 Men bare noen andre scripts, og lenker, og andre ting. 1406 01:19:04,300 --> 01:19:08,700 Hode slutter, kroppen begynner, og oops, vi har denne rare lille enden bit. 1407 01:19:08,700 --> 01:19:14,730 Og det er en div, akkurat som en formløs slags element 1408 01:19:14,730 --> 01:19:17,120 som har en idé om midten. 1409 01:19:17,120 --> 01:19:22,450 >> Og så når vi ser bunntekst, Vi har i enden av en div. 1410 01:19:22,450 --> 01:19:25,000 Vi har en bunn, som er hvor bunntekst er. 1411 01:19:25,000 --> 01:19:26,770 Slutt på div, slutten av kroppen, slutten av HTML. 1412 01:19:26,770 --> 01:19:29,070 >> Så hva gjør er gjør er å gjengi er liksom 1413 01:19:29,070 --> 01:19:33,150 av patching opp header, en annerledes PHP-fil som 1414 01:19:33,150 --> 01:19:37,110 vil inneholde de faktiske tingene som du vil vise, som tabellen over aksjer 1415 01:19:37,110 --> 01:19:39,690 hvis du kjøper eller selger aksjer. 1416 01:19:39,690 --> 01:19:41,480 Og så vil det legge i bunnteksten. 1417 01:19:41,480 --> 01:19:44,890 Og modellen visning kontrolleren Tanken er at vi 1418 01:19:44,890 --> 01:19:49,590 ønsker å skille hvordan ting ser fra koden. 1419 01:19:49,590 --> 01:19:53,420 Det er vi ønsker å skille frontend og backend, der frontend er 1420 01:19:53,420 --> 01:20:00,440 ting som brukeren ser, hyggelig visuals-- HTML, CSS, ting som det, 1421 01:20:00,440 --> 01:20:02,320 bilder, et cetera. 1422 01:20:02,320 --> 01:20:05,780 Og backend er PHP. 1423 01:20:05,780 --> 01:20:07,710 Dette er koden du skriver. 1424 01:20:07,710 --> 01:20:10,240 Det er der den koden som er gjør selve driften. 1425 01:20:10,240 --> 01:20:12,400 Dette er når du legger til et lager i tabellen, 1426 01:20:12,400 --> 01:20:14,890 når du kjøper og salg, det er backend. 1427 01:20:14,890 --> 01:20:20,210 >> Og vi kan, som du så, inkludert PHP direkte i HTML. 1428 01:20:20,210 --> 01:20:23,210 Så hva vi kunne ha gjort for dette oppdraget er nettopp hadde 1429 01:20:23,210 --> 01:20:26,200 en HTML-fil for hver side, som innlogging. 1430 01:20:26,200 --> 01:20:30,260 Og så på den siden, bare hadde en stor blokk med PHP-kode, 1431 01:20:30,260 --> 01:20:33,822 inkludert alle koden som at siden spesifikt trenger. 1432 01:20:33,822 --> 01:20:35,780 Og så kunne vi ha gjort det for porteføljen. 1433 01:20:35,780 --> 01:20:40,250 Vi kunne ha gjort alle kjøp og salg innenfor de enkelte sidene. 1434 01:20:40,250 --> 01:20:43,680 >> Men fordi vi er rende separat fra hvor 1435 01:20:43,680 --> 01:20:46,660 vi skriver backend kode, kan vi lett 1436 01:20:46,660 --> 01:20:52,660 endre hvordan ting ser uten endring hver enkelt fil. 1437 01:20:52,660 --> 01:20:55,460 Vi gjør ting som å bare legge en ny div til bunnen 1438 01:20:55,460 --> 01:21:00,720 of-- Hei Jeg endret bunnteksten. 1439 01:21:00,720 --> 01:21:03,710 Du kan bare gjøre sånt. 1440 01:21:03,710 --> 01:21:07,250 Men også, kan du endre hele visuell layout 1441 01:21:07,250 --> 01:21:09,290 uten å påvirke hva som er går i backend. 1442 01:21:09,290 --> 01:21:12,000 Og du kan endre Hele backend og fortsatt 1443 01:21:12,000 --> 01:21:13,900 har det ser ut akkurat som det gjorde før. 1444 01:21:13,900 --> 01:21:14,400 Dette 1445 01:21:14,400 --> 01:21:16,170 >> Er ideen om modellen visning kontrolleren. 1446 01:21:16,170 --> 01:21:19,992 Og det er faktisk en pålagt paradigme i noen av de programmeringsspråk 1447 01:21:19,992 --> 01:21:21,700 kan det være lurt å bruke for endelig prosjekter. 1448 01:21:21,700 --> 01:21:25,100 Hvis du gjør iOS utvikling, de har utsikt, 1449 01:21:25,100 --> 01:21:29,120 som er det du ser på iPhone, og deretter backend som som en egen greie. 1450 01:21:29,120 --> 01:21:31,260 >> Du kan tenke litt. 1451 01:21:31,260 --> 01:21:35,190 Det er mye av binærfiler i informatikk, som er morsomt, 1452 01:21:35,190 --> 01:21:37,270 fordi alt er i binær. 1453 01:21:37,270 --> 01:21:38,550 Jeg hadde ikke tenkt det. 1454 01:21:38,550 --> 01:21:41,590 Det var et ordspill utilsiktet. 1455 01:21:41,590 --> 01:21:43,860 Ja, ordspill ikke ment. 1456 01:21:43,860 --> 01:21:49,070 >> Men som .h filer og .c filer, det er mye skille ting som vi 1457 01:21:49,070 --> 01:21:49,900 kanskje ikke trenger. 1458 01:21:49,900 --> 01:21:54,330 Så vi kan bare redigere h filer, eller noen kan bare se en .h fil og vet 1459 01:21:54,330 --> 01:21:57,650 nøyaktig de funksjoner som er i .c fil uten nødvendigvis å vite 1460 01:21:57,650 --> 01:21:58,870 gjennomføringen. 1461 01:21:58,870 --> 01:22:02,800 Denne ideen om separasjonskomponenter som er avhengige av hverandre 1462 01:22:02,800 --> 01:22:06,990 men kan liksom få tilgang til hverandre gjennom ulike kanaler, bestått 1463 01:22:06,990 --> 01:22:09,310 variabler, bare inkluderer uttalelser, ting 1464 01:22:09,310 --> 01:22:14,440 sånn, dette prinsippet bidrar til å skape applikasjoner 1465 01:22:14,440 --> 01:22:17,080 som kan være lettere redigert av flere personer, 1466 01:22:17,080 --> 01:22:20,440 kan lettere endres eller modifisert på en stor skala, 1467 01:22:20,440 --> 01:22:24,880 og er enklere å feilsøke på mange måter. 1468 01:22:24,880 --> 01:22:28,254 >> Veldig rask, har jeg noen tips for pset7, 1469 01:22:28,254 --> 01:22:31,420 som jeg skal gjøre full skjerm så du ikke bare se på the-- tips tips tippee. 1470 01:22:31,420 --> 01:22:33,964 1471 01:22:33,964 --> 01:22:35,130 Det er ikke så mange tips. 1472 01:22:35,130 --> 01:22:38,060 >> Men jeg nevnte PHP er vanskelig å feilsøke. 1473 01:22:38,060 --> 01:22:39,290 Dobbel og trippel sjekke det. 1474 01:22:39,290 --> 01:22:41,550 Hvis koden er bare ikke dukke opp på siden, 1475 01:22:41,550 --> 01:22:46,240 det er nok en PHP-feil, beklager. 1476 01:22:46,240 --> 01:22:48,570 >> Du trenger aldri å se på CSS hvis du ikke vil. 1477 01:22:48,570 --> 01:22:52,150 Men når du er ferdig, kan det være en fin liten morsom ting å bare gå i 1478 01:22:52,150 --> 01:22:54,770 og rote med CSS parametere. 1479 01:22:54,770 --> 01:22:58,700 CSS og HTML er et eksempel på en modell view controller stil ting også, ikke sant? 1480 01:22:58,700 --> 01:23:02,150 Du kunne ha stil tags innsiden av HTML-elementer. 1481 01:23:02,150 --> 01:23:04,800 Men hvis du liksom outsourcing dem til CSS, 1482 01:23:04,800 --> 01:23:08,180 de er enklere å redigere, og lek rundt med, og ha det gøy med. 1483 01:23:08,180 --> 01:23:10,816 >> Unn CS50 helper fungerer som svarte bokser. 1484 01:23:10,816 --> 01:23:12,940 Du trenger ikke å vite nøyaktig hva Pussing gjør, 1485 01:23:12,940 --> 01:23:16,770 men stoler på det å alltid gjøre det rette ting, avhengig av hva du passerer den, 1486 01:23:16,770 --> 01:23:17,690 ting som dette. 1487 01:23:17,690 --> 01:23:21,040 Og jeg vil anbefale se Davids gjennomgang, 1488 01:23:21,040 --> 01:23:24,490 gå gjennom alle ting, ikke bare de todos, 1489 01:23:24,490 --> 01:23:26,960 men du virkelig kan behandle disse som svarte bokser. 1490 01:23:26,960 --> 01:23:29,280 Ikke gå inn i disse funksjoner leter etter feil. 1491 01:23:29,280 --> 01:23:33,510 >> Og velkommen tilbake av vår overherre Zamyla. 1492 01:23:33,510 --> 01:23:34,010 Flott. 1493 01:23:34,010 --> 01:23:40,430 >> Er det noen endelige spørsmål før vi liksom sprette for dagen? 1494 01:23:40,430 --> 01:23:42,610 Er jeg fortsatt lever? 1495 01:23:42,610 --> 01:23:44,700 Flott. 1496 01:23:44,700 --> 01:23:47,120 Hei Livestream mennesker. 1497 01:23:47,120 --> 01:23:47,620 Flott. 1498 01:23:47,620 --> 01:23:50,260 Er det lenger spørsmål? 1499 01:23:50,260 --> 01:23:50,760 Nei? 1500 01:23:50,760 --> 01:23:52,884 >> Og så tror jeg vi er godt å gå for i dag. 1501 01:23:52,884 --> 01:23:55,550 Jeg vil holde rundt litt etterpå hvis folk hadde spørsmål 1502 01:23:55,550 --> 01:23:57,480 de var redd for å spørre på strømmen. 1503 01:23:57,480 --> 01:23:59,790 Men ellers, ha en god dag. 1504 01:23:59,790 --> 01:24:01,933