1 00:00:00,000 --> 00:00:05,040 2 00:00:05,040 --> 00:00:08,440 >> SAM LEVATICH: Velkommen til sektion for denne uge. 3 00:00:08,440 --> 00:00:10,040 Jeg er ikke Andi. 4 00:00:10,040 --> 00:00:14,590 Andi er faldet syg denne dag, og jeg er slags kaldes i sidste øjeblik 5 00:00:14,590 --> 00:00:15,700 at overtage. 6 00:00:15,700 --> 00:00:20,920 Det er influenzasæson, så sørg for, at du opholder rent, vaske dine hænder, 7 00:00:20,920 --> 00:00:24,800 og spise sundt, så dig, også, ikke er sengeliggende. 8 00:00:24,800 --> 00:00:26,870 >> Men uden yderligere ståhej, lad os komme i gang. 9 00:00:26,870 --> 00:00:29,970 I dag, vi kommer til at tale om PHP lidt bit-- hvordan 10 00:00:29,970 --> 00:00:33,900 PHP vedrører HTML, hvordan det angår CSS, og nogle af banen 11 00:00:33,900 --> 00:00:36,100 ting du gjorde på den sidste opgave. 12 00:00:36,100 --> 00:00:37,930 Vi kommer til at tale et lidt om SQL 13 00:00:37,930 --> 00:00:41,360 og hvordan du kan arbejde med databaser, hvilket er en temmelig vigtig del af P 14 00:00:41,360 --> 00:00:43,650 sæt 8-- P sæt 7. 15 00:00:43,650 --> 00:00:44,480 P sæt 7. 16 00:00:44,480 --> 00:00:48,400 >> Og så vil vi tale lidt lidt om, hvordan se controllere arbejde 17 00:00:48,400 --> 00:00:54,640 og hvorfor det er en filosofi bag nogle moderne websider og anderledes design. 18 00:00:54,640 --> 00:00:58,760 Temmelig meget en masse typer af apps og programmer, du kan sende 19 00:00:58,760 --> 00:01:01,120 bruger denne model, view controller rammer, 20 00:01:01,120 --> 00:01:02,890 at du vil bruge i P sæt 7, så jeg vil 21 00:01:02,890 --> 00:01:05,220 snakke lidt om, hvorfor der er blevet 22 00:01:05,220 --> 00:01:07,970 populære, hvorfor det er vigtigt og rart. 23 00:01:07,970 --> 00:01:12,052 Og så vil jeg endelig gå videre til nogle tips om at tackle P sæt 7. 24 00:01:12,052 --> 00:01:13,760 Og hvis vi har tid tilovers ved udgangen, 25 00:01:13,760 --> 00:01:17,320 Vi kan faktisk gøre nogle arbejde på 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 måske bemærket denne-- du ikke virkelig nødt til at dykke ned i det-- 28 00:01:23,790 --> 00:01:27,880 men P sæt 6 havde nogle PHP kode, som foregik. 29 00:01:27,880 --> 00:01:34,710 Og fordi PHP er en C-lignende sprog, PHP, i modsætning til HTML og CSS, 30 00:01:34,710 --> 00:01:39,030 er et programmeringssprog, mens HTML og CSS er statiske. 31 00:01:39,030 --> 00:01:44,050 De er kodesprog beskæftiger med stil og visuelle layout. 32 00:01:44,050 --> 00:01:46,230 PHP er den ægte vare. 33 00:01:46,230 --> 00:01:51,590 >> PHP har løkker, har det conditions-- alt det, der er sjovt om C. 34 00:01:51,590 --> 00:01:56,190 Det har et par ting, der er lidt smule bedre end C, som vi vil se, 35 00:01:56,190 --> 00:01:59,760 men jeg tror, ​​den nemmeste måde at tale om PHP er bare at dykke i. 36 00:01:59,760 --> 00:02:04,087 Så jeg har tænkt mig at gå ret i IDE på dette tidspunkt. 37 00:02:04,087 --> 00:02:06,170 Det første, vi skal at gøre er faktisk kigge 38 00:02:06,170 --> 00:02:10,169 lidt på nogle af de PHP kode, der var i P sæt 6. 39 00:02:10,169 --> 00:02:13,600 Så den måde, som vi gør at-- før, den måde, at vi kørte 40 00:02:13,600 --> 00:02:18,550 serveren for apparatet var, at vi ville have til at Motortype- 41 00:02:18,550 --> 00:02:21,750 enten bruge din implementering eller personale gennemførelse 42 00:02:21,750 --> 00:02:27,059 af server.c ved at gå ind i mappen og kører server.c med enten ingen 43 00:02:27,059 --> 00:02:30,100 arguments-- så bare kalde det på lokal vært, hvilket er, hvad du sandsynligvis 44 00:02:30,100 --> 00:02:31,849 gjorde de fleste af time-- og derefter fodre den 45 00:02:31,849 --> 00:02:35,380 en directory-- med at bruge som sin rod 46 00:02:35,380 --> 00:02:38,310 hvor hjemmesiden ville være kørt, dybest set. 47 00:02:38,310 --> 00:02:42,180 >> Denne uge for P sæt 7, som stor som vores kode til server.c 48 00:02:42,180 --> 00:02:47,580 er, der er mennesker, der allerede har skrevet disse fine ting over på CS50 49 00:02:47,580 --> 00:02:49,630 der har lidt mere funktionalitet, 50 00:02:49,630 --> 00:02:52,920 en server program, der er i stand til at behandle med lidt mere 51 00:02:52,920 --> 00:02:56,350 af de snørklede, som vi vil se i både P sæt 7 og P sæt 8. 52 00:02:56,350 --> 00:03:01,410 Og den måde, at du starter op server er ved blot at skrive, "apache50." 53 00:03:01,410 --> 00:03:03,960 >> Og før du gør noget, du vil være sikker på 54 00:03:03,960 --> 00:03:06,070 at Apache 50 ikke er allerede kører, som det er 55 00:03:06,070 --> 00:03:08,130 på min maskine, som jeg gjorde for at teste det. 56 00:03:08,130 --> 00:03:10,320 Og du gøre det ved at kalde apache50. 57 00:03:10,320 --> 00:03:14,070 Stop, og du vil se, at det stopper webserveren, hvis du kan se der 58 00:03:14,070 --> 00:03:16,340 nederst terminalvinduet. 59 00:03:16,340 --> 00:03:21,090 Og så bare at starte, vi er vil kalde, "apache50 starte." 60 00:03:21,090 --> 00:03:23,150 Og så vil vi at fodre den en mappe. 61 00:03:23,150 --> 00:03:26,950 >> Nu, fordi vi ønsker at se på nogle af P sæt 6 kode 62 00:03:26,950 --> 00:03:32,850 at vi havde gennemført, jeg faktisk kopieret en lille smule af P 63 00:03:32,850 --> 00:03:37,090 sæt 6 kode ind i min egen mappe, som du kan se på venstre der. 64 00:03:37,090 --> 00:03:40,170 Det hedder "SECTION8" i alle store bogstaver 65 00:03:40,170 --> 00:03:44,510 fordi jeg er lige så spændt at være levende streamet i dag. 66 00:03:44,510 --> 00:03:47,330 >> Så hvis vi køre dette, bør det alle arbejder temmelig effektivt. 67 00:03:47,330 --> 00:03:52,350 Den siger, OK, vores hjemmeside er nu findes på adressen på IDE, 68 00:03:52,350 --> 00:03:57,710 dybest set, hvilket er, hvad du brugte præcis som det var i P sæt 7-- P sæt 6. 69 00:03:57,710 --> 00:04:00,899 Alle mine indekser er en indeks i dag. 70 00:04:00,899 --> 00:04:02,940 Så vi kan gå til at adresse, hvis du vil huske, 71 00:04:02,940 --> 00:04:05,710 ved blot at klikke på dette lille knappen i øverste højre. 72 00:04:05,710 --> 00:04:14,200 >> Og du vil huske denne kode, som skete, da du gik ind i hello.php. 73 00:04:14,200 --> 00:04:18,000 Og hvad koden er designet til at gøre, er, når du har skrevet et navn 74 00:04:18,000 --> 00:04:20,550 her-- hvis du siger Sam fordi det er min name-- 75 00:04:20,550 --> 00:04:23,620 og jeg klikker Say Hello, når Vi gik til den næste side, 76 00:04:23,620 --> 00:04:25,270 dette navn skulle blive vist. 77 00:04:25,270 --> 00:04:28,550 Det vil sige, "Hej, Sam" eller "Hej," uanset navn, du 78 00:04:28,550 --> 00:04:32,470 lagt i det, selvom vi gik til en helt ny webside. 79 00:04:32,470 --> 00:04:36,610 >> Og dette er den slags ting at PHP kan gøre for dig. 80 00:04:36,610 --> 00:04:42,840 PHP er i stand til at sende data mellem to websider. 81 00:04:42,840 --> 00:04:44,390 Dette er en helt anden side. 82 00:04:44,390 --> 00:04:46,990 Du vil se titlen er "hello" her. 83 00:04:46,990 --> 00:04:49,080 Faktisk har de samme titel, men jeg 84 00:04:49,080 --> 00:04:52,560 lover de er forskellige web sider, hvis vi ser på kilden. 85 00:04:52,560 --> 00:04:55,890 Og du kan passere de data, der er indtastes i dette tekstfelt, 86 00:04:55,890 --> 00:04:59,830 du sender det til det næste side, der bliver kaldt op, 87 00:04:59,830 --> 00:05:02,490 og så, at data er i stand til at være der i sin nuværende form. 88 00:05:02,490 --> 00:05:04,810 >> Nu er vi endnu ikke har gennemført dette selv, som 89 00:05:04,810 --> 00:05:08,710 er, hvad vi vil gøre lige nu til sortering få en smag for, hvordan PHP fungerer, 90 00:05:08,710 --> 00:05:15,070 men den centrale idé er, at PHP-- du kan slags tænker på det som en funktion. 91 00:05:15,070 --> 00:05:18,570 Noget, som PHP kan lade dig do er det kan tage parametre 92 00:05:18,570 --> 00:05:24,710 at du input til en HTML-side ved brug af PHP og former, 93 00:05:24,710 --> 00:05:29,960 og det kan passere dem som parametre til den næste side, at det indlæses op. 94 00:05:29,960 --> 00:05:35,110 >> I dette tilfælde, vi laste op denne side med knappen "Sig hej". 95 00:05:35,110 --> 00:05:38,960 Men for nu, jeg faktisk slettet nogle af denne kode 96 00:05:38,960 --> 00:05:44,850 i hello.php der blev kørt der rent faktisk var at vise "Hej, 97 00:05:44,850 --> 00:05:49,680 verden "eller" hej, Sam "eller "Hej," uanset var bare input. 98 00:05:49,680 --> 00:05:53,620 Så for lige nu, er vi vil gøre det, dybest set. 99 00:05:53,620 --> 00:05:56,570 Vi kommer til at genskabe det, og også tilføje nogle flere funktioner, 100 00:05:56,570 --> 00:06:00,210 gøre en lille smule mere med det, se hvad PHP er virkelig i stand til. 101 00:06:00,210 --> 00:06:04,870 >> Så først, lad os tale om denne fil, hello.php. 102 00:06:04,870 --> 00:06:07,440 Så hvis vi zoomer ind et lidt bit-- og nu er jeg 103 00:06:07,440 --> 00:06:10,520 slags forsøger at rulle alle den måde around-- der vi går. 104 00:06:10,520 --> 00:06:14,220 Du vil se det hedder hello.php, men syntaksen i det 105 00:06:14,220 --> 00:06:16,880 ligner en HTML-fil. 106 00:06:16,880 --> 00:06:20,380 Dette skyldes, at faktiske PHP i denne fil 107 00:06:20,380 --> 00:06:25,220 er alle fast mellem disse Spørgsmålstegn-Caret blokke. 108 00:06:25,220 --> 00:06:28,610 Alt lige her anses PHP kode. 109 00:06:28,610 --> 00:06:32,040 >> Og du vil opdage, at da jeg gjorde en kommentar, 110 00:06:32,040 --> 00:06:35,320 vil du se det velkendte to skråstreger. 111 00:06:35,320 --> 00:06:38,440 Og hvis du vil huske, i HTML, hvis jeg skriver en kommentar, 112 00:06:38,440 --> 00:06:42,540 det ser noget tættere på dette, hvilket er en kommentar i HTML. 113 00:06:42,540 --> 00:06:46,570 Så virkelig alt mellem disse to vinkelbeslag 114 00:06:46,570 --> 00:06:50,060 nu PHP kode, som afspejles i det faktum, 115 00:06:50,060 --> 00:06:53,270 at denne lille kommentar symbol er forvandlet til en kommentar. 116 00:06:53,270 --> 00:06:58,420 >> Så hver gang du skriver PHP kode, selv hvis der ikke er HTML-kode uden for det, 117 00:06:58,420 --> 00:07:02,720 det altid vil være indesluttet i disse vinkelbeslag 118 00:07:02,720 --> 00:07:04,080 med spørgsmålstegn. 119 00:07:04,080 --> 00:07:08,260 Du kan slags tænker over det-- hvordan alle af den kode, der kørte i din C-programmer 120 00:07:08,260 --> 00:07:13,950 blev lukket inde i en int main, ugyldig, krøllet tandbøjle, ende krøllet tandbøjle erklæring. 121 00:07:13,950 --> 00:07:17,100 Og du vil se krøllede parenteser i PHP, også, men dette er slags 122 00:07:17,100 --> 00:07:20,490 Ligesom den vigtigste metode til PHP. 123 00:07:20,490 --> 00:07:25,630 >> Så nu, hvordan gør vi noget i PHP? 124 00:07:25,630 --> 00:07:29,190 Nu, PHP er et programmeringssprog sprog, der er meget C-lignende, 125 00:07:29,190 --> 00:07:30,970 men det fungerer på nettet. 126 00:07:30,970 --> 00:07:33,270 Så én ting, vil du immediately-- en 127 00:07:33,270 --> 00:07:38,130 af de første ting, du virkelig gjorde med C blev du udskrev ting ud, ikke? 128 00:07:38,130 --> 00:07:42,290 Så i C vi gjorde det med en printf funktion. 129 00:07:42,290 --> 00:07:46,430 Vi gav det en streng, formentlig med en ny linje, 130 00:07:46,430 --> 00:07:49,850 og så har vi afsluttet den med et semikolon. 131 00:07:49,850 --> 00:07:53,790 >> Så den måde, at vi kommer til at gøre det i PHP-- fordi det ikke er helt printf. 132 00:07:53,790 --> 00:07:55,940 Det er en lille smule anderledes syntaks. 133 00:07:55,940 --> 00:08:02,580 Den måde, som vi udskriver tingene ud i PHP er vi siger, "echo hej" 134 00:08:02,580 --> 00:08:04,180 eller "echo" ethvert ord. 135 00:08:04,180 --> 00:08:09,830 Og som har den virkning at gøre printf med en snor, "Hej." 136 00:08:09,830 --> 00:08:11,990 Og det tilføjer den nye linje til det. 137 00:08:11,990 --> 00:08:16,000 >> Så lad os lige nu gøre sure-- Jeg vil zoome ud igen lidt bit-- 138 00:08:16,000 --> 00:08:18,250 lad os sørge for, at at koden virker 139 00:08:18,250 --> 00:08:21,030 fordi der kan meget vel være en fejl i denne kode 140 00:08:21,030 --> 00:08:22,880 at vi bliver nødt til at tackle. 141 00:08:22,880 --> 00:08:25,860 Så serveren allerede kører. 142 00:08:25,860 --> 00:08:30,630 Så hvis vi rulle tilbage ned til bunden, Yup, er serveren stadig kører. 143 00:08:30,630 --> 00:08:34,510 Så hvis vi bare trykke på denne lidt lige her-- 144 00:08:34,510 --> 00:08:37,620 welcome-- skal vi get-- stor. 145 00:08:37,620 --> 00:08:39,930 >> Vi stadig har den velkendte "Sig hej" dialog, 146 00:08:39,930 --> 00:08:45,750 men når jeg skriver i "hej," vi vil se at teksten "hello" var faktisk 147 00:08:45,750 --> 00:08:50,080 printes ud, hvilket er præcis, som vi forventet, fordi echo i PHP 148 00:08:50,080 --> 00:08:53,190 er ligesom en printf erklæring. 149 00:08:53,190 --> 00:09:01,410 Så tilbage til den kode, hvordan i P sæt 6 gjorde du leveres distributionen koden 150 00:09:01,410 --> 00:09:05,920 gøre det så PHP ville output den ting, som du 151 00:09:05,920 --> 00:09:07,920 skrevet i den forrige skærm? 152 00:09:07,920 --> 00:09:10,350 >> Og for at slags undersøge hvorfor det sker, er vi 153 00:09:10,350 --> 00:09:15,510 gå i index.html, som er den oprindelige fil, den fil, 154 00:09:15,510 --> 00:09:18,710 dukker op på denne skærm med knappen "Sig hej". 155 00:09:18,710 --> 00:09:20,950 Du bemærker, at der er alle de klassiske ting 156 00:09:20,950 --> 00:09:26,910 vi er kommet til at forvente fra HTML sådan som disse ting, disse tags vedlagt 157 00:09:26,910 --> 00:09:31,080 i vinkelbeslag, som PHP men uden de spørgsmålstegn, 158 00:09:31,080 --> 00:09:34,650 hvilket indikerer en speciel ting til HTML. 159 00:09:34,650 --> 00:09:36,895 Vi har titel, som er "hej." 160 00:09:36,895 --> 00:09:41,010 Og du vil opdage, at som vi så, Titlen er "hej" i begge tilfælde. 161 00:09:41,010 --> 00:09:43,260 Lad os ændre denne ene til "sige" bare så vi 162 00:09:43,260 --> 00:09:48,170 kan skelne os selv, hvor vi er. 163 00:09:48,170 --> 00:09:49,600 >> Men vi har en krop. 164 00:09:49,600 --> 00:09:52,690 Og derefter den interessante bit, bit, der dukker op i HTML, 165 00:09:52,690 --> 00:09:54,530 er denne formular element. 166 00:09:54,530 --> 00:09:56,370 Og så vi har fået en formular. 167 00:09:56,370 --> 00:09:58,330 Og det er nøglen. 168 00:09:58,330 --> 00:10:00,530 Dette er, hvordan vi arbejder med PHP. 169 00:10:00,530 --> 00:10:05,790 Handlingen parameter formular siger, at hello.php 170 00:10:05,790 --> 00:10:09,310 er, hvad vi kommer til at sende værdierne i denne formular til. 171 00:10:09,310 --> 00:10:13,830 Det er her, vi passerer parametrene, så at sige. 172 00:10:13,830 --> 00:10:18,680 >> Du vil opdage en anden ting her er, at metoden er "får." 173 00:10:18,680 --> 00:10:24,450 Der er to primære metoder, som vil 174 00:10:24,450 --> 00:10:28,750 være ved hjælp af PHP til at videregive oplysninger mellem websites-- websider, 175 00:10:28,750 --> 00:10:30,500 rather-- i denne opgave. 176 00:10:30,500 --> 00:10:34,070 Og disse metoder er "få" og "post". 177 00:10:34,070 --> 00:10:37,010 Der er nogle subtile forskelle mellem get og post 178 00:10:37,010 --> 00:10:40,520 at vi får into-- vi vil "komme" ind, hvis du vil. 179 00:10:40,520 --> 00:10:44,030 >> Men for alle virkeligheden og formål, får og post 180 00:10:44,030 --> 00:10:47,120 er begge kun måder, du passerer parametre 181 00:10:47,120 --> 00:10:49,500 med lidt forskellige udførelser. 182 00:10:49,500 --> 00:10:53,500 For nu, vi kommer til at bruge få, fordi få var hvad der blev brugt oprindeligt 183 00:10:53,500 --> 00:10:57,340 i PHP-filen P sæt 6. 184 00:10:57,340 --> 00:11:00,850 Og faktisk, hvis vi går ind og ser før vi har redigeret noget andet, 185 00:11:00,850 --> 00:11:03,090 Jeg har tænkt mig at sige hej at-- hvad er dit navn? 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 ved ikke, hvordan man staver det. 189 00:11:05,600 --> 00:11:06,766 Kan du stave det for mig? 190 00:11:06,766 --> 00:11:08,710 Målgruppe: 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: Ja. 193 00:11:10,440 --> 00:11:10,960 >> SAM LEVATICH: Perfekt. 194 00:11:10,960 --> 00:11:11,210 OK. 195 00:11:11,210 --> 00:11:12,751 Jeg tror jeg gjorde ved, hvordan man staver det. 196 00:11:12,751 --> 00:11:13,510 Undskyld. 197 00:11:13,510 --> 00:11:16,560 Men hvis vi siger "Sig goddag," det er ikke det kommer ikke til at dukke op på skærmen 198 00:11:16,560 --> 00:11:18,476 endnu, fordi vi ændret koden en lille smule. 199 00:11:18,476 --> 00:11:21,290 Men hvis vi gør "Sig hej" - OK, så "hello" er her. 200 00:11:21,290 --> 00:11:24,137 Men hvis vi tager et nærmere se på URL 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å det er en måde at kommunikere til den næste webside 204 00:11:37,180 --> 00:11:39,240 de parametre, vi har passeret. 205 00:11:39,240 --> 00:11:40,870 Vi sagde name = Elliot. 206 00:11:40,870 --> 00:11:46,290 Og det er i sidste ende, hvordan P sæt 6 adgang variablen, som vi passerede i 207 00:11:46,290 --> 00:11:47,520 via formularen. 208 00:11:47,520 --> 00:11:51,470 Og det er noget, er særegne for en GET-anmodning. 209 00:11:51,470 --> 00:11:57,480 En GET anmodning gør parametrene kendt i webadressen på hjemmesiden. 210 00:11:57,480 --> 00:12:01,190 >> Og du vil huske, også, i P sæt 6, at du 211 00:12:01,190 --> 00:12:04,450 havde til at skrive en funktion at behandlet med det faktum 212 00:12:04,450 --> 00:12:09,700 at denne forespørgselsstrengen kunne eksistere efter en fil. 213 00:12:09,700 --> 00:12:14,684 Der kunne være et spørgsmålstegn, efterfulgt ved dybest set et vilkårligt antal tegn. 214 00:12:14,684 --> 00:12:16,350 Og det er præcis, hvad der foregår her. 215 00:12:16,350 --> 00:12:21,280 Og grunden til at du var nødt til at fortolke det i din implementering af server.c i P 216 00:12:21,280 --> 00:12:27,570 sæt 6 er, så du kunne fortælle PHP kode, name = Elliot. 217 00:12:27,570 --> 00:12:30,460 Du behov for at være i stand til parse, at ud af URL'en 218 00:12:30,460 --> 00:12:35,900 således at PHP pågældende fil vidste, hvad det var med at gøre. 219 00:12:35,900 --> 00:12:39,350 >> Så forhåbentlig dette giver motivationen til at server.c 220 00:12:39,350 --> 00:12:43,900 nu, at vi går videre uden for C i PHP. 221 00:12:43,900 --> 00:12:48,240 Så lad os faktisk fokusere på at få adgang til ting passeret gennem en GET-anmodning nu 222 00:12:48,240 --> 00:12:48,880 på dette tidspunkt. 223 00:12:48,880 --> 00:12:50,157 Jeg har tænkt mig at gemme denne. 224 00:12:50,157 --> 00:12:51,240 Vi ændrede ikke noget. 225 00:12:51,240 --> 00:12:56,080 Det ser ud som vi har fået et input felt. 226 00:12:56,080 --> 00:12:58,550 >> Vi sætte nogle egenskaber, som vi kan gøre en HTML. 227 00:12:58,550 --> 00:12:59,550 Disse er simple ting. 228 00:12:59,550 --> 00:13:00,580 Vi har ikke brug for disse. 229 00:13:00,580 --> 00:13:03,750 Men vi har fået autofuldførelse fra, som dybest set says-- du ved, 230 00:13:03,750 --> 00:13:05,710 når du skriver ting ind i banen, til tider 231 00:13:05,710 --> 00:13:07,355 den forsøger at udfylde det i for dig. 232 00:13:07,355 --> 00:13:08,230 Så det er en dejlig ting. 233 00:13:08,230 --> 00:13:11,700 Vi ønsker at slå det fra til dette formål. 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, at hvis vi ønskede. 236 00:13:15,640 --> 00:13:19,510 >> Autofokus bare stikker markøren i form lige i starten. 237 00:13:19,510 --> 00:13:21,060 Igen, ikke alt for vigtigt. 238 00:13:21,060 --> 00:13:26,220 >> Men name = "navn" - det er lidt vanskelig, fordi det er navn og navn. 239 00:13:26,220 --> 00:13:28,730 Men vi kunne har ændret dette til noget andet. 240 00:13:28,730 --> 00:13:30,563 Og i virkeligheden, det er hvad vi vil gøre lige nu. 241 00:13:30,563 --> 00:13:34,830 Vi vil sige "person", som er lidt ligesom navn 242 00:13:34,830 --> 00:13:36,790 hvis en person er defineret ved deres navn. 243 00:13:36,790 --> 00:13:41,480 >> Så lad os lukke denne, genåbne vores hjemmeside 244 00:13:41,480 --> 00:13:46,110 da vores server kører stadig Apache 50, og vi vil sige, hej, her er 245 00:13:46,110 --> 00:13:47,200 Elliot igen. 246 00:13:47,200 --> 00:13:48,460 Hvorfor ikke? 247 00:13:48,460 --> 00:13:49,220 Hej. 248 00:13:49,220 --> 00:13:52,880 Og hvis vi går op her, vil vi se så i stedet for name = Elliot, 249 00:13:52,880 --> 00:13:55,200 det siger personen = Elliot. 250 00:13:55,200 --> 00:14:00,060 Og det er et direkte resultat af det faktum, at vi netop ændret navn = "person." 251 00:14:00,060 --> 00:14:06,840 >> Så i et input element en HTML-formular, navnet feltet 252 00:14:06,840 --> 00:14:10,590 er identifikator for den parameter, der bliver passeret. 253 00:14:10,590 --> 00:14:14,250 Det er ligesom, hvis du opretter en funktion "tilføj", der tog i to heltal 254 00:14:14,250 --> 00:14:16,670 og du sagde int a og int b. 255 00:14:16,670 --> 00:14:22,680 Det ville være navn a, og hvis du ønskede en anden form, som 256 00:14:22,680 --> 00:14:27,800 vi kan gøre bare ved kopiering og indsætte, så ville vi have navn b. 257 00:14:27,800 --> 00:14:31,030 >> Så nu vil vi have to parametre der bliver ført gennem 258 00:14:31,030 --> 00:14:36,970 komme til den næste website-- den næste webside, hello.php. 259 00:14:36,970 --> 00:14:39,770 Og vi kan faktisk se der igen, hvis vi vil. 260 00:14:39,770 --> 00:14:44,830 Dette er den nemmeste måde at håndtere web kode i IDE, dybest set. 261 00:14:44,830 --> 00:14:47,940 Du starter op på serveren, få det kører, og derefter hver gang du 262 00:14:47,940 --> 00:14:50,649 foretage nogle ændringer, bare tæt at filen bare for at være sikker. 263 00:14:50,649 --> 00:14:52,440 Ved at trykke på knappen igen er lidt tricky 264 00:14:52,440 --> 00:14:55,800 fordi det kan indlæse en tidligere udgave, ikke den mest opdaterede én. 265 00:14:55,800 --> 00:14:59,200 >> Og så skal du bare klikke på din knappen igen, pop lige up-- åh, 266 00:14:59,200 --> 00:15:00,510 og nu er der to former. 267 00:15:00,510 --> 00:15:10,440 Og så hvis vi skriver en ting i hver en-- "Jason Hirshhorn," for instance-- 268 00:15:10,440 --> 00:15:11,590 vi siger hej. 269 00:15:11,590 --> 00:15:12,840 Vi ser op på vores parametre. 270 00:15:12,840 --> 00:15:18,910 Det ser ud som vi har fået, som forventet, a = Jason og b = Hirshhorn, 271 00:15:18,910 --> 00:15:23,760 som repræsenterer de to parametre at vi passeret denne funktion. 272 00:15:23,760 --> 00:15:27,900 >> Så lad os nu rent faktisk komme til gennemførelse af denne funktionalitet, vi 273 00:15:27,900 --> 00:15:30,840 havde i P sæt 6. 274 00:15:30,840 --> 00:15:32,490 Så lige nu er vi bare ekko hej. 275 00:15:32,490 --> 00:15:34,310 Og det er ikke meget nyttig. 276 00:15:34,310 --> 00:15:38,530 Vi ønsker at gentage nogle variabel der blev videregivet til os. 277 00:15:38,530 --> 00:15:40,320 Og vi kender navnet på denne variabel. 278 00:15:40,320 --> 00:15:41,770 Vi har en, og vi har f. 279 00:15:41,770 --> 00:15:43,500 Så vi kunne vælge at gentage enten en. 280 00:15:43,500 --> 00:15:45,470 >> Men hvordan kan vi få adgang til det? 281 00:15:45,470 --> 00:15:48,820 Nå, der er sikker globale variabler i PHP. 282 00:15:48,820 --> 00:15:51,240 Og jeg har tænkt mig at skrive dem i kommentarer her. 283 00:15:51,240 --> 00:15:59,910 De to vigtigste er get og bogføre til vores formål lige nu. 284 00:15:59,910 --> 00:16:05,350 Det er de arrays eller, Teknisk set ordbøger 285 00:16:05,350 --> 00:16:10,540 hvor vores variabler, vi er gå videre til næste webside levende. 286 00:16:10,540 --> 00:16:14,520 Og vi skal snart se, hvordan man bruger dem. 287 00:16:14,520 --> 00:16:19,720 >> En anden korte bemærkning om PHP kode og nogle detaljerne i det-- i C, 288 00:16:19,720 --> 00:16:23,260 at erklære en variabel eller at anvende variable, 289 00:16:23,260 --> 00:16:24,570 du først nødt til at erklære dem. 290 00:16:24,570 --> 00:16:30,860 Og hvad du havde at gøre, når du erklærede dem var sige int a eller char b. 291 00:16:30,860 --> 00:16:35,630 Du havde at erklære de typer af disse variabler, før du har oprettet dem. 292 00:16:35,630 --> 00:16:38,800 PHP-- du behøver ikke at gøre noget af det. 293 00:16:38,800 --> 00:16:42,522 PHP ikke bede om typen af ​​variabel. 294 00:16:42,522 --> 00:16:44,480 Og den måde, som du skabe en variable-- stedet 295 00:16:44,480 --> 00:16:49,930 end at sige int, char, string-- som er virkelig char *, som vi know-- 296 00:16:49,930 --> 00:16:52,180 snarere end at gøre alle at, fordi alt 297 00:16:52,180 --> 00:16:54,620 er af den samme type, typeløse, kan vi bare 298 00:16:54,620 --> 00:16:59,210 bruge et tegn, der er dollartegn. 299 00:16:59,210 --> 00:17:03,700 Og du vil se det er allerede popping op, små autocomplete ting. 300 00:17:03,700 --> 00:17:11,380 Og det er at sige, at _GET og _POST er to muligheder, som jeg har til rådighed 301 00:17:11,380 --> 00:17:11,900 til mig. 302 00:17:11,900 --> 00:17:16,430 Nogle af disse andre ting er andre globale variabler i PHP 303 00:17:16,430 --> 00:17:18,430 at du skal bruge i løbet af løbet af P sæt 7. 304 00:17:18,430 --> 00:17:20,569 For nu vil vi fokus på get og post. 305 00:17:20,569 --> 00:17:22,910 Men det er et nyttigt ting, at IDE gør 306 00:17:22,910 --> 00:17:24,980 hvor når du har indtastet i denne dollartegn, 307 00:17:24,980 --> 00:17:28,760 det vil begynde at udfylde globale variabler eller variabler, du allerede har defineret. 308 00:17:28,760 --> 00:17:34,360 >> Så hvis du ønsker at definere en variabel kaldet "streng" 309 00:17:34,360 --> 00:17:38,290 du bare kunne sætte den lig med "hej". 310 00:17:38,290 --> 00:17:40,100 Og det er dybest set så simpelt er det. 311 00:17:40,100 --> 00:17:44,720 Og så vi kunne gøre noget lignende "echo $ streng." 312 00:17:44,720 --> 00:17:48,524 IDE-enheden skal smide nogle fejl, hvis jeg gør noget forkert, 313 00:17:48,524 --> 00:17:50,190 så forhåbentlig jeg gør alt rigtigt. 314 00:17:50,190 --> 00:17:52,060 Men bugs altid vil opstå. 315 00:17:52,060 --> 00:17:56,670 >> En anden tricky ting ved PHP er, at det ikke er kompileret. 316 00:17:56,670 --> 00:18:00,640 Så med C-programmer, ville du gøre den daglige rutine of-- dybest set, 317 00:18:00,640 --> 00:18:02,710 du ville gøre redigeringer til din kode, ville du gemme det, 318 00:18:02,710 --> 00:18:04,460 og så ville du gøre det, hvor make var 319 00:18:04,460 --> 00:18:08,830 det trin, der kaldes compiler, clang, for at gøre din kode, denne tekst 320 00:18:08,830 --> 00:18:10,570 fil, i en eksekverbar. 321 00:18:10,570 --> 00:18:15,550 PHP er C-lignende, men det er henrettet om flyve med din web-browser. 322 00:18:15,550 --> 00:18:17,640 Så der er ingen måde at vide. 323 00:18:17,640 --> 00:18:19,790 >> Gøre ville smide dem nyttige fejl, ikke? 324 00:18:19,790 --> 00:18:22,190 Det ville være ligesom, du ikke erklære denne variabel 325 00:18:22,190 --> 00:18:23,320 før du forsøgte at bruge den. 326 00:18:23,320 --> 00:18:29,120 Du gjorde alt dette dårlige stuff-- segmenteringsfejl, segmenteringsfejl, alle den slags sjov gange 327 00:18:29,120 --> 00:18:31,000 der fulgte med make. 328 00:18:31,000 --> 00:18:33,920 PHP er et tveægget sværd fordi du ikke vil få disse fejl, 329 00:18:33,920 --> 00:18:37,770 men det betyder også, at du ikke vil vide virkelig, hvad er der galt med dit program 330 00:18:37,770 --> 00:18:39,840 hvis du bare køre det, og det virker ikke. 331 00:18:39,840 --> 00:18:45,130 Men debugger bør påpege nogle forhåbentlig nyttige små ting 332 00:18:45,130 --> 00:18:47,950 syntaktisk, at du kan løse. 333 00:18:47,950 --> 00:18:52,850 >> Så nu, hvis vi gå over at-- sige, lad os lukke det. 334 00:18:52,850 --> 00:18:54,522 Genåbne. 335 00:18:54,522 --> 00:18:55,480 Og vi er tilbage til her. 336 00:18:55,480 --> 00:18:57,210 Så vi har fået en variabel og en variabel b. 337 00:18:57,210 --> 00:18:58,626 Og disse vil i sidste ende ikke noget. 338 00:18:58,626 --> 00:19:01,850 Vi kalder dem h og g uden særlig grund. 339 00:19:01,850 --> 00:19:03,120 >> Og vi siger goddag. 340 00:19:03,120 --> 00:19:07,480 Nu ser det ud til vores snor "Hej" er faktisk udskrivning. 341 00:19:07,480 --> 00:19:10,460 Vi skabte en variabel kaldet "streng", sæt den lig med "hej". 342 00:19:10,460 --> 00:19:15,520 Bemærk, at vi ikke har at gøre malloc eller gøre et tegn array. 343 00:19:15,520 --> 00:19:19,110 >> I PHP, fordi variabler er typeløse, en streng 344 00:19:19,110 --> 00:19:22,230 er det samme som en char for alle henseender. 345 00:19:22,230 --> 00:19:23,570 Dette kunne være "Hej." 346 00:19:23,570 --> 00:19:26,340 Det kunne være lige tegnet k. 347 00:19:26,340 --> 00:19:29,290 Dette kan være et tal fra 1. 348 00:19:29,290 --> 00:19:30,300 Og det er ligeglad. 349 00:19:30,300 --> 00:19:33,560 PHP er ligeglad typen af ​​din variabel. 350 00:19:33,560 --> 00:19:34,390 Eller det gør pleje. 351 00:19:34,390 --> 00:19:36,240 Det bekymrer, når du prøver og gøre ting med det, 352 00:19:36,240 --> 00:19:38,790 men det gør ikke pleje i trinnet erklæring. 353 00:19:38,790 --> 00:19:46,960 >> Og ligesom du kan i C, kan du erklære strenge på stakken som denne 354 00:19:46,960 --> 00:19:51,130 selvom at sige "stak" er lidt Lidt af en potentiel misvisende, når 355 00:19:51,130 --> 00:19:52,230 vi taler om PHP. 356 00:19:52,230 --> 00:19:54,020 Men vi behøver ikke at bekymre dig om det. 357 00:19:54,020 --> 00:19:55,936 Så vi fik vores snor "Hej," og vi echo streng. 358 00:19:55,936 --> 00:19:58,880 Så nu har vi diskuteret variabler. 359 00:19:58,880 --> 00:20:06,060 Så nu er vi nødt til at tale om get og skrive og udføre den sidste ting, der er 360 00:20:06,060 --> 00:20:12,660 nødvendig for virkelig at få dette tilbage op til funktionaliteten af ​​P sæt 6. 361 00:20:12,660 --> 00:20:14,990 Så lige nu er vi ekko strengen, men vi 362 00:20:14,990 --> 00:20:17,080 har disse variabler får og post. 363 00:20:17,080 --> 00:20:19,430 Og fordi vi bruger fremgangsmåden får det 364 00:20:19,430 --> 00:20:24,810 synes naturligt, at vores variabel, Vi er interesseret i både a og b, 365 00:20:24,810 --> 00:20:29,870 vil blive placeret i arrayet eller ordbog, teknisk få. 366 00:20:29,870 --> 00:20:33,510 >> Så hvis vi oprettet komme som denne med din groups-- jeg trykkede ind 367 00:20:33,510 --> 00:20:36,770 og det kunne ikke lide det-- 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å kan vi allerede begynde at få adgang nogle af elementerne i get. 370 00:20:41,380 --> 00:20:45,000 Hvis vi får, denne syntaks for arrays i PHP er meget C-lignende. 371 00:20:45,000 --> 00:20:47,900 Vi har vores to firkantede parenteser. 372 00:20:47,900 --> 00:20:53,440 >> Så hvis vi siger få i en normal array, kunne vi få adgang 373 00:20:53,440 --> 00:20:55,600 nulte indeks, første indeks. 374 00:20:55,600 --> 00:20:56,840 PHP er nul indeks. 375 00:20:56,840 --> 00:21:00,550 Vi kunne sige nul, en, to-- ting som dette. 376 00:21:00,550 --> 00:21:03,420 Og jeg har at sige, at få er teknisk en ordbog. 377 00:21:03,420 --> 00:21:08,290 Så hvad PHP gør under kølerhjelmen, som er en lille smule pænere end C, 378 00:21:08,290 --> 00:21:12,760 er det allerede giver dig nogle ordbog funktionalitet, som 379 00:21:12,760 --> 00:21:16,240 er virkelig hash tabeller, eller forsøger at, angiveligt. 380 00:21:16,240 --> 00:21:19,360 Eller, det teknisk kunne være en prøve så godt. 381 00:21:19,360 --> 00:21:25,500 Men PHP er ved at gennemføre en hash tabel, som danner en effektiv ordbog. 382 00:21:25,500 --> 00:21:28,400 >> Og så vi kender navnet af vores variable, ikke? 383 00:21:28,400 --> 00:21:32,440 Det bliver vedtaget i søgestrengen af ​​PHP. 384 00:21:32,440 --> 00:21:37,290 Vi har a = h og b = g hvor og b er navnene på de variabler. 385 00:21:37,290 --> 00:21:41,580 Så den måde, at vi kan få adgang til værdi, der svarer til tasten 386 00:21:41,580 --> 00:21:45,055 i vores ordbog er bare ved at sige _GET_GET ["a"]. 387 00:21:45,055 --> 00:21:48,170 388 00:21:48,170 --> 00:21:51,365 >> Så nu har vi _GET ["a"]. 389 00:21:51,365 --> 00:21:56,930 Og hvis vi bare erstatte inde vores ekko, hvis vi echo _GET_GET ["a"] - 390 00:21:56,930 --> 00:22:02,410 og vi vil se, om debugger kaster eventuelle fejl om denne-- 391 00:22:02,410 --> 00:22:05,620 Vi vil spare det, og lukke det ud. 392 00:22:05,620 --> 00:22:07,130 Åbne det op. 393 00:22:07,130 --> 00:22:10,390 Så vi bare gør en ret nu, så b bør ikke noget. 394 00:22:10,390 --> 00:22:12,980 "hende" og "ham" - "brummen". "hende" og "brummen". 395 00:22:12,980 --> 00:22:14,810 Lyder godt. 396 00:22:14,810 --> 00:22:18,040 >> Og det udskrives "hende", som er vanvittigt. 397 00:22:18,040 --> 00:22:21,920 Men det er præcis, hvad foregik i P sæt 6. 398 00:22:21,920 --> 00:22:27,240 Dybest set, hvad P sæt 6 var doing-- echo hej, 399 00:22:27,240 --> 00:22:31,580 name-- hvor det havde en variabelnavn og det bare 400 00:22:31,580 --> 00:22:35,520 beder dig om at indtaste den smule tekst. 401 00:22:35,520 --> 00:22:37,380 Der var også nogle tillægskode hvor 402 00:22:37,380 --> 00:22:40,550 det medtages, hvis udsagn, som vi kan gøre lige nu. 403 00:22:40,550 --> 00:22:50,120 >> Vi kan sige, hvis der eksisterer, som er en funktionalitet i PHP, 404 00:22:50,120 --> 00:22:55,110 _GET Med underscore, "navn" - der dybest set siger, 405 00:22:55,110 --> 00:22:58,760 "Hvis navn er blevet udfyldt", fordi vi kunne have netop klikket på knappen 406 00:22:58,760 --> 00:23:02,580 at indsende form uden skrive noget ind i dette område. 407 00:23:02,580 --> 00:23:07,760 Og vi wrap at i vores venlige krøllede parenteser. 408 00:23:07,760 --> 00:23:09,175 Vi kan have en anden erklæring. 409 00:23:09,175 --> 00:23:13,300 410 00:23:13,300 --> 00:23:18,820 Og det er alle inden for PHP vinkel beslag, spørgsmålstegn, vinkel beslag, 411 00:23:18,820 --> 00:23:20,040 hvis du vil. 412 00:23:20,040 --> 00:23:21,750 >> Og nu vil vi se, om det virker. 413 00:23:21,750 --> 00:23:26,300 Jeg bliver ved at vente på det til debug og crap ud på mig, dybest set, 414 00:23:26,300 --> 00:23:28,410 men det har endnu ikke. 415 00:23:28,410 --> 00:23:30,830 Måske vil det nu fordi jeg talte om. 416 00:23:30,830 --> 00:23:31,330 Ja. 417 00:23:31,330 --> 00:23:32,510 Det gjorde, faktisk. 418 00:23:32,510 --> 00:23:34,610 Så, intet viser op. 419 00:23:34,610 --> 00:23:38,750 Det er på grund af noget galt at jeg skrev i PHP-kode. 420 00:23:38,750 --> 00:23:42,844 Og jeg nævnte debugging er vanskelig, fordi i PHP, vi 421 00:23:42,844 --> 00:23:45,260 ikke kompilere det på forhånd og oversætteren var ikke som, 422 00:23:45,260 --> 00:23:46,710 her er, hvor dine fejl er. 423 00:23:46,710 --> 00:23:49,690 >> Men hvad vi kan gøre is-- gøre folk husker 424 00:23:49,690 --> 00:23:57,010 hvordan man ser på de forskellige netværk anmoder om, at PHP-- eller at hjemmesider 425 00:23:57,010 --> 00:23:57,620 sende? 426 00:23:57,620 --> 00:24:00,290 [? Malin?] Gjorde dette i foredrag én eller to gange. 427 00:24:00,290 --> 00:24:05,830 Du husker, hvor vi gå for at finde de forskellige gæld og 200 oks, 428 00:24:05,830 --> 00:24:09,780 alle disse koder, der bliver sendt via HTTP fra webside til webside? 429 00:24:09,780 --> 00:24:12,514 Er der nogen der kan huske hvor vi går til at gøre det? 430 00:24:12,514 --> 00:24:13,787 >> PUBLIKUM: Side Source. 431 00:24:13,787 --> 00:24:14,870 SAM LEVATICH: Side kilde. 432 00:24:14,870 --> 00:24:15,890 Nøjagtig. 433 00:24:15,890 --> 00:24:19,230 Hvis du går til side Source-- perfekt. 434 00:24:19,230 --> 00:24:21,630 Så Side Kilde trækker op inspektøren. 435 00:24:21,630 --> 00:24:23,140 >> Og jeg bruger Safari. 436 00:24:23,140 --> 00:24:25,790 En masse af jer vil formentlig være bruger Chrome eller Firefox. 437 00:24:25,790 --> 00:24:27,750 Men så længe du er i enhver moderne browser-- 438 00:24:27,750 --> 00:24:29,500 og velkommen til at følge sammen, hvis du ønsker. 439 00:24:29,500 --> 00:24:32,560 Du kan skrive op denne kode eller bare se inde i P-sæt 6 440 00:24:32,560 --> 00:24:35,820 bibliotek for nogle lignende ting. 441 00:24:35,820 --> 00:24:41,020 hello.php er, hvad vi er arbejder i øjeblikket på at efterligne. 442 00:24:41,020 --> 00:24:42,476 >> Så der er en række faner. 443 00:24:42,476 --> 00:24:43,850 Vi kan se på alle de ressourcer. 444 00:24:43,850 --> 00:24:45,810 Vi kan se kildekoden. 445 00:24:45,810 --> 00:24:49,900 Så ligner det ikke gjorde komme forbi krop i sidste ende. 446 00:24:49,900 --> 00:24:54,890 Det fundet en fejl i PHP, og det holdt op med indlæsning af hele websiden. 447 00:24:54,890 --> 00:24:58,320 Vi har ikke engang en ende tag for HTML eller noget. 448 00:24:58,320 --> 00:25:07,189 >> Og hvis vi ser på nettet, vi kan se, at vi bliver sendt en anmodning. 449 00:25:07,189 --> 00:25:07,980 Dette er domænet. 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 bruger 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 blev rødt, når jeg var ikke vælge den. 455 00:25:19,030 --> 00:25:22,680 Hvordan kan jeg fravælge det? 456 00:25:22,680 --> 00:25:23,980 Nå, det var rødt. 457 00:25:23,980 --> 00:25:25,201 Lad mig genopfriske. 458 00:25:25,201 --> 00:25:25,700 Der er det. 459 00:25:25,700 --> 00:25:26,640 Nu er det rødt. 460 00:25:26,640 --> 00:25:30,530 >> Så det er rød, hvilket betyder det mislykkedes, hvilket er dårligt. 461 00:25:30,530 --> 00:25:32,280 Så lad os undersøge, hvorfor det gjorde mislykkes. 462 00:25:32,280 --> 00:25:37,070 Så alt, Sidekilde kan dybest set fortælle dig er dine ting 463 00:25:37,070 --> 00:25:38,720 virkede ikke, som vi allerede kan se. 464 00:25:38,720 --> 00:25:42,100 Så ideelt set ville der være et mere nyttigt redskab. 465 00:25:42,100 --> 00:25:45,710 Og der er nogle browserudvidelser der tillader dig at debug PHP, 466 00:25:45,710 --> 00:25:50,490 men vi kommer ikke til at skrive et ton af PHP, 467 00:25:50,490 --> 00:25:53,190 så det er nok bare bedst til at se gennem din kode 468 00:25:53,190 --> 00:25:56,760 omhyggeligt og bare sørge for, at det er ikke at gøre noget andet. 469 00:25:56,760 --> 00:26:03,876 >> Så lad os se om formatet af denne hvis erklæring er, hvor problemet er. 470 00:26:03,876 --> 00:26:07,420 Jeg ønsker at indlæse den tilbage op her. 471 00:26:07,420 --> 00:26:09,830 Hej hej. 472 00:26:09,830 --> 00:26:11,350 Så der er et problem der. 473 00:26:11,350 --> 00:26:15,130 >> Så for korrekte syntaks af PHP, er PHP går 474 00:26:15,130 --> 00:26:17,369 at være C-lignende i at du vil se sløjfer. 475 00:26:17,369 --> 00:26:18,410 Du vil se, hvis udsagn. 476 00:26:18,410 --> 00:26:20,920 Du kan se alle disse venner at du er blevet fortrolig 477 00:26:20,920 --> 00:26:24,820 med i løbet af denne CS50 semester. 478 00:26:24,820 --> 00:26:29,960 Men den bedste måde at finde ud af at gøre noget i PHP er at Google det 479 00:26:29,960 --> 00:26:33,170 eller til at se på nogle eksempler på PHP kode fordi du kender funktionaliteten. 480 00:26:33,170 --> 00:26:35,080 >> Du ved, hvad du kan gøre med programmet. 481 00:26:35,080 --> 00:26:35,976 Du kan sløjfe. 482 00:26:35,976 --> 00:26:37,600 Du kan loop så mange gange som du ønsker. 483 00:26:37,600 --> 00:26:39,433 Du kan løkke i alt mulige forskellige måder. 484 00:26:39,433 --> 00:26:40,700 Du kan oprette funktioner. 485 00:26:40,700 --> 00:26:43,241 Du kan oprette funktioner, som ringe til andre funktioner, funktioner 486 00:26:43,241 --> 00:26:44,150 at kalde sig. 487 00:26:44,150 --> 00:26:45,733 Og du har navne for disse begreber. 488 00:26:45,733 --> 00:26:49,860 Du har rekursion, sløjfer, hvis andre kontrolforanstaltninger strømme. 489 00:26:49,860 --> 00:26:51,300 Og så Google er din bedste ven. 490 00:26:51,300 --> 00:26:53,540 Selv siger, "PHP hvis udsagnet "og der ll 491 00:26:53,540 --> 00:26:57,740 være tonsvis af stillinger med svar på andre mennesker 492 00:26:57,740 --> 00:27:02,090 der har haft lignende spørgsmål til dig, der lige er startet ud med PHP 493 00:27:02,090 --> 00:27:03,820 og er nysgerrig omkring en syntaks ting. 494 00:27:03,820 --> 00:27:08,480 >> Fordi vi har den luksus at være stand til at se på koden i P-sæt 6, 495 00:27:08,480 --> 00:27:14,980 vi faktisk træk den op og se, at OK, her er noget interessant. 496 00:27:14,980 --> 00:27:18,070 Så dette er, hvad det egentlig lignede i P sæt 6. 497 00:27:18,070 --> 00:27:20,340 Så hvis vi går gennem denne, Vi kan se, at vi har 498 00:27:20,340 --> 00:27:27,150 fik flere af disse lidt PHP-lignende spørgsmålstegn bits. 499 00:27:27,150 --> 00:27:29,050 >> Og der er ikke krøllede parenteser. 500 00:27:29,050 --> 00:27:30,250 Der er koloner. 501 00:27:30,250 --> 00:27:32,340 Og der er krøllet seler i PHP, men dette 502 00:27:32,340 --> 00:27:38,700 er et format og en måde at gøre PHP, der fungerer godt med HTML 503 00:27:38,700 --> 00:27:43,830 fordi som vil du se, vi lukker off disse PHP bits-- den andens 504 00:27:43,830 --> 00:27:49,770 og hvis'er og alle at-- og derefter vi indflette HTML inde i dem 505 00:27:49,770 --> 00:27:54,640 mens den stadig efter kontrol flow fastsat af PHP. 506 00:27:54,640 --> 00:27:58,480 >> Så jeg vil blot hurtig gåtur gennem denne 507 00:27:58,480 --> 00:28:01,740 fordi det er en masse af de samme begreber, som vi gjorde før. 508 00:28:01,740 --> 00:28:07,280 Vi har fået, hvis ikke tom, parenteser, _GET_GET ["navn"]. 509 00:28:07,280 --> 00:28:08,500 Dette er alle de samme ting. 510 00:28:08,500 --> 00:28:15,430 Vi bruger den _GET ordbog, PHP sender på anmodning af formularer, 511 00:28:15,430 --> 00:28:20,720 fordi det er parametrene for handling, og metoden er at få. 512 00:28:20,720 --> 00:28:22,110 Og derefter der ender det. 513 00:28:22,110 --> 00:28:27,420 Den kolon er en signifier at bare gøre det hvis hvis udsagn evalueres til sand. 514 00:28:27,420 --> 00:28:29,490 Det er ligesom en krøllet tandbøjle. 515 00:28:29,490 --> 00:28:33,320 Og i virkeligheden er det en krøllet klammeparentes på andre sprog som Python, 516 00:28:33,320 --> 00:28:37,070 som du kan støde på, hvis du bare gøre det for din endelige projekt. 517 00:28:37,070 --> 00:28:40,170 >> Og så er denne linje, hej. 518 00:28:40,170 --> 00:28:41,510 Så har vi denne underlige ting. 519 00:28:41,510 --> 00:28:43,190 Vi har flere konsoller. 520 00:28:43,190 --> 00:28:46,140 Der er ingen HTTP there-- eller PHP, undskyld. 521 00:28:46,140 --> 00:28:47,250 Men der er et lighedstegn. 522 00:28:47,250 --> 00:28:50,625 Og så har vi en funktion, htmlspecialchars (_GEThtmlspecialchars (_GET ["navn"]). 523 00:28:50,625 --> 00:28:54,440 524 00:28:54,440 --> 00:28:58,040 Det er lidt ligesom en mere avanceret version af ekko. 525 00:28:58,040 --> 00:29:01,450 Ligesom vi havde ekko som en måde at udskrive tingene ud i PHP. 526 00:29:01,450 --> 00:29:03,890 Dette er en funktion, der er defineret i PHP, der 527 00:29:03,890 --> 00:29:08,160 vil beskæftige sig med nogle mere væmmeligt tegn og byte værdier 528 00:29:08,160 --> 00:29:09,540 at du kunne passere det. 529 00:29:09,540 --> 00:29:11,070 Det er altid sikrest at bruge dette. 530 00:29:11,070 --> 00:29:14,930 Men ekko vil gøre arbejdet bare fint, hvis vi ikke er 531 00:29:14,930 --> 00:29:17,620 beskæftiger sig med noget alt for grim. 532 00:29:17,620 --> 00:29:20,340 >> Og så dette har den samme virkning dybest set, 533 00:29:20,340 --> 00:29:26,360 denne ting i mellem spørgsmålet varemærker evalueres ved PHP. 534 00:29:26,360 --> 00:29:34,490 htmlspecialchars returnerer en dejlig HTML trykt værdi _GET_GET ["navn"], dvs. 535 00:29:34,490 --> 00:29:36,010 uanset hvad vi har skrevet i form. 536 00:29:36,010 --> 00:29:40,025 Og så er det vil sige hej, komma plads, og så det. 537 00:29:40,025 --> 00:29:42,910 Det hele mellem vinkelbeslagene 538 00:29:42,910 --> 00:29:47,390 vil blive erstattet af hvad htmlspecialchars lægger ud. 539 00:29:47,390 --> 00:29:49,390 Så det er dybest set ens til, hvad vi laver. 540 00:29:49,390 --> 00:29:54,760 Og vi har en anden sætning, der er hej verden, hvilket giver mening. 541 00:29:54,760 --> 00:29:58,070 Så lad os nu gå tilbage til vores kode og se exactly-- åh. 542 00:29:58,070 --> 00:30:02,200 Jeg sagde eksisterer, som ikke er en ting, vi ønskede at gøre. 543 00:30:02,200 --> 00:30:05,370 Vi ønskede at sige ikke er tom. 544 00:30:05,370 --> 00:30:10,020 >> Og så dette bør arbejde lidt lidt bedre, ikke tom _GET_GET ["navn"]. 545 00:30:10,020 --> 00:30:12,710 Og det krøllede klammeparentes matcher det krøllede klammeparentes. 546 00:30:12,710 --> 00:30:15,210 Vi har fået vores krøllede parenteser her. 547 00:30:15,210 --> 00:30:17,790 echo hej _GET ["navn"]. 548 00:30:17,790 --> 00:30:19,912 Lad os se, om det fungerer lidt bedre. 549 00:30:19,912 --> 00:30:21,350 Vi kører stadig vores server. 550 00:30:21,350 --> 00:30:23,910 Hej Jason. 551 00:30:23,910 --> 00:30:24,780 Hej Jason. 552 00:30:24,780 --> 00:30:25,810 Og det virkede denne gang. 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 anvende de krøllede parenteser, som du kender og elsker i PHP kode i HTML. 555 00:30:35,180 --> 00:30:41,100 PHP kode leveres til dig i pset 6-- pset 6-- 556 00:30:41,100 --> 00:30:44,760 tilvejebringer en anden måde at gøre det samme. 557 00:30:44,760 --> 00:30:49,220 >> Så nu har vi magten. 558 00:30:49,220 --> 00:30:55,740 Vi har funktionalitet til at gennemføre PHP kode som vi så i pset 6 559 00:30:55,740 --> 00:30:57,390 af os selv, dybest set. 560 00:30:57,390 --> 00:31:01,350 Før jeg går videre, hvad er nogle af de spørgsmål, du har på dette punkt? 561 00:31:01,350 --> 00:31:02,066 Ja [uhørligt]. 562 00:31:02,066 --> 00:31:06,512 >> PUBLIKUM: Så i den affattelse pset6, når du kører det, er der et mellemrum. 563 00:31:06,512 --> 00:31:09,330 Og jeg kan se, hvor pladsen er efter kommaet. [Uhørligt] starten 564 00:31:09,330 --> 00:31:10,700 den åbne beslag. 565 00:31:10,700 --> 00:31:15,420 Hvordan optage plads i den måde, du skrev dine egne koder? 566 00:31:15,420 --> 00:31:17,910 >> SPEAKER: Det er et godt spørgsmål. 567 00:31:17,910 --> 00:31:21,650 Og så lad os finde ud af. 568 00:31:21,650 --> 00:31:24,450 Så det er en rigtig godt spørgsmål og en, som jeg ikke overveje. 569 00:31:24,450 --> 00:31:25,950 Men lad os gøre det sammen. 570 00:31:25,950 --> 00:31:30,280 >> Så først og fremmest, hvad Jeg gør med ekko 571 00:31:30,280 --> 00:31:33,690 er, når vi bare echo hej, det output hej. 572 00:31:33,690 --> 00:31:41,310 Hvis vi echo nu dette får på en separat linje, lad os undersøge, hvad der sker. 573 00:31:41,310 --> 00:31:43,740 Så vi klikker på dette. 574 00:31:43,740 --> 00:31:45,220 Vi holde siger, Hej Jason. 575 00:31:45,220 --> 00:31:48,690 Så igen, har vi ikke denne plads. 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 uanset hvor mange spaces-- nej, ikke den V-- 578 00:31:55,820 --> 00:32:01,770 uanset hvor mange pladser vi sætte i her-- hvis vi nu indlæse det op igen, 579 00:32:01,770 --> 00:32:03,010 Hej Jason. 580 00:32:03,010 --> 00:32:05,770 Ja, se, alle de mellemrum fik spist op. 581 00:32:05,770 --> 00:32:08,020 Og det er noget, ekko-funktionen gør. 582 00:32:08,020 --> 00:32:11,110 >> Så for at tage sig af at rummet, og det er 583 00:32:11,110 --> 00:32:14,960 en af ​​grundene hvorfor du ikke bruger echo 584 00:32:14,960 --> 00:32:18,200 og du bruger htmlspecialchars stedet. 585 00:32:18,200 --> 00:32:22,140 Jeg er nysgerrig, hvad ville ske, hvis vi gjorde dette 586 00:32:22,140 --> 00:32:26,700 hvor vi lukkede et rum i en streng. 587 00:32:26,700 --> 00:32:29,720 Jeg er ærlig talt ikke sikker på hvad vil ske, når jeg gør dette. 588 00:32:29,720 --> 00:32:30,790 >> Så det er én måde. 589 00:32:30,790 --> 00:32:32,210 Det er én måde at tage sig af det. 590 00:32:32,210 --> 00:32:34,840 Hvis du ruller plads i en streng, så rummet 591 00:32:34,840 --> 00:32:36,920 vil blive udsendt pænt ved ekko. 592 00:32:36,920 --> 00:32:41,930 Den sikreste ting at gøre, er at gøre htmlspecialchars. 593 00:32:41,930 --> 00:32:43,800 Det er altid en sikker satsning. 594 00:32:43,800 --> 00:32:47,050 Men nu har vi en måde at gøre det med ekko, hvis nødvendigt. 595 00:32:47,050 --> 00:32:50,700 Og på samme måde, kan vi ekko nye linjer, alle den slags 596 00:32:50,700 --> 00:32:53,550 ting du er fortrolig gør i PHP. 597 00:32:53,550 --> 00:32:57,460 >> Nogen anden, hvad er mere spørgsmål, som andre mennesker har 598 00:32:57,460 --> 00:33:01,090 på dette punkt om PHP? 599 00:33:01,090 --> 00:33:04,620 Hvis folk dukkede op lidt sent, Jeg er glad for at bo efter en lille smule 600 00:33:04,620 --> 00:33:06,420 og tale om nogle af begyndelsen. 601 00:33:06,420 --> 00:33:10,380 Og det er også alle livestreamet, og arkiveres, hvilket er vanvittigt. 602 00:33:10,380 --> 00:33:13,960 >> Alligevel, så lad os nu gøre nogle mere avancerede ting med PHP. 603 00:33:13,960 --> 00:33:18,790 Og en af ​​de tidligste ting, du blev indført i C var efter sløjfer. 604 00:33:18,790 --> 00:33:24,060 Og PHP har en mere kraftfuld for loop kaldes foreach loop. 605 00:33:24,060 --> 00:33:37,940 Og det ser ud som denne-- for hver tomme som blanke, krøllede parenteser, skal du gøre noget. 606 00:33:37,940 --> 00:33:41,500 Så dette er dybest set en stenografi. 607 00:33:41,500 --> 00:33:45,380 >> Se, for-løkken som en syntaktiske konstruktion 608 00:33:45,380 --> 00:33:50,590 blev udtænkt i C og i montage sprog og tingene kan lide. 609 00:33:50,590 --> 00:33:56,300 Udarbejdet i C, netop som en forkortelse for en masse af de typer af loops 610 00:33:56,300 --> 00:33:57,750 at folk ville se. 611 00:33:57,750 --> 00:34:01,230 Ligesom når du skrev en løkke, der ofte var et initialiseringstrin 612 00:34:01,230 --> 00:34:04,700 henrettet lige i begyndelsen, en tilstand, hvor sløjfen ville stop-- 613 00:34:04,700 --> 00:34:07,030 og det er den funktion det er bare i en while-løkke, 614 00:34:07,030 --> 00:34:10,040 eller at et stykke har præcis bare, at feature-- og derefter 615 00:34:10,040 --> 00:34:12,320 en optælling skridt i slutningen. 616 00:34:12,320 --> 00:34:16,489 Og så ville du ofte finde dig selv skrive kode som følgende. 617 00:34:16,489 --> 00:34:19,780 Jeg har tænkt mig at slette noget af dette. 618 00:34:19,780 --> 00:34:23,850 >> Men hvis vi iteration gennem tegn i et array, 619 00:34:23,850 --> 00:34:26,960 for eksempel, som vi har fik en matrix af tegn. 620 00:34:26,960 --> 00:34:29,400 Ked af at bringe tilbage C. jeg kender, du troede du var færdig. 621 00:34:29,400 --> 00:34:31,900 Men det er kun med henblik at lære PHP, lover jeg. 622 00:34:31,900 --> 00:34:38,880 Så hvis du fik en char str længde 8, og lad os 623 00:34:38,880 --> 00:34:46,760 sige det siger Hellooo med et efterfølgende nul. 624 00:34:46,760 --> 00:34:48,270 Stor, så det er vores streng. 625 00:34:48,270 --> 00:34:51,469 >> Og så havde vi en for-løkke. 626 00:34:51,469 --> 00:34:53,730 Vi har int i er lig med 0. 627 00:34:53,730 --> 00:34:57,960 628 00:34:57,960 --> 00:35:09,110 Og vi ønsker at afslutte, når st af jeg svarer ikke lig med nul, 629 00:35:09,110 --> 00:35:11,590 fordi vi afslutter, når det er lig nul. 630 00:35:11,590 --> 00:35:19,170 Og så gør vi i ++ ved hvert punkt i for-løkken. 631 00:35:19,170 --> 00:35:30,480 At gøre noget med str af i. 632 00:35:30,480 --> 00:35:34,950 >> Så basisformuleringen var, vi havde denne matrix, som vi 633 00:35:34,950 --> 00:35:37,910 ønskede at behandle som separate elementer. 634 00:35:37,910 --> 00:35:45,170 Men hvad vi havde at gøre, er vi måtte dybest set oprette en separat heltal 635 00:35:45,170 --> 00:35:50,530 variabel, der blev tælle op hver gang vi gik gennem løkken. 636 00:35:50,530 --> 00:35:55,240 Og så ville vi nødt til derefter kalde strstr [i], når det, vi virkelig ønskede at gøre 637 00:35:55,240 --> 00:35:57,280 er bare gå karakter ved karakter, ikke? 638 00:35:57,280 --> 00:36:00,185 Vi ønsker ikke at forøge en heltal og derefter bruge det heltal 639 00:36:00,185 --> 00:36:02,780 at få adgang til hvert tegn individuelt. 640 00:36:02,780 --> 00:36:04,410 Vi virkelig ønsker tegn for tegn. 641 00:36:04,410 --> 00:36:08,600 >> Og så for hver intelligent beregnet, at for os. 642 00:36:08,600 --> 00:36:11,875 Hvis vi har et array, som Vi kan erklære i PHP 643 00:36:11,875 --> 00:36:15,900 som bare-- hvis vi har en variabel kaldes, lad os kalde det array. 644 00:36:15,900 --> 00:36:19,840 Mirakler ingen skrive, er det ligesom enhver anden variabel. 645 00:36:19,840 --> 00:36:20,730 Det er bare et array. 646 00:36:20,730 --> 00:36:26,890 Og vi har en lille [uhørligt] gerne 1, 2, 3, blot en slags initialiseret array. 647 00:36:26,890 --> 00:36:29,680 Det er OK, betyder det ikke lide min foreach. 648 00:36:29,680 --> 00:36:33,120 >> Men hvis vi foreach-- faktisk Jeg har skrevet, at en lidt forkert. 649 00:36:33,120 --> 00:36:34,840 Der er to måder at gøre en foreach løkke. 650 00:36:34,840 --> 00:36:37,400 Der er den i syntaks og som syntaks. 651 00:36:37,400 --> 00:36:40,580 Og vi vil gøre i syntaks første, ikke som. 652 00:36:40,580 --> 00:36:41,780 Det er min fejl. 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 råben på mig en eller anden grund. 656 00:36:59,500 --> 00:37:03,520 Det er at finde en uventet i i noget, 657 00:37:03,520 --> 00:37:05,820 som er en lille smule af en ærgrelser. 658 00:37:05,820 --> 00:37:09,105 Men vi vil finde ud af hvorfor der er i et øjeblik. 659 00:37:09,105 --> 00:37:11,960 660 00:37:11,960 --> 00:37:13,610 Så ikke lide det. 661 00:37:13,610 --> 00:37:15,040 Lad os prøve at bruge som. 662 00:37:15,040 --> 00:37:17,310 Den foretrækker den som syntaks er ser ud. 663 00:37:17,310 --> 00:37:22,550 Så lad os gøre foreach array som num. 664 00:37:22,550 --> 00:37:24,520 >> Så lidt forklaring af, hvad der lige er sket 665 00:37:24,520 --> 00:37:30,670 er da syntaksen er saying-- godt først, lad os se på, hvad det udskrives. 666 00:37:30,670 --> 00:37:32,260 Så vi åbner vores IDE. 667 00:37:32,260 --> 00:37:33,110 Vi går her. 668 00:37:33,110 --> 00:37:35,845 Vi siger, Hej Jason. 669 00:37:35,845 --> 00:37:41,390 Og det gjorde 123, som var indholdet af array, som vi skabte op øverst. 670 00:37:41,390 --> 00:37:45,500 >> Så dykning i denne foreach loop, vi har en variabel kaldet matrix 671 00:37:45,500 --> 00:37:47,470 som er en opstilling af tre tal. 672 00:37:47,470 --> 00:37:52,120 Og så gør vi foreach array som num, ekko num. 673 00:37:52,120 --> 00:37:54,990 Og det er mere intuitivt end en for lop. 674 00:37:54,990 --> 00:38:02,380 Vi siger, behandling hver af de ting i array som num, 675 00:38:02,380 --> 00:38:05,180 Jeg vil have dig til at give mig num. 676 00:38:05,180 --> 00:38:06,640 Og det er præcis, hvad det gør. 677 00:38:06,640 --> 00:38:12,000 >> PHP er at beregne, at når du siger foreach array, 678 00:38:12,000 --> 00:38:16,080 og du har at gøre med en vifte, hvad du vil ønsker at gentage over 679 00:38:16,080 --> 00:38:19,950 er tegnene i den matrix, er int'er i den opstilling, 680 00:38:19,950 --> 00:38:21,920 er elementerne i denne matrix. 681 00:38:21,920 --> 00:38:26,110 Og det er at lade dig gemme disse variabler som num, 682 00:38:26,110 --> 00:38:29,360 og så bare output num højre væk snarere end at sige, 683 00:38:29,360 --> 00:38:34,090 Jeg har en variabel kaldet i, og så jeg ønsker at output strstr [i]. 684 00:38:34,090 --> 00:38:39,130 >> Og så giver os mulighed for at gøre seje ting. 685 00:38:39,130 --> 00:38:43,330 Ligesom stort set har vi ikke at skabe disse variabler som i'er og gøre alt 686 00:38:43,330 --> 00:38:45,090 denne optælling ting i slutningen. 687 00:38:45,090 --> 00:38:48,290 PHP tager sig af alt dette for dig. 688 00:38:48,290 --> 00:38:54,470 >> Så lad os nu snakke om foreach som det gælder for vores _GET ordbog. 689 00:38:54,470 --> 00:38:57,170 Så vi vil kommentere dette ud hurtigt. 690 00:38:57,170 --> 00:39:02,030 Så vi har vores _GET array. 691 00:39:02,030 --> 00:39:04,361 Vi har denne variabel. 692 00:39:04,361 --> 00:39:05,610 Og det har fået nogle ting i det. 693 00:39:05,610 --> 00:39:10,275 >> Lige nu har vi kun én variabel gives videre til det, som er navnet. 694 00:39:10,275 --> 00:39:13,420 Men hvis vi på Enter, nu vi kan have to variabler. 695 00:39:13,420 --> 00:39:17,910 Vi kan have navn og alder, for eksempel, hvis vi ønsker at få alder og også 696 00:39:17,910 --> 00:39:20,960 navnet på en person, sjovt nok. 697 00:39:20,960 --> 00:39:25,690 >> Så nu _GET bliver en ordbog med to elementer, 698 00:39:25,690 --> 00:39:27,980 med to centrale værdipar. 699 00:39:27,980 --> 00:39:33,490 Og den første key-- jeg vil skrive denne ene op på brættet også. 700 00:39:33,490 --> 00:39:37,136 Vi har vores ordbog er _GET. 701 00:39:37,136 --> 00:39:39,520 Beklager, det er er lidt svært at se. 702 00:39:39,520 --> 00:39:46,690 Men inde i vores ordbog, vi har navn, som kommer til at være noget 703 00:39:46,690 --> 00:39:47,680 at vi er givet. 704 00:39:47,680 --> 00:39:53,040 Og vi vil have alder, som også er kommer til at være noget, som vi er givet. 705 00:39:53,040 --> 00:39:56,020 Og det er i sin helhed af vores ordbog. 706 00:39:56,020 --> 00:39:57,730 >> Så det har fået to elementer i det. 707 00:39:57,730 --> 00:40:01,310 Og så fordi foreach loops er smart, vi 708 00:40:01,310 --> 00:40:04,900 måske tror, ​​og korrekt tror måske, at foreach 709 00:40:04,900 --> 00:40:08,080 kan gentage gennem dette ordbog, udskrive 710 00:40:08,080 --> 00:40:10,850 værdierne ved navn og alder. 711 00:40:10,850 --> 00:40:14,510 >> Så lad os i virkeligheden gøre netop det. 712 00:40:14,510 --> 00:40:17,520 Lad os konstruere en foreach løkke. 713 00:40:17,520 --> 00:40:23,351 Og vi vil gøre for _GET som. 714 00:40:23,351 --> 00:40:24,850 Og vi vil gøre følgende. 715 00:40:24,850 --> 00:40:34,186 Så lad os se hvad der sker, hvis vi skriver bare ord, og derefter sige ekko ord. 716 00:40:34,186 --> 00:40:40,540 Vi er også kommer til at gentage en ny linje bare for at gøre det lidt klarere, 717 00:40:40,540 --> 00:40:41,260 hvad sker der. 718 00:40:41,260 --> 00:40:42,890 >> Så lad os se. 719 00:40:42,890 --> 00:40:44,390 Det er ikke at give mig nogen fejl. 720 00:40:44,390 --> 00:40:46,810 Og vi vil lukke denne. 721 00:40:46,810 --> 00:40:51,020 På vores hjemmeside, er du nødt til at gøre en masse, der i løbet af pset7. 722 00:40:51,020 --> 00:40:53,890 Så vi siger mit 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 det ikke. 725 00:41:01,060 --> 00:41:05,640 Men det udskriver, som forventet, Sam 45. 726 00:41:05,640 --> 00:41:08,930 >> Og så vil du bemærke, at hvad foreach loop did-- her, 727 00:41:08,930 --> 00:41:12,360 Lad os gå tilbage til at så det er op på board-- vi får _GET som ord. 728 00:41:12,360 --> 00:41:15,130 Og der var fire ting i _GET. 729 00:41:15,130 --> 00:41:17,410 Men det kun udskrives to ting. 730 00:41:17,410 --> 00:41:21,290 foreach, bliver dens intelligens selv, antages, at det, vi virkelig ønskede 731 00:41:21,290 --> 00:41:24,100 var de værdier, ikke de nøgler. 732 00:41:24,100 --> 00:41:27,800 >> Men der er en måde, at vi kunne printe ud tasterne så godt, hvis vi ønskede at. 733 00:41:27,800 --> 00:41:30,810 Hvis vi ønskede at også vide, hvad disse variabler blev kaldt, 734 00:41:30,810 --> 00:41:33,540 der er en måde, at vi kan få adgang til det så godt. 735 00:41:33,540 --> 00:41:36,840 Og den måde at slags gøre det, så vi kan sige, lader virkelig 736 00:41:36,840 --> 00:41:39,485 dele det op i centrale værdipar. 737 00:41:39,485 --> 00:41:42,370 738 00:41:42,370 --> 00:41:47,580 Så lad os se hvad der sker nu. 739 00:41:47,580 --> 00:41:50,550 >> Så vi har nøglen. 740 00:41:50,550 --> 00:41:52,290 Vi har værdi. 741 00:41:52,290 --> 00:41:56,650 Vi har en anden ny linje for læsbarheden. 742 00:41:56,650 --> 00:42:00,540 Og lad os se hvad der sker når vi gør det nu. 743 00:42:00,540 --> 00:42:04,950 744 00:42:04,950 --> 00:42:06,720 Jeg ved 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, alder 15. 747 00:42:11,650 --> 00:42:15,830 Så vi var i stand til at få adgang til nøglen og værdi par af denne ordbog 748 00:42:15,830 --> 00:42:18,590 lige ved at sige som centrale punkter at værdi. 749 00:42:18,590 --> 00:42:23,350 Og det er en foreach syntaktisk sukker bit, der tillader 750 00:42:23,350 --> 00:42:25,960 dig adgang tingene i ordbogen. 751 00:42:25,960 --> 00:42:31,190 >> Så forhåbentlig denne slags fremhæver kraften i foreach løkken. 752 00:42:31,190 --> 00:42:35,690 Du kan stort set kast noget, der synes Iterable, 753 00:42:35,690 --> 00:42:38,922 som noget, der har flere elementer som et array, 754 00:42:38,922 --> 00:42:41,880 som en dictionary-- de er to primære ting du skal arbejde 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 smide de ting på det, og det vil regne ud 757 00:42:49,350 --> 00:42:51,030 hvad du vil gøre med det. 758 00:42:51,030 --> 00:42:54,250 Det vil sige, OK, jeg har tænkt mig at få disse ting fra de data, 759 00:42:54,250 --> 00:42:55,680 blev passeret mig. 760 00:42:55,680 --> 00:43:02,470 Og det er noget, som du er kommer til at bruge en masse i pset 7. 761 00:43:02,470 --> 00:43:08,550 >> Jeg har tænkt mig at rulle hurtigt ned bare for at 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ørgsmål på dette punkt? 764 00:43:13,070 --> 00:43:13,778 Spørgsmål på alle? 765 00:43:13,778 --> 00:43:14,400 Ja? 766 00:43:14,400 --> 00:43:18,320 >> PUBLIKUM: Så med nøglen og værdi, man kunne kalde den noget andet 767 00:43:18,320 --> 00:43:20,507 og det ville stadig arbejde? 768 00:43:20,507 --> 00:43:21,090 SPEAKER: Ups. 769 00:43:21,090 --> 00:43:22,820 Wow, jeg er helt slettet hele linjen. 770 00:43:22,820 --> 00:43:23,380 Store arbejde. 771 00:43:23,380 --> 00:43:26,502 Så a, a. 772 00:43:26,502 --> 00:43:30,109 Nøgle og værdi er blot en konvention. 773 00:43:30,109 --> 00:43:30,650 Det er nyttigt. 774 00:43:30,650 --> 00:43:34,010 Du ville få nogle design point, måske nogle stil point 775 00:43:34,010 --> 00:43:36,970 for at gøre det, fordi det virkelig formidler hensigten. 776 00:43:36,970 --> 00:43:39,650 Men vi siger et og yarp. 777 00:43:39,650 --> 00:43:42,476 >> PUBLIKUM: Du behøver ikke at ændre noget i HTML-filen 778 00:43:42,476 --> 00:43:43,607 for at afspejle det? 779 00:43:43,607 --> 00:43:44,440 SPEAKER: Overhovedet ikke. 780 00:43:44,440 --> 00:43:47,260 PUBLIKUM: Og det bare ved, at på grund af den større lig than-- 781 00:43:47,260 --> 00:43:47,801 SPEAKER: Ja. 782 00:43:47,801 --> 00:43:49,489 PUBLIKUM: --that indikator for, 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: Der er ikke typer. 786 00:43:53,720 --> 00:43:57,230 Så hvad nu hvis du ønskede alder at kun være et nummer? 787 00:43:57,230 --> 00:43:59,510 Er der en måde at gøre det? 788 00:43:59,510 --> 00:44:04,550 >> SPEAKER: Der er måder at kontrollere, om variabler overholde visse typer. 789 00:44:04,550 --> 00:44:08,482 Så PHP spørger lidt mere fra dig, fordi der ikke er nogen typer i. 790 00:44:08,482 --> 00:44:09,440 Nogle måder den beder mindre. 791 00:44:09,440 --> 00:44:11,070 På nogle måder er det spørger mere. 792 00:44:11,070 --> 00:44:13,320 For hvis du har bare noget i en variabel, 793 00:44:13,320 --> 00:44:14,960 du har ingen idé om, hvad typen det er. 794 00:44:14,960 --> 00:44:19,310 Men hvis du er smart om de variabler at du tildeler typer til og sørg 795 00:44:19,310 --> 00:44:22,750 der fungerer kun return-- dig ønsker funktioner til kun afkast 796 00:44:22,750 --> 00:44:26,210 én type værdi, så at du kan stort set 797 00:44:26,210 --> 00:44:31,090 forventer, at den variabel, du får tilbage fra en funktion vil være af den type 798 00:44:31,090 --> 00:44:32,780 at du tror det vil være, dybest set. 799 00:44:32,780 --> 00:44:36,550 >> Men der er nogle metoder som du kan kontrollere. 800 00:44:36,550 --> 00:44:39,801 Jeg kan ikke huske dem fra toppen af ​​mit hoved. 801 00:44:39,801 --> 00:44:43,300 Jeg venter på at blive blå. 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 Der findes metoder indbygget i PHP, der kan 805 00:44:52,000 --> 00:44:54,440 kontrollere den type variabler for dig. 806 00:44:54,440 --> 00:44:58,250 Men hvis du tildeler variabler smart, bør du ikke 807 00:44:58,250 --> 00:45:01,330 nødt til at gøre det for meget i pset 7. 808 00:45:01,330 --> 00:45:02,780 Men disse metoder findes. 809 00:45:02,780 --> 00:45:06,704 Og det er noget, i selve sproget. 810 00:45:06,704 --> 00:45:08,370 Og jeg kan ikke huske den præcise syntaks. 811 00:45:08,370 --> 00:45:09,930 Vi kunne endda slå det op. 812 00:45:09,930 --> 00:45:11,974 Men tiden er af afgørende betydning. 813 00:45:11,974 --> 00:45:13,890 har der nogen andre har flere spørgsmå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 mere. 816 00:45:15,951 --> 00:45:19,050 Så du nævnte GET-metoden, men du nævnte ikke POST metoden. 817 00:45:19,050 --> 00:45:20,500 Er vi kommer tilbage til det? 818 00:45:20,500 --> 00:45:21,540 >> SPEAKER: Ja, vi vil komme tilbage til det. 819 00:45:21,540 --> 00:45:24,840 Det er præcis, hvad jeg ledte på min telefon, som nu faldt i søvn, 820 00:45:24,840 --> 00:45:26,960 men jeg vil finde det. 821 00:45:26,960 --> 00:45:30,680 Bare sikre, at vi ramt alle PHP noter. 822 00:45:30,680 --> 00:45:35,640 Jep, der er ingen debugging version. 823 00:45:35,640 --> 00:45:41,940 Ja, vi har nogle flere ting, vi ønsker at gøre nu på dette punkt. 824 00:45:41,940 --> 00:45:45,980 >> Så taler om POST, som De nævnte, 825 00:45:45,980 --> 00:45:49,630 den eneste forskel mellem GET og POST er 826 00:45:49,630 --> 00:45:53,150 at huske, når vi kiggede på denne webadresse, og vi så, åh, 827 00:45:53,150 --> 00:45:58,270 navn er lig med en og alder er lig yarp er lige i URL'en der for os. 828 00:45:58,270 --> 00:46:03,300 POST er lidt mere hemmelighedsfuld med sin bortgang af information. 829 00:46:03,300 --> 00:46:08,090 >> Så hvis du ikke ønsker en bruger at vide, for eksempel, du 830 00:46:08,090 --> 00:46:11,160 ønskede ikke brugernavnet og adgangskode på den person 831 00:46:11,160 --> 00:46:15,080 logget ind, der skal vises i URL, hvilket er en rimelig ting 832 00:46:15,080 --> 00:46:17,770 at der ikke ønsker i URL'en, fordi nogen kan se det. 833 00:46:17,770 --> 00:46:21,520 Hvis de forbinder nogen til en side, du ønsker ikke deres URL pudset der, 834 00:46:21,520 --> 00:46:27,850 fordi der ville tillade folk at logge ind bare med indsætning af en webadresse i stedet 835 00:46:27,850 --> 00:46:29,670 for faktisk at udfylde en formular. 836 00:46:29,670 --> 00:46:31,710 POST er en lille smule mere hemmelighedsfuld. 837 00:46:31,710 --> 00:46:34,150 >> Og de eneste ting, Vi bliver nødt til at ændre 838 00:46:34,150 --> 00:46:38,550 er denne metode, ændre fra komme til at skrive. 839 00:46:38,550 --> 00:46:42,367 Og derefter inde i HTTP, i stedet få adgang array _GET, 840 00:46:42,367 --> 00:46:43,950 vi kommer til at få adgang til array _POST. 841 00:46:43,950 --> 00:46:48,600 >> Og vi vil bemærke, at hvis vi åbner dette op igen, 842 00:46:48,600 --> 00:46:51,910 Jason langsomt aftager 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 ting popper op. 845 00:46:54,280 --> 00:46:57,190 Men vi går til webadressen og disse variabler ikke er der. 846 00:46:57,190 --> 00:47:00,540 >> Og den måde, at POST passes-- så husk 847 00:47:00,540 --> 00:47:02,750 hvordan man ser på kilden til en side. 848 00:47:02,750 --> 00:47:04,570 Vi går til netværket. 849 00:47:04,570 --> 00:47:06,920 Vi opdaterer. 850 00:47:06,920 --> 00:47:10,690 Og det er en anden ting, der POST vil give dig advarsler om. 851 00:47:10,690 --> 00:47:15,050 Du har måske set en boks, en tekst kasse som denne i din browser. 852 00:47:15,050 --> 00:47:18,170 Er du sikker på du vil at sende en formular igen? 853 00:47:18,170 --> 00:47:21,170 POST er hvad der sender disse former. 854 00:47:21,170 --> 00:47:24,680 >> Fordi dybest set, hvis du har sendt din kreditkortoplysninger til nogen, 855 00:47:24,680 --> 00:47:26,350 der kommer ikke til at dukke op i webadressen. 856 00:47:26,350 --> 00:47:28,180 Det kommer til at være en POST anmodning. 857 00:47:28,180 --> 00:47:32,905 Så når du opdaterer siden, det er gensende stillingen anmodning. 858 00:47:32,905 --> 00:47:35,530 Så nu er vi ønsker at sende danner igen, fordi det ikke kommer 859 00:47:35,530 --> 00:47:37,340 at skabe eventuelle identiske køb. 860 00:47:37,340 --> 00:47:41,160 >> Og vi vil opdage, at hernede, den metode, vi bruger, er POST. 861 00:47:41,160 --> 00:47:43,065 Og det har faktisk overføre byte. 862 00:47:43,065 --> 00:47:45,460 Det overførte 401 af dem. 863 00:47:45,460 --> 00:47:47,190 Programmets temmelig lille. 864 00:47:47,190 --> 00:47:51,600 Men der er ingen steder, at vi kan se de værdier, der bliver passeret. 865 00:47:51,600 --> 00:47:59,540 Websiderne selv kan se, men vi som brugere ikke er i stand til at se, 866 00:47:59,540 --> 00:48:01,650 medmindre 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 kender det grundlæggende formatet af HTML, 869 00:48:09,360 --> 00:48:11,790 værdierne vil gøre sig til kende i siderne. 870 00:48:11,790 --> 00:48:13,160 Du vil være i stand til at se. 871 00:48:13,160 --> 00:48:16,720 Værdierne vil være der, de er bare lidt mindre indlysende for dig 872 00:48:16,720 --> 00:48:19,522 til adgang, dybest set. 873 00:48:19,522 --> 00:48:23,620 >> Har vi noget mere spørgsmål om GET, POST 874 00:48:23,620 --> 00:48:26,800 before-- hvad vi vil gøre næste er faktisk se på nogle af koden 875 00:48:26,800 --> 00:48:30,837 at du giver i pset 7, tale om hvordan det bruger nogle af disse begreber, 876 00:48:30,837 --> 00:48:32,670 og taler om ting, som du vil 877 00:48:32,670 --> 00:48:35,090 nødt til at gøre en lille smule i pset 7. 878 00:48:35,090 --> 00:48:36,760 Flere spørgsmål før det? 879 00:48:36,760 --> 00:48:38,047 Flere spørgsmål du fyre har? 880 00:48:38,047 --> 00:48:41,250 881 00:48:41,250 --> 00:48:41,840 Stor. 882 00:48:41,840 --> 00:48:45,370 >> Okay, lad os se lidt ad pset 7, 883 00:48:45,370 --> 00:48:49,530 ingen tvivl om, hvad du er alle mest begejstrede. 884 00:48:49,530 --> 00:48:52,126 885 00:48:52,126 --> 00:48:54,750 Jeg mener, det er noget, David går gennem en lille smule. 886 00:48:54,750 --> 00:49:00,890 Men vi vil have tre mapper på top, samt en konfigurationsfil. 887 00:49:00,890 --> 00:49:04,650 Det er for databaser, som vi får tale om i cirka fem minutter. 888 00:49:04,650 --> 00:49:07,220 Inkluderer, du aldrig behøver at kigge i denne mappe 889 00:49:07,220 --> 00:49:12,480 Hvis du ikke ønsker at, men det er rart at ved, at der er alle mulige hjælpere. 890 00:49:12,480 --> 00:49:14,210 Hjælpere er som nyttige funktioner. 891 00:49:14,210 --> 00:49:18,120 Og så har vi config, der sætter nogle ting op. 892 00:49:18,120 --> 00:49:24,590 >> Der er nogle funktioner, som CS50 har skrevet som er i hjælper- og config. 893 00:49:24,590 --> 00:49:27,250 Og nogle af PHP, der allerede udgange i filer 894 00:49:27,250 --> 00:49:30,880 vil gøre en masse af de mere slags af stumpe ben arbejde for dig. 895 00:49:30,880 --> 00:49:35,250 Ligesom hvis vi går ind i den offentlige login.php, hvilket er, hvad 896 00:49:35,250 --> 00:49:38,350 dukker op til højre, når du går ind i pset 7. 897 00:49:38,350 --> 00:49:40,580 Vi vil se, at der er dette kræve erklæring. 898 00:49:40,580 --> 00:49:43,420 Og den slags ligesom en skarpe indbefatter hashtag 899 00:49:43,420 --> 00:49:46,850 omfatter, hvis du er af en nyere generation. 900 00:49:46,850 --> 00:49:49,740 Men det grundlæggende siger, at jeg har brug for adgang 901 00:49:49,740 --> 00:49:52,260 til alle funktioner i config.php. 902 00:49:52,260 --> 00:49:55,290 Og du kunne have en kræver for alle mulige andre ting. 903 00:49:55,290 --> 00:49:59,670 >> config faktisk kræver hjælpere. 904 00:49:59,670 --> 00:50:02,490 Så når du har brug for config, er du også 905 00:50:02,490 --> 00:50:05,660 herunder eller kræver hjælpere så godt. 906 00:50:05,660 --> 00:50:09,590 Så det giver dig adgang til alle de seje funktioner, som vi kommer til at bruge, 907 00:50:09,590 --> 00:50:10,420 tingene gerne gøre. 908 00:50:10,420 --> 00:50:13,490 Jeg er faktisk kommer til at lette dette ned en lille smule. 909 00:50:13,490 --> 00:50:16,280 Så den funktion så er vi kommer til at gå gennem 910 00:50:16,280 --> 00:50:22,380 lige før vi går videre til SQL lidt bit er login.php funktion, lige 911 00:50:22,380 --> 00:50:26,586 fordi den bruger nogle af de emner at vi bare talt om i PHP. 912 00:50:26,586 --> 00:50:30,840 >> Du ser den første ting er, hvis $ _SERVER. 913 00:50:30,840 --> 00:50:34,500 Dette er en anden global variabel, der du kommer til at beskæftige sig med. 914 00:50:34,500 --> 00:50:38,460 Det er ligesom _GET og _POST, men hvad serveren indeholder dette kan lade dig 915 00:50:38,460 --> 00:50:42,730 vide, om anmodningen metoden var en GET eller POST. 916 00:50:42,730 --> 00:50:47,250 Ligesom tidligere, hvad vi gjorde er lige i vores kode, skrev vi, 917 00:50:47,250 --> 00:50:51,880 vi var bare ændre det til at være GET og POST afhængigt af, hvad HTML har. 918 00:50:51,880 --> 00:50:55,120 Men der er sider, der kan være tilgås med begge typer af anmodninger. 919 00:50:55,120 --> 00:50:57,410 Og du måske ønsker at gøre forskellige ting, afhængigt 920 00:50:57,410 --> 00:50:59,740 af typen af ​​anmodning ligesom login gør. 921 00:50:59,740 --> 00:51:04,400 >> Så du kan kontrollere, at anmodningen Fremgangsmåde ved adgang nøgler, 922 00:51:04,400 --> 00:51:08,630 ved at bruge en nøgle og få den værdien af ​​noget i ordbogen 923 00:51:08,630 --> 00:51:10,260 _SERVER. 924 00:51:10,260 --> 00:51:13,800 Så det er en anden global variabel ligesom _GET og _POST. 925 00:51:13,800 --> 00:51:16,990 >> Hvis det er GET, vi ønsker at gøre login-formularen. 926 00:51:16,990 --> 00:51:21,920 Render er en funktion, der dybest set bare sætter op den passende HTML 927 00:51:21,920 --> 00:51:24,500 og sender det nogle parametre. 928 00:51:24,500 --> 00:51:28,740 Denne titel er et parameter, der er bruges i visning, mærkeligt nok, 929 00:51:28,740 --> 00:51:32,670 titlen på siden i spørgsmål, de ting heroppe, 930 00:51:32,670 --> 00:51:34,850 sige eller hej i vores tidligere eksempel. 931 00:51:34,850 --> 00:51:36,100 Nu har vi en anden ting. 932 00:51:36,100 --> 00:51:38,570 Andet, hvis det er POST, vi gøre nogle andre ting. 933 00:51:38,570 --> 00:51:40,790 Vi bruger den tomme metode. 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 rimelig mængde af indbyggede 936 00:51:45,440 --> 00:51:52,370 i metoder, som David will-- hvis der er metoder, der er nyttige for dig, 937 00:51:52,370 --> 00:51:55,560 de vil blive advaret om dig i gåtur gennem at David 938 00:51:55,560 --> 00:51:59,770 giver i begyndelsen oversigt, og også Zamyla s nyttige bits. 939 00:51:59,770 --> 00:52:01,040 Hun er tilbage alle. 940 00:52:01,040 --> 00:52:03,100 Vi kan alle glæde os. 941 00:52:03,100 --> 00:52:06,530 undskylde er en rammende navngivne funktion der bare dybest set udskriver 942 00:52:06,530 --> 00:52:10,130 nogle fejlmeddelelser, fordi CS50 er meget høflig. 943 00:52:10,130 --> 00:52:14,770 >> Og nu dette, er dette en tricky bit fordi dette 944 00:52:14,770 --> 00:52:16,697 er, hvor vi forespørge databasen. 945 00:52:16,697 --> 00:52:18,280 Nu har vi ikke talt om databaser. 946 00:52:18,280 --> 00:52:22,220 Og vi vil i den næste fem minutter eller deromkring, maksimum. 947 00:52:22,220 --> 00:52:24,980 Men dette er en funktion at CS50 har skrevet 948 00:52:24,980 --> 00:52:38,050 at få et bord dybest set fra en database at vi arbejder med i pset 7. 949 00:52:38,050 --> 00:52:40,860 Jeg er virkelig dårlig med min nul indeksering dag. 950 00:52:40,860 --> 00:52:42,060 Men ja, det er 7. 951 00:52:42,060 --> 00:52:46,340 >> Så forespørge det kommer til at returnere en array, dybest set er nøglekammens. 952 00:52:46,340 --> 00:52:54,130 Og fordi disse ting ikke har skrive, så rækker er en vifte af arrays. 953 00:52:54,130 --> 00:52:59,480 For når vi tænker på et bord, hvad vi vil gøre 954 00:52:59,480 --> 00:53:04,830 er, som du har lært i psets ligesom omgang 15, alligevel 955 00:53:04,830 --> 00:53:06,990 hvor du var nødt til at bruge en dobbelt array, vi dybest set 956 00:53:06,990 --> 00:53:15,210 har række andre arrays gør en tabel. 957 00:53:15,210 --> 00:53:18,150 Og du har fået rækker og kolonner. 958 00:53:18,150 --> 00:53:24,450 Og så kan du få adgang til dem som [0] [1], får du [0] [1]. 959 00:53:24,450 --> 00:53:26,900 Grundlæggende slags. 960 00:53:26,900 --> 00:53:29,380 >> Så hvad vi laver her i denne funktion, 961 00:53:29,380 --> 00:53:35,070 Vi beder databasen hvis brugeren, der er 962 00:53:35,070 --> 00:53:40,200 forsøger at logge ind, vil det være sendes gennem POST metoden. 963 00:53:40,200 --> 00:53:43,950 Vi vil se vi får brugernavnet fra _POST. 964 00:53:43,950 --> 00:53:46,900 De vil have sendt, brugeren eller du vil sende en værdi 965 00:53:46,900 --> 00:53:50,750 gennem en form gennem POST, fordi det er brugernavn og adgangskode kram. 966 00:53:50,750 --> 00:53:54,830 Vi kontrollere brugernavn at se, er det i tabellen? 967 00:53:54,830 --> 00:53:58,070 For hvis en bruger logger i, så deres brugernavn 968 00:53:58,070 --> 00:54:03,320 skal opbevares i tabellen brugere, der eksisterer for dette websted. 969 00:54:03,320 --> 00:54:09,360 Så dybest set, hvis Brugeren er i databasen, 970 00:54:09,360 --> 00:54:16,400 forespørgsel vil vende tilbage denne række, hvilket er et array. 971 00:54:16,400 --> 00:54:24,560 >> Men den vanskelige del er, at hvis selv om den dobbelte array er kun én række, 972 00:54:24,560 --> 00:54:31,900 selvom det er en én række array-- ligesom du har fået basically-- 973 00:54:31,900 --> 00:54:36,900 hvis du har fået en størrelse ét array der er i besiddelse af en anden matrix, 974 00:54:36,900 --> 00:54:38,940 du virkelig gøre med en kolonne. 975 00:54:38,940 --> 00:54:41,420 Men det er stadig behandles som en dobbelt array. 976 00:54:41,420 --> 00:54:44,560 >> Og det er her, det nogle gange kan få tricky, fordi vi har fået rækker her. 977 00:54:44,560 --> 00:54:46,440 Vores variabel er rækker. 978 00:54:46,440 --> 00:54:48,590 Og så er vi skaber en ny variabel kaldet rækken 979 00:54:48,590 --> 00:54:51,450 og sætte den lig med den første række af rækker. 980 00:54:51,450 --> 00:54:55,150 Og du vil opdage, at kommentar siger, at det er den første og eneste række. 981 00:54:55,150 --> 00:54:57,080 >> Så dette er den tricky del, hvor nu funktioner 982 00:54:57,080 --> 00:54:59,660 kan returnere arrays meget let. 983 00:54:59,660 --> 00:55:01,270 Der er ikke malloc'erers. 984 00:55:01,270 --> 00:55:02,280 Du vil ikke se malloc'erers. 985 00:55:02,280 --> 00:55:03,940 Så vil du ikke se SEG-fejl. 986 00:55:03,940 --> 00:55:08,380 Men funktioner vil stadig være passerer omkring arrays og data i grupper. 987 00:55:08,380 --> 00:55:12,250 Og du skal være på vagt over for, hvad netop dine funktioner vil vende tilbage. 988 00:55:12,250 --> 00:55:15,160 Og selv om det er en kolonne som dette, forespørge 989 00:55:15,160 --> 00:55:17,520 er stadig i gang for at returnere en dobbelt array. 990 00:55:17,520 --> 00:55:21,390 Så for at få adgang, der column-- eller du kan tænke på alt dette, som omvendt 991 00:55:21,390 --> 00:55:22,870 da vi taler om rækker. 992 00:55:22,870 --> 00:55:26,810 Men for at få adgang til denne ene række, du kan ikke bare sige rækker. 993 00:55:26,810 --> 00:55:31,540 Selvom det er en række, er du nødt til gør rowsrows [0] for at slags fjerne denne 994 00:55:31,540 --> 00:55:37,360 ydre bit i array og har blot din én række. 995 00:55:37,360 --> 00:55:38,342 >> Har nogle andre ting. 996 00:55:38,342 --> 00:55:40,050 Der er en funktion kaldet password_verify 997 00:55:40,050 --> 00:55:42,980 der kontrollerer adgangskode, der blev lagt ud. 998 00:55:42,980 --> 00:55:48,500 Og så må vi se en anden global variabel her, _SESSION. 999 00:55:48,500 --> 00:55:51,340 Dybest set session id er, hvordan du holder styr 1000 00:55:51,340 --> 00:55:53,990 af hvis nogen er logget ind eller ej. 1001 00:55:53,990 --> 00:55:58,590 Så lige nu med login.php, vi logger en bruger på. 1002 00:55:58,590 --> 00:56:01,920 Så hvad vi ønsker at gøre, er, vi ønsker at sige sessionen id er lig med rækken 1003 00:56:01,920 --> 00:56:05,890 id, som netop giver mening, fordi hver række vil have en anden id 1004 00:56:05,890 --> 00:56:07,239 nummer som del af tabellen. 1005 00:56:07,239 --> 00:56:09,280 Vi vil komme ind i SQL i en sekund, så hvis nogen af ​​denne 1006 00:56:09,280 --> 00:56:13,500 virker lidt ligesom bla, så alt vil blive ryddet op. 1007 00:56:13,500 --> 00:56:18,450 Men vi kommer til at indstille id lig med den rigtige ting, logge brugeren i. 1008 00:56:18,450 --> 00:56:20,530 Beklager, hvis noget går galt. 1009 00:56:20,530 --> 00:56:27,600 Og det er logins formål i liv som professor Malan ville sige. 1010 00:56:27,600 --> 00:56:29,130 >> Så det var login.php. 1011 00:56:29,130 --> 00:56:33,750 Og en masse af PHP kode du skriver i pset 7, vil de være en lille smule. 1012 00:56:33,750 --> 00:56:36,470 Glem ikke at chmod til de rette tilladelser. 1013 00:56:36,470 --> 00:56:40,180 Der vil være en lille smule om at i begyndelsen af ​​spec. 1014 00:56:40,180 --> 00:56:46,382 >> Men PHP, at du er skriftligt vil være 1015 00:56:46,382 --> 00:56:47,840 gør ting, der ligner dette. 1016 00:56:47,840 --> 00:56:49,715 Du kommer til at være adgang nogle ting, 1017 00:56:49,715 --> 00:56:52,760 er givet til dig i globale variabler af PHP, der 1018 00:56:52,760 --> 00:56:56,105 har at gøre med den aktuelle indloggede bruger, om der 1019 00:56:56,105 --> 00:57:00,460 har været forespørgsler sendes til denne side, forskellige ting som. 1020 00:57:00,460 --> 00:57:05,790 Og det vil også være potentielt iteration gennem rækker af denne ting. 1021 00:57:05,790 --> 00:57:09,010 >> I en anden funktion, forespørgsel vender tilbage denne dobbelte array. 1022 00:57:09,010 --> 00:57:11,450 Og hvis der er mere end en rækker i det, 1023 00:57:11,450 --> 00:57:15,080 hvis der are-- ja, hvis der er mere end en rækker i det, 1024 00:57:15,080 --> 00:57:16,870 så vil det være en tabel. 1025 00:57:16,870 --> 00:57:20,500 Og du måske ønsker at gentage gennem rækkerne af dette array ved hjælp af 1026 00:57:20,500 --> 00:57:22,860 den foreach loop, som vi beskrev. 1027 00:57:22,860 --> 00:57:30,270 >> Så hvis du gør foreach på en dobbelt array, hvad vil word-- her, 1028 00:57:30,270 --> 00:57:31,909 Jeg vil faktisk skrive det. 1029 00:57:31,909 --> 00:57:32,950 Jeg skriver det hurtigt her. 1030 00:57:32,950 --> 00:57:44,280 >> Hvis vi har en foreach rækker som række, hvad der er den type af rækken? 1031 00:57:44,280 --> 00:57:45,390 Er der nogen vide? 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å rækker er en dobbelt array. 1035 00:57:57,110 --> 00:58:02,810 Så hvad der foreach kommer til at udlede at vi ønsker fra denne dobbelte matrix 1036 00:58:02,810 --> 00:58:04,280 hvis vi iteration over det? 1037 00:58:04,280 --> 00:58:07,170 1038 00:58:07,170 --> 00:58:10,770 Vi kan antage, at stort set det vil være enten elementer, 1039 00:58:10,770 --> 00:58:14,970 eller rækker eller kolonner, dybest set. 1040 00:58:14,970 --> 00:58:18,740 Og så rækker og kolonner vi kan behandle som det samme. 1041 00:58:18,740 --> 00:58:23,880 >> Dybest set hvad foreach loop går at gøre, er det kommer til at vende tilbage rækker. 1042 00:58:23,880 --> 00:58:28,500 rækken vil være af typen rækken, henviser rækker er en dobbelt array. 1043 00:58:28,500 --> 00:58:32,290 Så hvis du giver foreach en dobbelt array, er det 1044 00:58:32,290 --> 00:58:35,830 ikke kommer til at gentage mere end et niveau dyb. 1045 00:58:35,830 --> 00:58:44,464 Som er dybest set at sige, om der er otte celler i dette table-- 1,2, 1046 00:58:44,464 --> 00:58:48,110 3 4, 5, 6, 7, 8-- den foreach loop er ikke 1047 00:58:48,110 --> 00:58:51,880 vil gå gennem hver af disse celler. 1048 00:58:51,880 --> 00:58:56,390 Hvad foreach loop vil gøre blev det vil gå igennem denne række, 1049 00:58:56,390 --> 00:58:57,870 give dig hele denne række. 1050 00:58:57,870 --> 00:58:59,410 Og så er det vil gå gennem denne række. 1051 00:58:59,410 --> 00:59:01,850 >> Så det kun gentager ét niveau dyb. 1052 00:59:01,850 --> 00:59:05,310 Hvis du tilføjer en indlejret foreach loop, så er du 1053 00:59:05,310 --> 00:59:16,280 kan behandle hver række tilbage fra rækker, du gør foreach række som element, 1054 00:59:16,280 --> 00:59:17,640 Lad os sige. 1055 00:59:17,640 --> 00:59:22,750 Og så kunne du gentage elementet. 1056 00:59:22,750 --> 00:59:24,930 Så det er en kort lille genopfriskningskursus om, hvordan 1057 00:59:24,930 --> 00:59:30,220 du bruger måske foreach sløjfer i forbindelse med forespørgslen. 1058 00:59:30,220 --> 00:59:32,840 >> Er der nogen spørgsmål om PHP? 1059 00:59:32,840 --> 00:59:36,520 Noget overhovedet, før vi gå videre til at tale om SQL 1060 00:59:36,520 --> 00:59:37,820 og det sjove af databasen? 1061 00:59:37,820 --> 00:59:41,480 1062 00:59:41,480 --> 00:59:42,110 Føle sig godt tilpas? 1063 00:59:42,110 --> 00:59:42,750 Føle sig godt tilpas. 1064 00:59:42,750 --> 00:59:43,470 Okay. 1065 00:59:43,470 --> 00:59:49,130 >> Lad os gå videre tilbage til PowerPoint, som du sandsynligvis gå glip af. 1066 00:59:49,130 --> 00:59:51,800 SQL, yay. 1067 00:59:51,800 --> 00:59:57,900 Mennesker, der er i min sektion typisk vil vide, at underpositioner i akronymer 1068 00:59:57,900 --> 01:00:01,220 er altid kun de første ord Jeg tænker på den kamp, ​​der 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 sprog, arbejder med databaser. 1073 01:00:11,060 --> 01:00:14,440 Og alle databaser er, er borde, i hvert fald i den måde, 1074 01:00:14,440 --> 01:00:17,220 at SQL repræsenterer dem. 1075 01:00:17,220 --> 01:00:23,610 >> En anden måde at tænke på databaser er databaser er et sæt nøgler og værdier 1076 01:00:23,610 --> 01:00:24,110 dybest set. 1077 01:00:24,110 --> 01:00:29,530 Du kan tænke på en database, som en ordbog og også som en tabel. 1078 01:00:29,530 --> 01:00:34,300 Dybest set er det en måde at knytte forskellige data med andre data, 1079 01:00:34,300 --> 01:00:36,270 ofte gennem rækker og kolonner. 1080 01:00:36,270 --> 01:00:38,470 Og det er den måde det er SQL fungerer bedst. 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 min sektion, der 1083 01:00:44,610 --> 01:00:45,970 Jeg havde ikke tid til at skifte. 1084 01:00:45,970 --> 01:00:52,020 Men vi har fået ting som ID, navn, supermagt, og hjemby. 1085 01:00:52,020 --> 01:00:54,100 Jeg ved ikke, hvor alle er fra i min afdeling, 1086 01:00:54,100 --> 01:00:56,266 så jeg bare kommer til at antage alle er fra New York 1087 01:00:56,266 --> 01:00:59,370 Byen, fordi jeg har en høj statistisk sandsynlighed for at være korrekte. 1088 01:00:59,370 --> 01:01:04,200 >> SQL vil automatisk tage pleje af ID-kolonnen for dig. 1089 01:01:04,200 --> 01:01:07,560 Hvis du indsætter en ny række ind i en SQL-database, 1090 01:01:07,560 --> 01:01:09,700 det vil forøge at ID-nummer og bare 1091 01:01:09,700 --> 01:01:14,890 dybest set holde sig ligesom fem navne, supermagt, hjemby, hvem 1092 01:01:14,890 --> 01:01:16,430 på enden af ​​tabellen. 1093 01:01:16,430 --> 01:01:19,160 Så ID er en kolonne, du vil aldrig behøver at bekymre sig om. 1094 01:01:19,160 --> 01:01:22,770 Men, som det er tilfældet af login.php, når vi 1095 01:01:22,770 --> 01:01:26,610 var at få session id fra en tabel og bare bruge id, 1096 01:01:26,610 --> 01:01:30,320 ID er en måde til entydigt at identificere et element i en database. 1097 01:01:30,320 --> 01:01:34,980 >> Så hvis vi havde to Sams, som begge som underviste CS50, og begge af hvem 1098 01:01:34,980 --> 01:01:39,370 var fra Milwaukee, der ville stadig har forskellige ID-numre 1099 01:01:39,370 --> 01:01:43,420 og således være forskellige i forbindelse med bordet. 1100 01:01:43,420 --> 01:01:48,700 Så dette er hvad SQL beskæftiger sig med, at arbejde med i bagenden. 1101 01:01:48,700 --> 01:01:54,160 >> Nu er disse fire kommandoer at du bliver nødt til at arbejde med SQL. 1102 01:01:54,160 --> 01:01:56,390 Og jeg kastede dem alle op på et dias. 1103 01:01:56,390 --> 01:01:59,530 Men vi kommer til at gå gennem dem alle individuelt. 1104 01:01:59,530 --> 01:02:03,300 >> Den første kommando er UPDATE, der gør hvad man kunne forvente. 1105 01:02:03,300 --> 01:02:07,240 Sig du har nogle data i den tabel, der er forældet. 1106 01:02:07,240 --> 01:02:09,470 Ligesom hvis du holder styr på folks navne 1107 01:02:09,470 --> 01:02:13,350 og aldre, hvis nogen er alder stiger, så 1108 01:02:13,350 --> 01:02:18,590 du vil ønsker at gå ind og opdatere bare, at personens alder. 1109 01:02:18,590 --> 01:02:21,902 For et eksempel, der virker med vores første table-- 1110 01:02:21,902 --> 01:02:24,610 du ikke bekymre dig om at skrive alle disse kommandoer på samme tid. 1111 01:02:24,610 --> 01:02:27,640 Men hvis du har fået opdatering ned, der vil være godt for denne del, 1112 01:02:27,640 --> 01:02:29,790 fordi vi kommer til at gå tilbage til bordet. 1113 01:02:29,790 --> 01:02:33,920 >> Så hvis vi går tilbage til bordet, lad os sige noget, der skete 1114 01:02:33,920 --> 01:02:38,480 var der var et jordskælv eller en fejl linje, split direkte 1115 01:02:38,480 --> 01:02:39,920 gennem New York. 1116 01:02:39,920 --> 01:02:45,130 Og vi ønskede at opdatere alle der boede i New York City. 1117 01:02:45,130 --> 01:02:49,670 De havde alle til at 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 havde alle til at flytte til New Haven. 1120 01:02:53,180 --> 01:02:54,030 Der vi går. 1121 01:02:54,030 --> 01:02:57,630 Så alle i New York flytter til New Haven. 1122 01:02:57,630 --> 01:03:01,300 >> Og så det er noget, der er redigering tre rækker i tabellen. 1123 01:03:01,300 --> 01:03:04,716 Men i SQL, kan du gøre at i bare én sætning. 1124 01:03:04,716 --> 01:03:05,715 Så vi går tilbage til at opdatere. 1125 01:03:05,715 --> 01:03:09,670 Lad mig hurtigt slette dette board igen. 1126 01:03:09,670 --> 01:03:14,570 Når vi taler om ajourføring, der er 1127 01:03:14,570 --> 01:03:17,640 et par dele af syntaks, der er nøglen. 1128 01:03:17,640 --> 01:03:19,770 Nå, alle af syntaksen er nøglen. 1129 01:03:19,770 --> 01:03:22,210 Men de ting i grøn er valgfrit. 1130 01:03:22,210 --> 01:03:25,680 Den hvide er nødvendige, lignende foruddefinerede navne. 1131 01:03:25,680 --> 01:03:30,750 Og lyseblå er ting der varierer afhængigt af bordet. 1132 01:03:30,750 --> 01:03:34,640 Så det er, hvad der sker med farveskema her, deroppe. 1133 01:03:34,640 --> 01:03:40,250 >> Så hvis vi ønsker at opdatere netop disse rækker af de mennesker, der bor i New York, 1134 01:03:40,250 --> 01:03:43,490 så hvad vi ville gøre, hvis vi sagde UPDATE? 1135 01:03:43,490 --> 01:03:46,320 Så bordet er, hvor vi sætter navnet på vores tabel. 1136 01:03:46,320 --> 01:03:49,170 Lad os bare sige navnet af vores bord er tabel én. 1137 01:03:49,170 --> 01:03:52,515 Så vi ønsker at opdatere tabel én. 1138 01:03:52,515 --> 01:03:57,470 Og vi ønsker at set-- hvad ønsker vi at sætte? 1139 01:03:57,470 --> 01:04:05,160 Nå vi ønsker at sige, så column-- PHP behandler rækker som entydige identifikatorer. 1140 01:04:05,160 --> 01:04:07,930 Og så søjler er de forskellige felter 1141 01:04:07,930 --> 01:04:09,940 af de elementer i databasen. 1142 01:04:09,940 --> 01:04:14,210 >> Så det første element af databasen har et navn Sam, supermagt af 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 sættet, lad os se på de parametre, igen, at sættet tager. 1145 01:04:20,710 --> 01:04:23,880 Vi har kolonne lig værdi. 1146 01:04:23,880 --> 01:04:27,290 Så vi ønsker at sige noget column-- der husker 1147 01:04:27,290 --> 01:04:31,850 er en field-- vi ønsker at se en felt lig med noget nyt. 1148 01:04:31,850 --> 01:04:42,340 >> Så hvis vi lige sagt opdatering tabel 1, sæt navn lige Elliot. 1149 01:04:42,340 --> 01:04:46,310 Få nogle folk fra nyt afsnit ind på dette. 1150 01:04:46,310 --> 01:04:51,540 Men hvis vi lige gjorde opdatering tabel 1 sæt navn lige Elliot, hvad ville 1151 01:04:51,540 --> 01:04:55,530 bordet ligne efter det? 1152 01:04:55,530 --> 01:04:56,410 Folk har nogen idé? 1153 01:04:56,410 --> 01:04:59,710 1154 01:04:59,710 --> 01:05:00,210 Ja. 1155 01:05:00,210 --> 01:05:03,195 >> PUBLIKUM: Alt på at rækken ville blive Elliot. 1156 01:05:03,195 --> 01:05:04,570 SPEAKER: Alt på hvilken række? 1157 01:05:04,570 --> 01:05:06,067 PUBLIKUM: I den første række. 1158 01:05:06,067 --> 01:05:07,150 SPEAKER: I den første række? 1159 01:05:07,150 --> 01:05:09,724 Hvorfor den første række? 1160 01:05:09,724 --> 01:05:10,890 Jeg mener ikke at samle på dig. 1161 01:05:10,890 --> 01:05:13,287 >> PUBLIKUM: Måske alt i hele tabellen? 1162 01:05:13,287 --> 01:05:15,120 SPEAKER: Alt på hele bordet, ja. 1163 01:05:15,120 --> 01:05:19,520 Og det er helt rigtigt because-- I var bare at hjælpe dig ud en lille smule 1164 01:05:19,520 --> 01:05:22,650 there-- fordi vi udeladt den valgfrie WHERE. 1165 01:05:22,650 --> 01:05:27,260 Hvis du ikke har WHERE klausul, hvad denne kommando vil gøre 1166 01:05:27,260 --> 01:05:32,240 det vil arbejde med hvert enkelt række i tabellen. 1167 01:05:32,240 --> 01:05:35,430 Alles navn vil bliver Elliott, dybest set, 1168 01:05:35,430 --> 01:05:37,360 som Elliot er meget glad for. 1169 01:05:37,360 --> 01:05:40,070 Eller Yanni, en af ​​de to. 1170 01:05:40,070 --> 01:05:42,490 Men alles navn vil ændre sig. 1171 01:05:42,490 --> 01:05:47,880 >> Så den måde, vi bruger WHERE clause-- og det gælder alle de wheres 1172 01:05:47,880 --> 01:05:51,410 der er i hver af disse forskellige ting. 1173 01:05:51,410 --> 01:05:54,380 Så du vil opdage, at SET har kolonne samme værdi. 1174 01:05:54,380 --> 01:05:55,190 Og det gør HVOR. 1175 01:05:55,190 --> 01:06:00,040 Men disse er forskellige typer af udsagn. 1176 01:06:00,040 --> 01:06:04,400 Så kolonnen lig værdi i SET er i opgaven. 1177 01:06:04,400 --> 01:06:08,320 Ligesom vi siger, vi ønsker at sætte navn lig Elliot. 1178 01:06:08,320 --> 01:06:15,390 Men i WHERE klausuler, disse er ligestilling udsagn. 1179 01:06:15,390 --> 01:06:20,410 Så lad os sige vi kun ønskede at ændre personens navn til Elliot 1180 01:06:20,410 --> 01:06:23,940 hvis deres navn var Ryan, lad os sige. 1181 01:06:23,940 --> 01:06:24,920 >> Så når vi siger 1182 01:06:24,920 --> 01:06:32,700 >> HVOR navn lig Ryan, at ville held eneste ændring 1183 01:06:32,700 --> 01:06:37,440 den name-- ville det kun ændre navnet feltet i rækker 1184 01:06:37,440 --> 01:06:40,770 hvor navnet felt er lig med Ryan. 1185 01:06:40,770 --> 01:06:44,430 Så hvis vi havde flere mennesker opkaldt Ryan, alle deres navne 1186 01:06:44,430 --> 01:06:45,730 ville skifte til Elliot. 1187 01:06:45,730 --> 01:06:48,169 >> Dette svarer til eksemplet af hvis en fejl linje opdeler 1188 01:06:48,169 --> 01:06:50,960 New York City og alle har til flytte til New Haven, den måde, vi kan 1189 01:06:50,960 --> 01:06:56,570 gøre det i en erklæring er UPDATE Tabel 1 SET hjemby = New Haven 1190 01:06:56,570 --> 01:07:00,210 hvor hjemby lig New York. 1191 01:07:00,210 --> 01:07:03,410 Dette er den magt UPDATE erklæring. 1192 01:07:03,410 --> 01:07:10,530 Vi kan vælge et vilkårligt antal rækker gennem sande udsagn 1193 01:07:10,530 --> 01:07:12,860 om felterne i disse rækker. 1194 01:07:12,860 --> 01:07:19,510 Vi kan ikke sige UPDATE Tabel1 sæt name = Elliot WHERE række = 1, 1195 01:07:19,510 --> 01:07:24,820 bortset fra at vi kan hvis vi siger id = 1. 1196 01:07:24,820 --> 01:07:27,350 1197 01:07:27,350 --> 01:07:29,830 >> Så vi kommer til at være arbejder med ligestilling 1198 01:07:29,830 --> 01:07:32,830 områder, lige kolonner. 1199 01:07:32,830 --> 01:07:38,030 Men ved hjælp af ID-feltet er en måde at vælge individuelle rækker specifikt 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å gerne opdatere rækken én, ID er lig med 1. 1202 01:07:45,860 --> 01:07:49,560 Opdatering række to, bare ændre det id-nummer. 1203 01:07:49,560 --> 01:07:51,610 Men magt HVOR erklæring er, at vi 1204 01:07:51,610 --> 01:07:57,480 kan opdatere tingene baseret på, hvad deres aktuelle værdier af 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 hvad hvis du ønsker at-- igen, det er et andet spørgsmål. 1207 01:08:02,678 --> 01:08:07,660 Men mit første spørgsmål var, hvor sker det? 1208 01:08:07,660 --> 01:08:09,130 Hvor skal jeg opdatere denne? 1209 01:08:09,130 --> 01:08:11,100 Er dette i en PHP kode? 1210 01:08:11,100 --> 01:08:13,379 >> SPEAKER: Hvor du opdaterer, ja. 1211 01:08:13,379 --> 01:08:15,170 Vi kommer til at tale om, hvor alt dette 1212 01:08:15,170 --> 01:08:18,729 sker slags, når vi går gennem alle kommandoer. 1213 01:08:18,729 --> 01:08:21,130 Men hvad du har brug for at vide for nu er dybest set 1214 01:08:21,130 --> 01:08:26,279 at din SQL database eksisterer som noget 1215 01:08:26,279 --> 01:08:30,090 at tilgås af forespørgslen funktion, som CS50 definerer. 1216 01:08:30,090 --> 01:08:33,800 Så hvis du bruger søgefunktion, du kan få adgang til denne tabel. 1217 01:08:33,800 --> 01:08:39,529 >> Så du vil sende disse kommandoer til din tabel i PHP-filer 1218 01:08:39,529 --> 01:08:41,420 gennem forespørgslen funktionen. 1219 01:08:41,420 --> 01:08:45,410 Du kan også spille rundt med dit bord direkte. 1220 01:08:45,410 --> 01:08:49,050 Og det er den bedste måde at teste den slags kommandoer. 1221 01:08:49,050 --> 01:08:52,720 Og vi vil gå igennem præcis hvordan at gøre det i bare en lille smule. 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 af ​​kommandoerne vil være slags ens, 1224 01:08:57,939 --> 01:08:59,069 arbejder på lignende ting. 1225 01:08:59,069 --> 01:09:02,740 INSERT INTO er formentlig den mest forskellig fra UPDATE. 1226 01:09:02,740 --> 01:09:06,170 Jeg har tænkt mig at lade det op der for bare en lille smule og arbejde herovre. 1227 01:09:06,170 --> 01:09:10,215 Så INSERT INTO, vil du se denne tabel er stadig den samme. 1228 01:09:10,215 --> 01:09:17,010 Du ønsker at indsætte i. 1229 01:09:17,010 --> 01:09:20,286 Kapitalisering, SQL er tilfældet ufølsom. 1230 01:09:20,286 --> 01:09:22,160 Så du behøver ikke at kapitalisere disse ting. 1231 01:09:22,160 --> 01:09:27,960 Konventionelt ordene i hvidt aktiveres. 1232 01:09:27,960 --> 01:09:31,590 Men jeg også farvekodet dem. 1233 01:09:31,590 --> 01:09:34,390 Den eneste grund til, at du kapitalisere dem, når du skriver dem 1234 01:09:34,390 --> 01:09:36,609 er bare for at understrege at de er konstanter. 1235 01:09:36,609 --> 01:09:39,189 Og så kan du enten se på kapitalisering eller det faktum 1236 01:09:39,189 --> 01:09:40,740 at jeg har farvet dem forskelligt. 1237 01:09:40,740 --> 01:09:44,910 >> Så vi har fået INSERT INTO, lad os gøre Tabel 1 igen. 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 er bare adskille det ved de forskellige udsagn. 1240 01:09:48,609 --> 01:09:52,399 Så du skal ikke bekymre dig om det faktum, at Table1 gjort det på den anden linje. 1241 01:09:52,399 --> 01:09:56,130 >> Så vi ønsker at indsætte I Tabel 1 nogle værdier. 1242 01:09:56,130 --> 01:09:58,922 Og du vil opdage den valgfri bit, som jeg vil komme til i en anden. 1243 01:09:58,922 --> 01:09:59,755 Så vi har fået værdier. 1244 01:09:59,755 --> 01:10:03,640 1245 01:10:03,640 --> 01:10:08,100 >> Så lad os sige, at vi ønsker at tilføje Andi til vores bord, fordi vi savner Andi. 1246 01:10:08,100 --> 01:10:09,390 Andi er syg. 1247 01:10:09,390 --> 01:10:12,490 Så lad os tilføje Andi til vores bord. 1248 01:10:12,490 --> 01:10:15,150 Husk, at ID-nummer opdateres automatisk. 1249 01:10:15,150 --> 01:10:17,320 Så de eneste felter, vi at bekymre sig om 1250 01:10:17,320 --> 01:10:20,230 er navn, supermagt, og hjemby. 1251 01:10:20,230 --> 01:10:23,660 >> Og så den måde, at vi gør det, ser på vores syntaks, er vi har 1252 01:10:23,660 --> 01:10:28,780 lige fået en parentes, med komma adskilte værdier, som hver 1253 01:10:28,780 --> 01:10:29,890 er en værdi. 1254 01:10:29,890 --> 01:10:35,530 Så hvis vi ønskede at indsætte Andi ind i vores tabel, alt, hvad vi skal gøre er at rette Andi. 1255 01:10:35,530 --> 01:10:38,630 Hvad er Andi supermagt, folk i Andi sektion? 1256 01:10:38,630 --> 01:10:45,406 1257 01:10:45,406 --> 01:10:47,545 Hun kan lide fly, eller kan lide hastighed, eller noget. 1258 01:10:47,545 --> 01:10:48,920 Hvad skal vi allerede har deroppe? 1259 01:10:48,920 --> 01:10:53,425 Vi har CS50, flyvning, hastighed og styrke. 1260 01:10:53,425 --> 01:10:54,850 >> PUBLIKUM: tidsrejser. 1261 01:10:54,850 --> 01:10:56,180 >> SPEAKER: Tidsrejser, forbløffende. 1262 01:10:56,180 --> 01:11:04,280 Så vi har fået Andi, tid rejser, og hendes hjemby. 1263 01:11:04,280 --> 01:11:05,530 Det er et rigtig godt spørgsmål. 1264 01:11:05,530 --> 01:11:09,210 New York, medmindre nogen kender. 1265 01:11:09,210 --> 01:11:13,600 Alle er fra New York er den lektie at tage væk fra i dag. 1266 01:11:13,600 --> 01:11:17,710 >> Så dette udsagn ville indsætte, som femte række, 1267 01:11:17,710 --> 01:11:21,900 med supermagt tidsrejser den og en hjemby New York. 1268 01:11:21,900 --> 01:11:25,660 Men valgfrit felt er dybest set en måde 1269 01:11:25,660 --> 01:11:30,090 at angive præcist, hvilke kolonner du vil indsætte tingene i. 1270 01:11:30,090 --> 01:11:33,710 >> Den måde, som vi gør det nu, Andi, tidsrejser, New York, 1271 01:11:33,710 --> 01:11:38,150 går i den nøjagtige rækkefølge af vores table-- navn, supermagt, hjemby. 1272 01:11:38,150 --> 01:11:42,290 Og hvis du ønskede at gøre noget andet end det, 1273 01:11:42,290 --> 01:11:44,970 ligesom sige, at du ikke vidste nogens supermagt, 1274 01:11:44,970 --> 01:11:47,660 ligesom hvordan jeg vidste ikke Andi s supermagt i begyndelsen. 1275 01:11:47,660 --> 01:11:50,450 Så alt jeg vidste var hendes navn og hendes hjemby. 1276 01:11:50,450 --> 01:11:54,550 Hvad jeg kunne gøre, er at jeg kunne do-- Jeg vil slette denne hurtig. 1277 01:11:54,550 --> 01:11:57,910 1278 01:11:57,910 --> 01:12:00,090 >> Jeg ønsker at kun opdatere kolonnerne. 1279 01:12:00,090 --> 01:12:04,100 Og det er her den valgfri kolonne liste kommer i spil. 1280 01:12:04,100 --> 01:12:09,185 Jeg ønsker kun at opdatere navn og hjemby. 1281 01:12:09,185 --> 01:12:12,650 1282 01:12:12,650 --> 01:12:16,480 Og da vil jeg sige værdier. 1283 01:12:16,480 --> 01:12:24,430 Jeg vil gøre Andi og New York. 1284 01:12:24,430 --> 01:12:28,980 >> Hvis jeg havde udeladt på listen over kolonner og netop gjort disse to ting, 1285 01:12:28,980 --> 01:12:32,450 hvor ville New York er gået? 1286 01:12:32,450 --> 01:12:35,900 Hvilken kolonne ville New York By er blevet placeret i? 1287 01:12:35,900 --> 01:12:38,950 Folk har nogen idé? 1288 01:12:38,950 --> 01:12:40,160 Supermagt nøjagtigt. 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 af ​​den liste, vil det bare stoppe fylde ting i. 1291 01:12:45,530 --> 01:12:49,080 Og de værdier, at det vil holde i alle kolonner vil bare være NULL. 1292 01:12:49,080 --> 01:12:51,840 Så fordi vi angivet navn og hjemby, 1293 01:12:51,840 --> 01:12:56,110 vi kommer til at have ID 5, navn Andi, supermagt NULL. 1294 01:12:56,110 --> 01:12:58,750 Så supermagt er en initialiseret værdi. 1295 01:12:58,750 --> 01:13:01,340 Du vil ikke nødvendigvis få den samme Valgrind fejl, hvis du forsøger 1296 01:13:01,340 --> 01:13:01,970 og adgang til den. 1297 01:13:01,970 --> 01:13:05,160 Alt vil være pænt nulstillet ud, fordi NULL er en værdi 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 vil være New York. 1300 01:13:08,980 --> 01:13:11,860 Så det er INSERT INTO kommando. 1301 01:13:11,860 --> 01:13:13,610 Før vi går, er der to flere kommandoer. 1302 01:13:13,610 --> 01:13:19,060 Har folk har spørgsmål om UPDATE, om INSERT INTO, om SQL 1303 01:13:19,060 --> 01:13:21,556 generelt inden vi flytter på vores endelige bits? 1304 01:13:21,556 --> 01:13:25,500 1305 01:13:25,500 --> 01:13:26,910 Folk føler sig godt, stor. 1306 01:13:26,910 --> 01:13:27,410 Elsker det. 1307 01:13:27,410 --> 01:13:29,480 Så lad os tale om SELECT. 1308 01:13:29,480 --> 01:13:33,445 Går grøft UPDATE herovre. 1309 01:13:33,445 --> 01:13:35,720 >> Og SELECT bliver meget ens. 1310 01:13:35,720 --> 01:13:38,790 Målet med SELECT, SELECT formål i livet 1311 01:13:38,790 --> 01:13:45,910 er at give dig en masse kolonner at opfylde visse betingelser. 1312 01:13:45,910 --> 01:13:48,230 Og når jeg siger tilfredsstille visse betingelser, 1313 01:13:48,230 --> 01:13:50,800 dit sind måske straks gå tilbage til at WHERE 1314 01:13:50,800 --> 01:13:52,090 der kom op i UPDATE. 1315 01:13:52,090 --> 01:13:54,880 Og denne klausul er præcis der i SELECT. 1316 01:13:54,880 --> 01:14:06,020 >> Hvis vi ikke sætter WHERE klausul og vi siger SELECT navn, 1317 01:14:06,020 --> 01:14:16,490 hometown-- stavet, at en lille wrong-- navn, hjemby FRA Tabel1. 1318 01:14:16,490 --> 01:14:19,690 Hvis vi bare sige, hvad SELECT vil give os, er det 1319 01:14:19,690 --> 01:14:23,730 kommer til at give os en double-- en tabel, i stedet. 1320 01:14:23,730 --> 01:14:27,450 En dobbelt række, hvis vi er tænker i PHP sanser. 1321 01:14:27,450 --> 01:14:33,239 Men det er bare kommer til at give os en dobbelt række af 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 supermagt. 1326 01:14:41,310 --> 01:14:44,696 Og det vil bare give os hver enkelt række i skemaet. 1327 01:14:44,696 --> 01:14:46,570 Så hvis vi bare indsat Andi, vi vil have andi. 1328 01:14:46,570 --> 01:14:48,605 Og vi vil have den oprindelige fire. 1329 01:14:48,605 --> 01:14:53,720 Hvis de har været opdateret, der vil afspejles, et cetera, et cetera. 1330 01:14:53,720 --> 01:14:56,520 >> Så dette er, fordi vi ikke bruge WHERE. 1331 01:14:56,520 --> 01:14:59,200 Men vi kan bruge det i præcis den samme måde, som vi brugte det i UPDATE. 1332 01:14:59,200 --> 01:15:05,310 Hvis vi kun ønsker en tabel over de navne, og superkræfter af mennesker der lever 1333 01:15:05,310 --> 01:15:13,430 i New York, kan vi udføre en sætning Ligesom SELECT navn, superpower-- 1334 01:15:13,430 --> 01:15:27,190 Jeg bare at forlade at-- FROM Tabel 1 WHERE hjemby = New York. 1335 01:15:27,190 --> 01:15:33,370 >> Så dette går til at vise, at du kan komme helt forskellige kolonner, 1336 01:15:33,370 --> 01:15:36,920 og derefter sætte kolonner, at du ikke er selv at komme tilbage i WHERE. 1337 01:15:36,920 --> 01:15:39,200 Vi har ikke selv ønsker det hjemby alle. 1338 01:15:39,200 --> 01:15:41,920 Men vi ønsker navn og den supermagt af mennesker 1339 01:15:41,920 --> 01:15:43,817 hvis hjemby er New York. 1340 01:15:43,817 --> 01:15:45,650 Så det er noget, vi kan gøre med WHERE 1341 01:15:45,650 --> 01:15:49,112 klausul er, at vi kan behandle kolonner at vi ikke nødvendigvis ønsker tilbage. 1342 01:15:49,112 --> 01:15:52,320 På samme måde, UPDATE, kan vi håndtere med søjler, som vi ikke nødvendigvis 1343 01:15:52,320 --> 01:15:53,270 ønsker at opdatere. 1344 01:15:53,270 --> 01:15:58,890 Vi kan opdatere byen alle som navn er Sam, for eksempel. 1345 01:15:58,890 --> 01:16:02,080 Vi kan opdatere byen alle, hvis ID-nummer er 2. 1346 01:16:02,080 --> 01:16:04,960 Så bare opdatere by i den anden række 1347 01:16:04,960 --> 01:16:08,220 hvor vi ikke behøver at beskæftige sig med nødvendigt den fælles spørgsmål. 1348 01:16:08,220 --> 01:16:13,264 >> Og slette er, som du ville forventer, DELETE FROM Tabel 1. 1349 01:16:13,264 --> 01:16:14,930 Og så har vi en anden WHERE. 1350 01:16:14,930 --> 01:16:17,940 Så vi kan sige WHERE ID = 1. 1351 01:16:17,940 --> 01:16:18,950 Slet den første række. 1352 01:16:18,950 --> 01:16:23,240 Og SLET vil altid slette en række, eller det vil slette nogle antal rækker. 1353 01:16:23,240 --> 01:16:26,990 DELETE FROM tabel, hvor hjemby = New York 1354 01:16:26,990 --> 01:16:28,740 sletter alle i New York City. 1355 01:16:28,740 --> 01:16:30,985 Det er, hvis der var en pludselige tragiske pest 1356 01:16:30,985 --> 01:16:33,360 og du ville bare fjerne alle fra bordet, der 1357 01:16:33,360 --> 01:16:35,760 boede i en bestemt by der blev ramt af pesten. 1358 01:16:35,760 --> 01:16:38,050 Må de hvile i fred. 1359 01:16:38,050 --> 01:16:43,849 >> Disse er de fire SQL-kommandoer at du bliver nødt til at bruge. 1360 01:16:43,849 --> 01:16:45,390 Du har måske ikke engang behøver at bruge dem alle. 1361 01:16:45,390 --> 01:16:47,690 Men disse er de fire at CS50 forventer, at du 1362 01:16:47,690 --> 01:16:53,630 at være komfortabel med at gå ind i både quiz 1 og også pset7 og pset8. 1363 01:16:53,630 --> 01:16:55,820 >> Der er bare det bord igen. 1364 01:16:55,820 --> 01:16:58,930 I denne ene, Roys supermagt har blevet opdateret til laserstråler, som 1365 01:16:58,930 --> 01:17:00,880 er et eksempel jeg ikke bruge. 1366 01:17:00,880 --> 01:17:05,480 Jeg ved ikke, hvilken en Roy foretrækker, men styrke. 1367 01:17:05,480 --> 01:17:07,670 Roy har en supermagt af styrke. 1368 01:17:07,670 --> 01:17:09,090 Katherine ikke gøre det i dag. 1369 01:17:09,090 --> 01:17:10,260 Det er uheldigt. 1370 01:17:10,260 --> 01:17:11,260 Men hun har super hastighed. 1371 01:17:11,260 --> 01:17:13,780 1372 01:17:13,780 --> 01:17:14,670 >> Nå det var PHP. 1373 01:17:14,670 --> 01:17:19,410 Før vi taler om MVC, gør nogen der har spørgsmål om PHP? 1374 01:17:19,410 --> 01:17:23,864 Nu SQL eller PHP, hvis du pludselig har komme op med et spørgsmål om PHP? 1375 01:17:23,864 --> 01:17:27,560 1376 01:17:27,560 --> 01:17:28,460 Stor. 1377 01:17:28,460 --> 01:17:29,920 Okay, vi alle sat derefter. 1378 01:17:29,920 --> 01:17:33,660 >> Så taler en lille smule om model view controllere, 1379 01:17:33,660 --> 01:17:38,770 lad os gå tilbage til nogle af de ting i pset7. 1380 01:17:38,770 --> 01:17:42,470 Så hvad modelvisning controller is-- Jeg er ikke 1381 01:17:42,470 --> 01:17:45,660 kommer til at gemme mine ændringer til login fordi jeg helt slagtet det. 1382 01:17:45,660 --> 01:17:49,220 Men dybest set har vi to separate ting foregår. 1383 01:17:49,220 --> 01:17:52,390 Vi har en offentlig mappe, der indeholder 1384 01:17:52,390 --> 01:17:56,460 den kode, der kommer til at blive henrettet og de websider, der vil blive besøgt. 1385 01:17:56,460 --> 01:17:58,780 Og vi har også denne udsigt mappe. 1386 01:17:58,780 --> 01:18:01,780 Og visninger indeholder skabeloner. 1387 01:18:01,780 --> 01:18:04,390 >> Dette er, hvad funktionen render-- vi så gør 1388 01:18:04,390 --> 01:18:08,240 funktion i en flok af PHP kode at CS50 har allerede skrevet til dig, 1389 01:18:08,240 --> 01:18:10,550 der tager i visse parametre. 1390 01:18:10,550 --> 01:18:14,510 Hvad denne kode gør er det at gå i udsigt, 1391 01:18:14,510 --> 01:18:18,000 som er sæt af lignende prewritten HTML-kode, 1392 01:18:18,000 --> 01:18:20,720 og det er at indsætte værdier i visse steder. 1393 01:18:20,720 --> 01:18:23,990 Det er sådan, når man gå ind i CS50 Finans, 1394 01:18:23,990 --> 01:18:25,760 den samme overskrift er på hver side. 1395 01:18:25,760 --> 01:18:28,130 Den samme sidefod er på hver side. 1396 01:18:28,130 --> 01:18:31,880 Dette skyldes den måde, at gengive værker er det vil 1397 01:18:31,880 --> 01:18:36,720 automatisk lappe i denne header og viewer, som du kan finde i udsigt. 1398 01:18:36,720 --> 01:18:41,400 >> Vi kan faktisk gå ind i header, og se, det er en HTML-fil med et hoved. 1399 01:18:41,400 --> 01:18:43,280 Det har fået nogle stylesheets. 1400 01:18:43,280 --> 01:18:48,450 Du behøver ikke at se på CSS for pset7, hvis du ikke vil. 1401 01:18:48,450 --> 01:18:50,560 Men du kan ændre dem, hvis du ønsker, at gøre 1402 01:18:50,560 --> 01:18:53,470 din Finans ser lidt anderledes. 1403 01:18:53,470 --> 01:18:57,560 >> Det har fået nogle PHP i header lidt at se 1404 01:18:57,560 --> 01:19:01,240 hvis der er en anden titel det skal sættes i denne overskrift. 1405 01:19:01,240 --> 01:19:04,300 Men blot nogle andre scripts, og links og andre ting. 1406 01:19:04,300 --> 01:19:08,700 Hoved ender, kroppen begynder, og ups, vi har denne underlige lille ende bit. 1407 01:19:08,700 --> 01:19:14,730 Og der er en div, ligesom en formløs slags element 1408 01:19:14,730 --> 01:19:17,120 der har en idé om midten. 1409 01:19:17,120 --> 01:19:22,450 >> Og så når vi ser sidefod, vi har i slutningen af ​​en div. 1410 01:19:22,450 --> 01:19:25,000 Vi har en bund, som er hvor sidefoden tekst er. 1411 01:19:25,000 --> 01:19:26,770 Slutningen af ​​div, slutningen af ​​krop, ultimo HTML. 1412 01:19:26,770 --> 01:19:29,070 >> Så hvad gør er gør, er gøre er sortering 1413 01:19:29,070 --> 01:19:33,150 af lappe header, en forskellige PHP-fil, 1414 01:19:33,150 --> 01:19:37,110 vil indeholde de faktiske ting, vil du se, ligesom dit bord af bestande 1415 01:19:37,110 --> 01:19:39,690 hvis du køber eller sælger aktier. 1416 01:19:39,690 --> 01:19:41,480 Og så vil det tilføje i sidefoden. 1417 01:19:41,480 --> 01:19:44,890 Og modellen visningen controller idé er, at vi 1418 01:19:44,890 --> 01:19:49,590 ønsker at adskille, hvordan tingene ser fra koden. 1419 01:19:49,590 --> 01:19:53,420 Det er vi ønsker at adskille frontend og backend, hvor frontend er 1420 01:19:53,420 --> 01:20:00,440 de ting, som brugeren ser, den pæne visuals-- HTML, CSS, sådan noget, 1421 01:20:00,440 --> 01:20:02,320 billeder, 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 kode, som du skriver. 1424 01:20:07,710 --> 01:20:10,240 Det er her, den kode, der er laver egentlige operationer. 1425 01:20:10,240 --> 01:20:12,400 Dette er, når du tilføjer en bestand til dit bord, 1426 01:20:12,400 --> 01:20:14,890 når du køber og salg, det er backend. 1427 01:20:14,890 --> 01:20:20,210 >> Og vi kan, som du så, herunder PHP direkte i HTML. 1428 01:20:20,210 --> 01:20:23,210 Så det, vi kunne have gjort for denne opgave er netop haft 1429 01:20:23,210 --> 01:20:26,200 en HTML-fil for hver side, ligesom login. 1430 01:20:26,200 --> 01:20:30,260 Og så på den side, bare havde en enorm blok af PHP kode, 1431 01:20:30,260 --> 01:20:33,822 herunder alle den kode, pågældende side specifikt skulle. 1432 01:20:33,822 --> 01:20:35,780 Og så kunne vi have gjort det for portefølje. 1433 01:20:35,780 --> 01:20:40,250 Vi kunne have gjort alle køb og salg inden for de enkelte sider. 1434 01:20:40,250 --> 01:20:43,680 >> Men fordi vi er rendering separat hvorfra 1435 01:20:43,680 --> 01:20:46,660 vi skriver backend kode, kan vi let 1436 01:20:46,660 --> 01:20:52,660 ændre, hvordan tingene ser uden skiftende hver enkelt fil. 1437 01:20:52,660 --> 01:20:55,460 Vi gør ting som blot tilføje en ny div til bunden 1438 01:20:55,460 --> 01:21:00,720 of-- Hej Jeg ændrede sidefoden. 1439 01:21:00,720 --> 01:21:03,710 Du kan bare gøre den slags. 1440 01:21:03,710 --> 01:21:07,250 Men også, kan du ændre hele visuelt layout 1441 01:21:07,250 --> 01:21:09,290 uden at påvirke, hvad der er går i backend. 1442 01:21:09,290 --> 01:21:12,000 Og du kan ændre Hele backend og stadig 1443 01:21:12,000 --> 01:21:13,900 har det ser ligesom det gjorde før. 1444 01:21:13,900 --> 01:21:14,400 Denne 1445 01:21:14,400 --> 01:21:16,170 >> Er tanken om modellen view controller. 1446 01:21:16,170 --> 01:21:19,992 Og det er faktisk en pålagt paradigme i nogle af de programmeringssprog 1447 01:21:19,992 --> 01:21:21,700 du måske ønsker at bruge for de endelige projekter. 1448 01:21:21,700 --> 01:21:25,100 Hvis du gør iOS udvikling, de har udsigt, 1449 01:21:25,100 --> 01:21:29,120 hvilket er, hvad du ser på iPhone, og derefter backend som som en separat ting. 1450 01:21:29,120 --> 01:21:31,260 >> Du kan tænke på en lille smule. 1451 01:21:31,260 --> 01:21:35,190 Der er en masse binære filer i datalogi, som er sjovt, 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 har ikke planer om det. 1454 01:21:38,550 --> 01:21:41,590 Det var et ordspil utilsigtet. 1455 01:21:41,590 --> 01:21:43,860 Ja, ordspil ikke beregnet. 1456 01:21:43,860 --> 01:21:49,070 >> Men ligesom .H filer og .c filer, der er en masse adskillelse af ting, som vi 1457 01:21:49,070 --> 01:21:49,900 måske ikke har brug for. 1458 01:21:49,900 --> 01:21:54,330 Så kan vi bare redigere h filer eller nogen kan bare se en .h fil og vide 1459 01:21:54,330 --> 01:21:57,650 præcis de funktioner, der er i .c fil uden nødvendigvis at kende 1460 01:21:57,650 --> 01:21:58,870 deres gennemførelse. 1461 01:21:58,870 --> 01:22:02,800 Denne idé om at adskille komponenter der er afhængige af hinanden 1462 01:22:02,800 --> 01:22:06,990 men kan slags adgang hinanden gennem forskellige kanaler, passerer 1463 01:22:06,990 --> 01:22:09,310 variabler, bare omfatter erklæringer, ting 1464 01:22:09,310 --> 01:22:14,440 gerne, at dette princip er med til at skabe applikationer 1465 01:22:14,440 --> 01:22:17,080 der kan være lettere redigeret af flere personer, 1466 01:22:17,080 --> 01:22:20,440 lettere kan ændres eller modificeret på en stor skala, 1467 01:22:20,440 --> 01:22:24,880 og er lettere at debug i en masse måder. 1468 01:22:24,880 --> 01:22:28,254 >> Virkelig hurtig, jeg har et par tips til pset7, 1469 01:22:28,254 --> 01:22:31,420 som jeg vil gøre fuld skærm, så du ikke bare at kigge på til-- spids spids Tippee. 1470 01:22:31,420 --> 01:22:33,964 1471 01:22:33,964 --> 01:22:35,130 Der er ikke så mange tips. 1472 01:22:35,130 --> 01:22:38,060 >> Men jeg nævnte PHP er svært at debug. 1473 01:22:38,060 --> 01:22:39,290 Dobbelt og tredobbelt kontrollere det. 1474 01:22:39,290 --> 01:22:41,550 Hvis din kode er bare ikke dukke op på siden, 1475 01:22:41,550 --> 01:22:46,240 det er nok en PHP fejl, beklager. 1476 01:22:46,240 --> 01:22:48,570 >> Du har brug for aldrig at se på CSS, hvis du ikke vil. 1477 01:22:48,570 --> 01:22:52,150 Men når du er færdig, kan det være en dejlig lille sjov ting at bare gå i 1478 01:22:52,150 --> 01:22:54,770 og rode med CSS parametre. 1479 01:22:54,770 --> 01:22:58,700 CSS og HTML er et eksempel på en model view controller stil ting også, ikke? 1480 01:22:58,700 --> 01:23:02,150 Du kunne have stil tags indersiden af ​​HTML-elementer. 1481 01:23:02,150 --> 01:23:04,800 Men hvis du slags outsourcing dem til CSS, 1482 01:23:04,800 --> 01:23:08,180 de er nemmere at redigere, og leg rundt med, og have det sjovt med. 1483 01:23:08,180 --> 01:23:10,816 >> Forkæl CS50 hjælper fungerer som sorte bokse. 1484 01:23:10,816 --> 01:23:12,940 Du behøver ikke at vide præcis, hvad render laver, 1485 01:23:12,940 --> 01:23:16,770 men tro det altid at gøre det rigtige ting afhængigt af hvad du give det, 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 ser Davids walkthrough, 1488 01:23:21,040 --> 01:23:24,490 gennemgår alle Stuff, ikke kun de todos, 1489 01:23:24,490 --> 01:23:26,960 men du virkelig kan behandle disse som sorte bokse. 1490 01:23:26,960 --> 01:23:29,280 Må ikke gå ind i disse funktioner på udkig efter bugs. 1491 01:23:29,280 --> 01:23:33,510 >> Og velkommen tilbagevenden vores Overlord Zamyla. 1492 01:23:33,510 --> 01:23:34,010 Stor. 1493 01:23:34,010 --> 01:23:40,430 >> Er der nogen endelige spørgsmål, før vi slags hoppe for dagen? 1494 01:23:40,430 --> 01:23:42,610 Er jeg stadig lever? 1495 01:23:42,610 --> 01:23:44,700 Stor. 1496 01:23:44,700 --> 01:23:47,120 Hej Livestream mennesker. 1497 01:23:47,120 --> 01:23:47,620 Stor. 1498 01:23:47,620 --> 01:23:50,260 Er der længere spørgsmål? 1499 01:23:50,260 --> 01:23:50,760 Ingen? 1500 01:23:50,760 --> 01:23:52,884 >> Og så tror jeg, vi er god til at gå til i dag. 1501 01:23:52,884 --> 01:23:55,550 Jeg vil holde sig omkring en lille smule bagefter, hvis folk havde spørgsmål 1502 01:23:55,550 --> 01:23:57,480 de var bange for at spørge på åen. 1503 01:23:57,480 --> 01:23:59,790 Men ellers have en god dag. 1504 01:23:59,790 --> 01:24:01,933