SAM LEVATICH: Chào mừng bạn đến phần cho tuần này. Tôi không Andi. Andi bị ốm ngày này, và tôi đã được loại gọi là trong phút cuối cùng để tiếp nhận. Đó là mùa cúm, do đó hãy chắc chắn rằng bạn đang ở sạch sẽ, rửa tay, và ăn uống lành mạnh để bạn cũng vậy, không phải nằm liệt giường. Nhưng mà không có thêm ado, chúng ta hãy bắt đầu. Hôm nay, chúng ta sẽ nói chuyện về PHP một chút bit-- như thế nào PHP liên quan đến HTML, nó như thế nào liên quan đến CSS, và một số các web thứ bạn đã làm trên việc gần đây nhất. Chúng ta sẽ nói một chút chút về SQL và làm thế nào bạn có thể làm việc với cơ sở dữ liệu, mà là một thành phần khá quan trọng của P thiết 8-- P đặt 7. P đặt 7. Và sau đó chúng ta sẽ nói một chút chút về cách điều khiển xem làm việc và tại sao đó là một triết lý đằng sau một số các trang web hiện đại và thiết kế khác nhau. Khá nhiều rất nhiều loại ứng dụng và các ứng dụng bạn có thể xuất xưởng đang sử dụng mô hình này, view khung điều khiển, mà bạn sẽ sử dụng trong P đặt 7, vì vậy tôi sẽ nói một chút về lý do tại sao mà trở thành phổ biến, tại sao nó quan trọng và tốt đẹp cả. Và sau đó, tôi cũng sẽ chuyển sang một số lời khuyên về việc giải quyết P đặt 7. Và nếu chúng ta có thời gian còn lại ở cuối, chúng tôi thực sự có thể làm một số làm việc trên đó với nhau. Vì vậy, PHP. Trong thực tế, bạn có thể nhận thấy this-- bạn không thực sự phải đi sâu vào it-- nhưng P đặt 6 đã có một số PHP mã đó đã xảy ra. Và bởi vì PHP là một C-like ngôn ngữ, PHP, không giống như HTML và CSS, là một ngôn ngữ lập trình, trong khi HTML và CSS là tĩnh. Họ là ngôn ngữ đánh dấu đối phó với phong cách và bố trí trực quan. PHP là ảnh thật. PHP có vòng, nó có conditions-- tất cả những thứ đó là thú vị về C. Nó có một vài điều mà là một chút bit tốt hơn so với C, mà chúng ta sẽ thấy, nhưng tôi nghĩ rằng cách dễ nhất để nói chuyện chỉ về PHP là để bổ nhào vào. Vì vậy, tôi sẽ đi ngay vào IDE vào thời điểm này. Điều đầu tiên chúng ta sẽ để làm được thực sự nhìn một chút tại một số các Đoạn mã PHP là trong P đặt 6. Vì vậy, cách mà chúng ta làm that-- trước khi, cách mà chúng ta đã chạy các máy chủ cho các thiết bị là chúng tôi sẽ phải type-- hoặc là sử dụng thực hiện của bạn hoặc của nhân viên thực hiện của server.c bằng cách vào thư mục và chạy server.c với hoặc không có arguments-- vì vậy chỉ cần gọi nó trên các chủ của địa phương, mà là những gì bạn có thể đã làm hầu hết các time-- và sau đó ăn nó một directory-- với để sử dụng như là người chủ của nó nơi mà các trang web sẽ được chạy, về cơ bản. Tuần này cho P đặt 7, như tuyệt vời như là mã của chúng tôi cho server.c là, có những người đã viết những điều tốt đẹp hơn ở CS50 rằng có một chút nhiều chức năng, một chương trình máy chủ đó là khả năng đối phó với nhiều hơn một chút của những phức tạp mà chúng ta sẽ nhìn thấy trong cả hai P đặt 7 và P đặt 8. Và cách mà bạn bắt đầu lên máy chủ là bởi chỉ cần gõ "apache50." Và trước khi bạn làm bất cứ điều gì, bạn muốn chắc chắn Apache 50 không phải là đã chạy như nó là trên máy tính của tôi, mà tôi đã làm để kiểm tra nó. Và bạn làm điều đó bằng cách gọi apache50. Dừng lại, và bạn sẽ thấy rằng nó dừng các máy chủ web, nếu bạn có thể tìm ở đó ở dưới cùng của cửa sổ thiết bị đầu cuối. Và sau đó chỉ cần để bắt đầu, chúng tôi sẽ gọi, "apache50 bắt đầu." Và sau đó chúng ta sẽ để nuôi nó một thư mục. Bây giờ, bởi vì chúng tôi muốn nhìn tại một số các thiết lập P 6 mã mà chúng tôi đã thực hiện, tôi thực sự sao chép một chút của P thiết lập 6 mã vào thư mục riêng của tôi, mà bạn có thể nhìn thấy trên bên trái có. Nó được gọi là "SECTION8" trong tất cả các chữ in hoa bởi vì anh chỉ vui mừng là live-stream ngày hôm nay. Vì vậy, nếu chúng ta chạy này, nó phải tất cả làm việc khá hiệu quả. Nó nói, OK, trang web của chúng tôi bây giờ là có sẵn tại địa chỉ của IDE, Về cơ bản, đó là những gì bạn đang sử dụng chính xác như nó đã được thiết lập trong P 7-- P đặt 6. Tất cả các chỉ số của tôi là một trong những chỉ số ngày hôm nay. Vì vậy, chúng ta có thể đi đến đó địa chỉ, nếu bạn sẽ nhớ, bởi chỉ cần nhấp chuột chút này nút ở phía trên bên phải. Và bạn sẽ nhớ lại mã này, mà xảy ra khi bạn đi vào hello.php. Và những gì các mã được thiết kế để làm là khi bạn gõ vào một tên here-- nếu bạn nói Sam bởi vì đó là name-- của tôi và tôi nhấn Say Hello, khi chúng tôi đã đi đến trang tiếp theo, Tên lẽ ra phải được hiển thị. Nó sẽ nói, "Xin chào, Sam" hay "Xin chào," bất cứ tên bạn đưa vào nó mặc dù chúng tôi đã đi đến một trang web hoàn toàn mới. Và đây là các loại điều PHP có thể làm cho bạn. PHP có khả năng truyền dữ liệu giữa hai trang web. Đây là một trang hoàn toàn khác nhau. Bạn sẽ thấy tiêu đề là "hello" ở đây. Trên thực tế, họ có cùng tên, nhưng tôi hứa rằng họ là web khác nhau trang nếu chúng ta nhìn vào mã nguồn. Và bạn có thể vượt qua các dữ liệu đó là nhập trong lĩnh vực văn bản này, bạn gửi nó đến tiếp theo trang đang được gọi lên, và sau đó dữ liệu có khả năng được có trong hình thức hiện tại của nó. Bây giờ chúng ta chưa thực hiện này chính mình, mà là những gì chúng ta sẽ làm ngay bây giờ để loại có được một hương vị như thế nào cho PHP làm việc, nhưng ý tưởng chính ở đây là bạn có thể PHP-- loại nghĩ về nó như một chức năng. Cái gì mà PHP có thể cho bạn làm là nó có thể mất các thông số mà bạn đã nhập vào một trang HTML thông qua việc sử dụng PHP và các hình thức, và nó có thể vượt qua những thông số như đến trang tiếp theo mà nó tải lên. Trong trường hợp này, chúng tôi đang tải lên này trang với các nút "Say hello". Nhưng bây giờ, tôi thực sự xóa một số mã trong hello.php đó đã được điều hành mà thực sự đã được hiển thị "hello, thế giới "hay" hello, Sam "hoặc "hello", bất cứ điều gì chỉ là đầu vào. Vì vậy, cho ngay bây giờ, chúng tôi sẽ làm điều đó, về cơ bản. Chúng tôi đang đi để tái tạo đó và cũng có thêm một số chức năng hơn, làm một chút nhiều hơn với nó, xem PHP gì là thực sự có khả năng. Vì vậy, đầu tiên, hãy nói về tập tin này, hello.php. Vì vậy, nếu chúng ta phóng to một ít bit-- và bây giờ tôi loại cố gắng để di chuyển tất cả đường around-- có chúng tôi đi. Bạn sẽ thấy nó được gọi là hello.php, nhưng cú pháp của nó trông giống như một tập tin HTML. Điều này là do PHP thực tế trong tập tin này là tất cả bị mắc kẹt giữa các Câu hỏi khối đánh dấu caret. Tất cả mọi thứ ngay tại đây được coi là mã PHP. Và bạn sẽ nhận thấy rằng khi tôi đã làm một bình luận, bạn sẽ thấy quen thuộc hai dấu gạch chéo. Và nếu bạn sẽ nhớ lại, trong HTML, nếu tôi gõ một bình luận, nó có vẻ gì đó gần gũi hơn với này, đó là một nhận xét trong HTML. Vì vậy, thực sự mọi thứ giữa hai dấu ngoặc nhọn Hiện tại là code PHP, mà được phản ánh trong thực tế mà biểu tượng comment chút này là biến thành một nhận xét. Vì vậy, mỗi khi bạn viết mã PHP, thậm chí nếu không có mã HTML bên ngoài của nó, nó luôn luôn có được kèm theo trong các dấu ngoặc nhọn với dấu hỏi. Bạn có thể sắp xếp các suy nghĩ về it-- thế nào tất cả của mã mà chạy trong chương trình C của bạn nó được đặt trong một int main, void, ngoặc móc, cuối cùng tuyên bố ngoặc móc. Và bạn sẽ thấy dấu ngoặc nhọn trong PHP, quá, nhưng đây là loại như phương pháp chính của PHP. Vì vậy, bây giờ, làm thế nào để chúng ta làm bất cứ điều gì trong PHP? Bây giờ, PHP là một lập trình ngôn ngữ đó là rất C-như, nhưng nó hoạt động trên web. Vì vậy, có một điều mà bạn sẽ immediately-- một trong những điều đầu tiên mà bạn thực sự đã làm với C đã được bạn in ra công cụ, phải không? Vì vậy, trong C, chúng tôi đã làm điều đó với một hàm printf. Chúng tôi đã cho nó một chuỗi, có lẽ với một dòng mới, và sau đó chúng tôi chấm dứt nó với một dấu chấm phẩy. Vì vậy, cách mà chúng ta sẽ làm điều đó trong PHP-- vì nó không hoàn toàn printf. Đó là một chút của cú pháp khác nhau. Cách mà chúng tôi in ra những thứ trong PHP là chúng ta nói, "echo hello" hoặc "echo" bất kỳ từ nào. Và điều đó có tác dụng làm printf với một chuỗi "hello". Và nó thêm dòng mới cho nó. Vì vậy, hãy làm ngay bây giờ của sure-- Tôi sẽ thu nhỏ lại một chút bit-- hãy chắc chắn rằng mã được làm việc bởi vì có rất might cũng là một lỗi trong mã này rằng chúng ta sẽ phải giải quyết. Vì vậy, các máy chủ đang chạy. Vì vậy, nếu chúng ta di chuyển xuống phía dưới, yup, máy chủ vẫn chạy. Vì vậy, nếu chúng ta chỉ cần gõ vào đây chút quyền here-- welcome-- chúng ta nên get-- tuyệt vời. Chúng tôi vẫn đang có quen thuộc "Say hello" đối thoại, nhưng khi tôi gõ "hi", chúng ta sẽ thấy rằng các văn bản "hello" đã thực sự in ra, đó là chính xác như như mong đợi bởi tiếng vang trong PHP là giống như một tuyên bố printf. Vì vậy, trở lại mã, làm thế nào trong P 6 đã thiết lập mã phân phối bạn được cung cấp làm cho nó để PHP sẽ đầu ra điều mà bạn gõ vào trên màn hình trước? Và để loại kiểm tra tại sao điều đó xảy ra, chúng tôi sẽ đi vào index.html, mà là các tập tin ban đầu, các tập tin đó hiện lên trên màn hình này với nút "Say hello". Bạn nhận thấy rằng có tất cả những thứ cổ điển chúng tôi đã mong đợi từ HTML chẳng hạn như những điều này, các thẻ kèm trong dấu ngoặc nhọn, giống như PHP nhưng không có dấu hỏi, mà chỉ ra một điều đặc biệt để HTML. Chúng tôi có tiêu đề, đó là "hello". Và bạn sẽ nhận thấy rằng khi chúng ta đã thấy, tiêu đề là "hello" trong cả hai trường hợp. Hãy thay đổi này để "nói" chỉ vì vậy chúng tôi có thể phân biệt bản thân chúng ta ở đâu. Nhưng chúng tôi đã có một cơ thể. Và sau đó các bit thú vị, bit mà xuất hiện trong HTML, là yếu tố hình thức này. Và vì vậy chúng tôi đã có một hình thức. Và đây chính là chìa khóa. Đây là cách chúng ta đang làm việc với PHP. Các thông số hoạt động của hình thức nói rằng hello.php là những gì chúng ta sẽ gửi các giá trị trong mẫu này để. Đây là nơi mà chúng tôi đang đi qua các thông số, vậy để nói chuyện. Bạn sẽ nhận thấy điều khác ở đây là phương pháp này là "có". Có hai chính phương pháp mà sẽ được sử dụng PHP để truyền dữ liệu giữa các trang web websites--, rather-- trong nhiệm vụ này. Và các phương pháp đó là "được" và "hậu". Có một số tinh tế sự khác nhau giữa GET và bài rằng chúng ta sẽ có được into-- chúng tôi sẽ "được" vào, nếu bạn sẽ. Nhưng đối với tất cả các tính mục đích, có được và bài cả hai đều chỉ cách đó bạn vượt qua các thông số với hành hơi khác nhau. Để bây giờ, chúng ta sẽ sử dụng được bởi vì có được là những gì được sử dụng ban đầu trong file PHP của P đặt 6. Và trên thực tế, nếu chúng ta đi vào và nhìn trước khi chúng tôi đã chỉnh sửa bất cứ điều gì khác, Tôi sẽ nói hi với: Tên của bạn là gì? Đung Elliot. SAM LEVATICH: Oh, chúa ơi. Tôi không biết cách đánh vần đó. Bạn có thể đánh vần đó cho tôi? Đung E-L-L-I-O-T. SAM LEVATICH: I-O-T? Đung Yeah. SAM LEVATICH: Perfect. ĐƯỢC. Tôi đoán tôi đã biết cách đánh vần đó. Xin lôi vê điêu đo. Nhưng nếu chúng ta nói "Say hello," đó không phải nó sẽ không hiển thị trên màn hình nhưng vì chúng tôi sửa đổi mã một chút. Nhưng nếu chúng ta "Say hello" - OK, vì vậy "hello" là ở đây. Nhưng nếu chúng ta hãy gần gũi hơn nhìn vào URL của chính nó, chúng ta sẽ thấy rằng nó kết thúc với hello.php? name = Elliot. Vì vậy, đây là một cách giao tiếp với các trang web tiếp theo các tham số mà chúng tôi đã được thông qua. Chúng tôi biết tên = Elliot. Và đó là cách cuối cùng là thiết lập P 6 truy cập các biến mà chúng tôi đi qua trong thông qua các hình thức. Và đây là cái gì đó đặc biệt là một yêu cầu get. A nhận được yêu cầu làm cho các thông số được biết đến trong các URL của trang web. Và bạn sẽ nhớ lại, quá, trong P đặt 6 mà bạn đã phải viết một chức năng mà bị xử lý với thực tế rằng chuỗi truy vấn này có thể tồn tại sau khi một tập tin. Có thể là một dấu hỏi sau bởi về cơ bản bất kỳ số ký tự. Và đó là chính xác những gì đang xảy ra ở đây. Và lý do bạn đã phân tích rằng trong thực hiện của bạn server.c trong P thiết lập 6 là để bạn có thể nói mã PHP mà tên = Elliot. Bạn cần thiết để có thể phân tích rằng trong số các URL để các tập tin PHP trong câu hỏi biết những gì nó đã được xử lý. Vì vậy, hy vọng điều này sẽ cho động lực để server.c bây giờ chúng ta đang di chuyển trên bên ngoài của C vào PHP. Vì vậy, hãy thực sự tập trung vào việc tiếp cận các thứ qua một yêu cầu get nay tại điểm này. Tôi sẽ tiết kiệm này. Chúng tôi đã không thay đổi bất cứ điều gì. Dường như chúng tôi đã có một lĩnh vực đầu vào. Chúng tôi đang thiết lập một số thuộc tính, như chúng ta có thể làm một HTML. Đây là những điều đơn giản. Chúng ta không cần những. Nhưng chúng tôi đã có autocomplete tắt, mà cơ bản says-- bạn biết, khi bạn gõ những thứ vào web, đôi khi nó sẽ cố gắng để điền vào đó cho bạn. Vì vậy, đó là một điều tốt đẹp. Chúng tôi muốn tắt nó cho mục đích này. Đó là một quyết định CS50. Vì vậy, chúng ta có thể xóa nếu chúng ta muốn. Lấy nét tự động chỉ dính con trỏ trong các hình thức đúng ngay từ đầu. Một lần nữa, không phải là quá quan trọng. Nhưng name = "name" - đó là một chút khó khăn bởi vì tên của nó và tên. Nhưng chúng ta có thể đã thay đổi này đến cái gì khác. Và trên thực tế, đó là những gì chúng tôi sẽ làm ngay bây giờ. Chúng tôi sẽ nói "con người", mà là loại giống như tên nếu một người được xác định bởi tên của họ. Vì vậy, hãy đóng cửa này, mở lại lên trang web của chúng tôi vì máy chủ của chúng tôi vẫn còn đang chạy Apache 50, và chúng tôi sẽ nói, xin chào, đây là Elliot lại. Tại sao không? Chào bạn. Và nếu chúng ta lên đây, chúng ta sẽ thấy sau đó thay vì tên = Elliot, nó nói người = Elliot. Và đó là một kết quả trực tiếp của sự thật rằng chúng ta chỉ cần thay đổi tên = "người". Vì vậy, trong một yếu tố đầu vào của một hình thức HTML, trường tên là định danh cho tham số đó là được thông qua. Nó giống như nếu bạn đang tạo ra một chức năng "thêm" diễn trong hai số nguyên và bạn nói int a và int b. Đó sẽ là tên một, và nếu bạn muốn một hình thức khác, mà chúng ta có thể làm được chỉ bằng cách sao chép và dán, sau đó chúng ta sẽ có tên b. Vì vậy, bây giờ chúng ta sẽ có hai thông số đang được truyền qua đến được với các website-- tiếp theo các trang web tiếp theo, hello.php. Và chúng tôi thực sự có thể nhìn thấy rằng một lần nữa nếu chúng ta muốn. Đây là cách dễ nhất để đối phó với mã web trong IDE, về cơ bản. Bạn bắt đầu lên máy chủ, có được nó chạy, và sau đó mỗi khi bạn thực hiện một số thay đổi, chỉ cần đóng tập tin đó chỉ để được an toàn. Nhấn nút quay lại là một chút khôn lanh bởi vì nó có thể tải một đầu phiên bản, không phải là một cập nhật nhất. Và sau đó bạn chỉ cần nhấp chuột của bạn nút một lần nữa, pop up-- đúng oh, và hiện nay có hai dạng. Và như vậy, nếu chúng ta gõ một điều vào mỗi one-- "jason Hirshhorn," cho instance-- chúng ta nói xin chào. Chúng tôi nhìn lên các thông số của chúng tôi. Dường như chúng tôi đã có, như Dự kiến, a = jason và b = Hirshhorn, đại diện cho hai tham số rằng chúng tôi thông qua chức năng này. Vì vậy, bây giờ chúng ta thực sự có thể thực hiện chức năng đó mà chúng ta đã có trong P đặt 6. Vì vậy, ngay bây giờ chúng tôi chỉ vang vọng hello. Và đó không phải là rất hữu ích. Chúng tôi muốn để echo một số biến đã được thông qua với chúng tôi. Và chúng ta biết tên của biến này. Chúng tôi có một và chúng tôi có b. Vì vậy, chúng ta có thể chọn để echo một trong hai. Nhưng làm thế nào để chúng ta truy cập vào nó? Vâng, có một số biến toàn cầu trong PHP. Và tôi sẽ viết chúng trong ý kiến ​​ở đây. Hai cái quan trọng nhất là get và gửi cho mục đích của chúng ngay bây giờ. Đây là những mảng hoặc, về mặt kỹ thuật, các từ điển nơi biến của chúng tôi rằng chúng tôi đi qua các trang web trực tiếp. Và chúng ta sẽ sớm thấy làm thế nào để sử dụng chúng. Một lưu ý ngắn gọn về mã PHP và một số chi tiết cụ thể của it-- trong C, để khai báo một biến hoặc sử dụng các biến, đầu tiên bạn phải khai báo. Và những gì bạn phải làm khi bạn tuyên bố họ đã nói một int hoặc char b. Bạn phải khai báo các loại của các các biến trước khi bạn tạo ra nó. PHP-- bạn không cần phải làm được điều đó. PHP không yêu cầu kiểu của biến. Và cách mà bạn tạo ra một thay variable-- vì nói int, char, string-- mà thực sự là char *, như chúng ta know-- hơn là làm tất cả rằng, bởi vì mọi thứ là cùng loại, typeless, chúng ta có thể chỉ sử dụng một ký tự, là dấu $. Và bạn sẽ thấy nó đã được popping lên, mọi thứ autocomplete chút. Và nó nói rằng _GET và _POST là hai lựa chọn mà tôi có sẵn tới tôi. Một số những thứ khác là biến toàn cầu khác trong PHP là bạn sẽ được sử dụng trên quá trình thiết lập P 7. Còn bây giờ chúng ta sẽ tập trung vào get và bài. Nhưng đây là một hữu ích điều mà các IDE hiện mà một khi bạn đã gõ trong đó ký hiệu đô la, nó sẽ bắt đầu điền vào các biến toàn cầu hoặc các biến mà bạn đã xác định. Vì vậy, nếu bạn muốn xác định một biến gọi là "chuỗi" bạn chỉ có thể thiết lập nó bằng "hi". Và đó là cơ bản đơn giản như vậy. Và sau đó chúng ta có thể làm một cái gì đó giống như "echo $ string." Các IDE nên ném một số lỗi nếu tôi làm điều gì sai trái, vì vậy hy vọng tôi đang làm tất cả mọi thứ. Nhưng lỗi luôn luôn làm nảy sinh. Một điều khó khăn về PHP là nó không được biên dịch. Vì vậy, với chương trình C, bạn sẽ làm gì các thói quen hàng ngày of-- về cơ bản, bạn sẽ thực hiện chỉnh sửa để mã của bạn, bạn muốn lưu nó, và sau đó bạn sẽ làm cho nó, nơi mà make là các bước đó được gọi là trình biên dịch, Clang, để làm cho mã của bạn, văn bản này nộp, thành một file thực thi. PHP là C-như thế, nhưng nó thực hiện trên bay của trình duyệt web của bạn. Vì vậy, không có cách nào để biết. Thực hiện sẽ ném những lỗi hữu ích, phải không? Nó sẽ như thế nào, bạn không khai báo biến này trước khi bạn cố gắng sử dụng nó. Bạn đã làm tất cả segfault stuff-- xấu này, segfault, tất cả những loại lần vui vẻ mà đến với make. PHP là một con dao hai lưỡi bởi vì bạn sẽ không có được những sai sót, nhưng điều đó cũng có nghĩa là bạn sẽ không biết thực sự những gì đang xảy ra với chương trình của bạn nếu bạn chỉ cần chạy nó và nó không làm việc. Nhưng các trình gỡ lỗi nên chỉ ra một số ít những điều hy vọng hữu ích cú pháp mà bạn có thể sửa chữa. Vì vậy, bây giờ nếu chúng ta đi qua đối với: nói, chúng ta hãy đóng đó. Mở lại. Và chúng tôi trở lại đây. Vì vậy, chúng tôi đã có một biến và một biến b. Và điều này sẽ không thành vấn đề cuối cùng. Chúng tôi sẽ gọi họ h và g không có lý do cụ thể. Và chúng ta nói xin chào. Bây giờ có vẻ như chuỗi của chúng tôi "hi" thực sự là in ấn. Chúng tôi tạo ra một biến gọi là "chuỗi", thiết lập nó bằng "hi". Chú ý rằng chúng ta không phải làm malloc hoặc thực hiện một mảng ký tự. Trong PHP, vì biến là typeless, một chuỗi là giống như một char cho tất cả ý nghĩa và mục đích. Điều này có thể là "hi". Điều này có thể chỉ là những nhân vật k. Đây có thể là một số 1. Và nó không quan tâm. PHP không quan tâm các loại biến của bạn. Hoặc, nó chăm sóc. Nó quan tâm khi bạn cố gắng và làm việc với nó, nhưng nó không quan tâm trong các bước khai báo. Và cũng giống như bạn có thể trong C, bạn có thể khai báo chuỗi trên stack như thế này mặc dù nói "chồng" là một chút bit của một cái tên nhầm lẫn tiềm năng khi chúng ta đang nói về PHP. Nhưng chúng tôi không phải lo lắng về điều đó. Vì vậy, chúng tôi đã nhận chuỗi của chúng tôi "hi", và chúng tôi vang chuỗi. Vì vậy, bây giờ chúng tôi đã thảo luận về các biến. Vì vậy, bây giờ chúng ta cần nói chuyện về get và gửi và thực hiện các điều cuối cùng đó là cần thiết để thực sự trở lại này lên các chức năng của các thiết lập P 6. Vì vậy, ngay bây giờ chúng tôi vang vọng chuỗi, nhưng chúng tôi không có các biến này có được và sau. Và bởi vì chúng ta đang sử dụng phương pháp này có được, nó có vẻ tự nhiên mà biến của chúng tôi chúng tôi quan tâm, cả a và b, sẽ được đặt trong mảng hoặc từ điển, về mặt kỹ thuật được. Vì vậy, nếu chúng ta thiết lập được như thế này với groups-- bạn tôi ép nhập và nó không giống như it-- nhưng ở đây chúng tôi có nhận được. Và do đó, có đã tồn tại. Vì vậy, chúng tôi đã có thể bắt đầu truy cập một số các yếu tố của get. Nếu chúng tôi có được, cú pháp này cho mảng trong PHP là rất C-như. Chúng tôi có hai dấu ngoặc vuông của chúng tôi. Vì vậy, nếu chúng ta nói có được trong một bình thường mảng, chúng ta có thể truy cập chỉ số 0, chỉ số đầu tiên. PHP là chỉ số zero. Chúng ta có thể nói không, một, thứ two-- như thế này. Và tôi đã nói rằng có được là một kỹ thuật từ điển. Vì vậy, những gì PHP được làm dưới mui xe, đó là một chút đẹp hơn so với C, là nó đã được cho bạn một số chức năng từ điển, mà là bảng thực sự băm, hoặc cố gắng, được cho là. Hoặc công, kỹ thuật có thể là một thử là tốt. Tuy nhiên, PHP được thực hiện một bảng băm, là một bộ từ điển hiệu quả. Và vì vậy chúng tôi biết tên các biến của chúng ta, phải không? Nó đang được thông qua tại các chuỗi truy vấn bằng PHP. Chúng tôi có một = h và b = g ở đâu và b là tên của biến. Vì vậy, cách mà chúng ta có thể truy cập giá trị tương ứng với phím trong từ điển của chúng tôi là chỉ bằng cách nói _GET_GET ["a"]. Vì vậy, bây giờ chúng tôi có _GET ["a"]. Và nếu chúng ta chỉ cần thay thế bên trong tiếng vọng của chúng ta, nếu chúng ta vang _GET_GET ["a"] - và chúng ta sẽ thấy nếu các trình gỡ lỗi ném bất kỳ lỗi nào về this-- chúng ta sẽ tiết kiệm đó và đóng cửa này ra. Mở nó lên. Vì vậy, chúng ta chỉ cần làm một bên phải Hiện tại, do đó b không phải vấn đề. "cô" và "anh ấy" - "hum". "cô" và "hum". Âm thanh tốt. Và nó được in ra "cô ấy", mà là điên. Nhưng đó là chính xác những gì đã xảy ra ở P đặt 6. Về cơ bản, những gì P đặt 6 là doing-- echo hello, name-- nơi nó đã có một Tên biến và nó chỉ yêu cầu bạn gõ vào đó chút của văn bản. Cũng có một số thêm mã nơi nó bao gồm nếu báo cáo, mà chúng ta có thể làm ngay bây giờ. Chúng ta có thể nói rằng nếu tồn tại, mà là một chức năng trong PHP, _GET Với gạch dưới, "tên" - mà về cơ bản nói, "nếu tên đã bị lấp" bởi vì chúng ta có thể chỉ cần nhấp vào nút phải gửi biểu mẫu mà không gõ bất cứ điều gì vào lĩnh vực đó. Và chúng tôi bọc rằng trong chúng tôi dấu ngoặc nhọn thân thiện. Chúng tôi có thể có một tuyên bố khác. Và đó là tất cả trong góc PHP khung, dấu hỏi, khung góc, nếu bạn sẽ. Và bây giờ chúng ta sẽ thấy nếu các công trình này. Tôi tiếp tục chờ đợi cho nó để gỡ lỗi và crap ra về tôi, về cơ bản, nhưng điều này chưa. Có lẽ nó sẽ bây giờ vì tôi đã nói. Yup. Nó đã làm, trong thực tế. Vì vậy, không có gì được hiển thị lên. Đó là bởi vì một cái gì đó sai mà tôi đã viết trong mã PHP. Và tôi đã đề cập việc gỡ lỗi là khó khăn bởi vì trong PHP, chúng tôi không biên dịch nó trước và trình biên dịch đã không thích, đây là nơi mà các lỗi của bạn. Nhưng những gì chúng ta có thể làm is-- làm mọi người nhớ làm thế nào để nhìn vào các mạng khác nhau yêu cầu rằng PHP-- hay rằng các trang web gửi? [? Malin?] Đã làm điều này trong giảng dạy một hoặc hai lần. Bạn hãy nhớ nơi chúng tôi đi tìm các khoản nợ khác nhau và 200 OKS, tất cả các mã số đó đang được gửi thông qua HTTP từ trang web vào trang web? Có ai nhớ nơi chúng tôi đi để làm điều đó? Đung Page Source. SAM LEVATICH: trang nguồn. Đúng như vậy. Nếu bạn đi đến trang Source-- hoàn hảo. Vì vậy Page Source kéo lên thanh tra. Và tôi đang sử dụng Safari. Rất nhiều bạn có thể sẽ được sử dụng Chrome hoặc Firefox. Nhưng miễn là bạn trong bất kỳ browser-- hiện đại và cảm thấy tự do để làm theo cùng, nếu bạn muốn. Bạn có thể gõ lên mã này hoặc chỉ cần nhìn vào trong tập hợp P 6 thư mục cho một số công cụ tương tự. hello.php là những gì chúng tôi hiện đang làm việc trên mô phỏng. Vì vậy, có một loạt các tab. Chúng ta có thể nhìn vào tất cả các tài nguyên. Chúng ta có thể xem mã nguồn. Vì vậy, có vẻ như nó đã làm không có được cơ thể qua cuối cùng. Nó tìm thấy một lỗi trong PHP và nó dừng tải trang web toàn. Chúng tôi thậm chí không có một kết thúc tag HTML hoặc bất cứ điều gì. Và nếu chúng ta nhìn vào mạng, chúng ta có thể thấy rằng chúng tôi đang được gửi một yêu cầu. Đây là tên miền. Đây là địa chỉ. Đó là một tài liệu. Chúng tôi đang sử dụng phương thức get. Và đó là màu đỏ. Hoặc, nó đã đỏ khi tôi đã không chọn nó. Làm thế nào để bỏ chọn nó? Vâng, đó là màu đỏ. Hãy để tôi làm mới. Có nó là. Bây giờ đó là màu đỏ. Vì vậy, đó là màu đỏ, có nghĩa là nó đã thất bại, mà là xấu. Vì vậy, chúng ta hãy xét xem tại sao nó đã thất bại. Vì vậy, tất cả những Page Source có thể về cơ bản nói với bạn của bạn là gì đã không làm việc, mà chúng tôi đã có thể nhìn thấy. Vì vậy, lý tưởng vẫn sẽ là một công cụ hữu ích hơn. Và có một số phần mở rộng trình duyệt cho phép bạn gỡ lỗi PHP, nhưng chúng tôi sẽ không được viết một tấn của PHP, nên nó có lẽ chỉ tốt nhất để xem xét thông qua mã của bạn cẩn thận và chỉ cần đảm bảo rằng nó không phải làm bất cứ điều gì khác. Vì vậy, chúng ta hãy xem các định dạng này nếu tuyên bố là nơi mà vấn đề là. Tôi muốn tải mà lại lên đây. Xin chào, hi. Vì vậy, có một vấn đề đó. Vì vậy, cho đúng cú pháp của PHP, PHP sẽ là C-như trong đó bạn sẽ thấy các vòng. Bạn sẽ thấy nếu báo cáo. Bạn sẽ thấy tất cả những người bạn rằng bạn đã trở nên quen thuộc với hơn khóa học của học kỳ CS50 này. Nhưng cách tốt nhất để tìm hiểu làm thế nào để làm một cái gì đó trong PHP là để Google nó hoặc xem xét một số ví dụ về các mã PHP bởi vì bạn biết các chức năng. Bạn biết những gì bạn có thể làm với chương trình. Bạn có thể lặp. Bạn có thể lặp nhiều lần như bạn muốn. Bạn có thể lặp trong tất cả các loại cách khác nhau. Bạn có thể tạo các chức năng. Bạn có thể tạo ra các chức năng mà gọi các chức năng khác, các chức năng mà tự gọi mình. Và bạn có tên cho các khái niệm này. Bạn đã có đệ quy, vòng, nếu, luồng điều khiển khác. Và do đó, Google là người bạn tốt nhất của bạn. Thậm chí nói, "nếu PHP tuyên bố "và có sẽ thấy được tấn của bài viết với câu trả lời cho người khác người đã có câu hỏi tương tự như bạn, người chỉ đang bắt đầu với PHP và tò mò về một điều cú pháp. Bởi vì chúng tôi có sự sang trọng của việc có thể nhìn vào các mã trong tập P 6, chúng tôi thực sự kéo nó lên và thấy rằng OK, đây là một cái gì đó thú vị. Vì vậy, đây là những gì nó thực sự trông giống như trong P đặt 6. Vì vậy, nếu chúng ta đi qua này, chúng ta có thể thấy rằng chúng tôi đã có một số ít trong số này Bit dấu hỏi PHP-như. Và không có dấu ngoặc nhọn. Có dấu hai chấm. Và có rất xoăn niềng răng trong PHP, nhưng điều này là một định dạng và một cách làm PHP hoạt động tốt với HTML vì như bạn sẽ thấy, chúng ta đang đóng cửa tắt các PHP bits-- các elses và IFS và tất cả các that-- và sau đó chúng tôi đang xen HTML bên trong chúng trong khi vẫn hành dòng điều khiển được đặt ra bởi PHP. Vì vậy, tôi chỉ cần đi tới đi bộ nhanh chóng thông qua này bởi vì nó là rất nhiều cùng khái niệm mà chúng tôi đã làm trước đây. Chúng tôi đã có nếu không có sản phẩm nào, ngoặc, _GET_GET ["name"]. Đây là tất cả những thứ tương tự. Chúng tôi đang sử dụng từ điển _GET rằng PHP sẽ gửi theo yêu cầu của các hình thức, bởi vì nó là các thông số của hành động, và phương pháp này là có được. Và sau đó kết thúc mà. Đại tràng là một signifier để chỉ làm điều này nếu câu lệnh if để đánh giá đúng. Nó giống như một cú đúp xoăn. Và trên thực tế, nó là một nẹp xoăn trong các ngôn ngữ khác như Python, mà bạn có thể gặp phải nếu bạn chỉ làm điều đó cho dự án cuối cùng của bạn. Và sau đó dòng này, xin chào. Sau đó, chúng tôi đã có điều kỳ lạ này. Chúng tôi đã có dấu ngoặc hơn. Không có HTTP there-- hoặc PHP, xin lỗi. Nhưng có một dấu bằng. Và sau đó chúng tôi có một chức năng, htmlspecialchars (_GEThtmlspecialchars (_GET ["name"]). Đây là loại giống như một hơn phiên bản tiên tiến của echo. Giống như chúng ta đã vang lên như là một cách để in ra những thứ trong PHP. Đây là một chức năng mà định nghĩa trong PHP sẽ đối phó với một số khó chịu hơn nhân vật và các giá trị byte rằng bạn có thể vượt qua nó. Nó luôn luôn là an toàn nhất để sử dụng. Nhưng tiếng vang sẽ làm công việc chỉ tốt nếu chúng ta không đối phó với bất cứ điều gì quá khó chịu. Và vì vậy điều này có cùng hiệu ứng về cơ bản, công cụ này trong giữa câu hỏi dấu được đánh giá bằng PHP. htmlspecialchars trả về một HTML đẹp giá trị in của _GET_GET ["name"], nghĩa là bất cứ điều gì chúng tôi đã nhập vào biểu mẫu. Và sau đó nó sẽ nói hello, dấu phẩy không gian, và sau đó đó. Đó là điều hoàn toàn giữa các dấu ngoặc nhọn sẽ được thay thế bởi bất cứ điều gì htmlspecialchars đặt ra. Vì vậy, đó là cơ bản tương tự với những gì chúng tôi đang làm. Và chúng ta có một tuyên bố khác đó là hello thế giới, có ý nghĩa. Vì vậy, bây giờ chúng ta hãy quay trở lại của chúng tôi mã và xem exactly-- oh. Tôi nói tồn tại, mà không phải là một điều mà chúng tôi muốn làm. Chúng tôi muốn nói không có sản phẩm nào. Và vì thế này nên làm việc một chút bit tốt hơn, không có sản phẩm nào _GET_GET ["name"]. Và đó là cú đúp xoăn phù hợp mà ngoặc móc. Chúng tôi đã có dấu ngoặc nhọn của chúng tôi ở đây. echo hello _GET ["name"]. Hãy xem nếu điều này làm việc tốt hơn một chút. Chúng tôi vẫn đang chạy máy chủ của chúng tôi. Xin chào Jason. Xin chào Jason. Và nó đã làm việc lần này. Và đó là một bằng chứng mà bạn có thể thực sự sử dụng các dấu ngoặc nhọn mà bạn biết và tình yêu trong mã PHP trong HTML. Các mã PHP cung cấp cho bạn trong pset 6-- pset 6-- cung cấp một cách khác làm điều đó cùng một điều. Vì vậy, bây giờ chúng tôi có quyền lực. Chúng tôi có các chức năng để thực hiện mã PHP mà chúng ta đã thấy trong pset 6 bởi chính chúng ta, về cơ bản. Trước khi tiếp tục, một số là những gì câu hỏi mà bạn có vào thời điểm này? Có [không nghe được]. Đung Vì vậy, trong các phiên bản trong pset6, khi bạn chạy nó, có một không gian. Và tôi có thể nhìn thấy nơi các không gian sau dấu phẩy. [Không nghe thấy] bắt đầu khung mở. Làm thế nào để bạn kết hợp các không gian trong cách bạn viết mã của riêng bạn? SPEAKER: Đó là một câu hỏi hay. Và như vậy chúng ta hãy hiểu rằng con số. Vì vậy, đó là một câu hỏi thực sự tốt và một trong đó tôi đã không xem xét. Nhưng chúng ta hãy làm điều đó với nhau. Vì vậy, trước hết, những gì Tôi đang làm với echo là khi chúng tôi chỉ vang hello, nó ra chào. Nếu chúng ta vang vọng bây giờ điều này có được trên một riêng biệt dòng, chúng ta hãy xem xét những gì sẽ xảy ra. Vì vậy, chúng ta click này. Chúng tôi tiếp tục nói, hi Jason. Vì vậy, một lần nữa, chúng tôi không có không gian này. Và đó là bởi vì, trong PHP, khi chúng tôi đã tạo tiếng vang, không có vấn đề bao nhiêu spaces-- nope, không phải là V-- dù có bao nhiêu không gian chúng ta đưa vào here-- nếu bây giờ chúng ta tải lên đó một lần nữa, hi Jason. Yeah, thấy, tất cả những không gian đã ăn lên. Và đó là một cái gì đó mà chức năng tiếng vang nào. Vì vậy, để chăm sóc không gian đó, và điều này là một trong những lý do tại sao bạn không sử dụng echo và bạn sử dụng htmlspecialchars thay thế. Tôi tò mò những gì sẽ xảy ra nếu chúng tôi đã làm điều này nơi chúng tôi gửi kèm theo một không gian trong một chuỗi. Tôi thành thật không chắc chắn những gì sẽ xảy ra khi tôi làm điều này. Vì vậy, đó là một cách. Đó là một cách để chăm sóc nó. Nếu bạn quấn các không gian trong một chuỗi, sau đó không gian sẽ được sản xuất độc đáo của echo. Điều an toàn nhất để làm là làm htmlspecialchars. Đó là luôn luôn đặt cược an toàn. Nhưng bây giờ chúng ta có một cách để làm nó với echo nếu cần thiết. Và theo một cách tương tự, chúng ta có thể tiếng vang dòng mới, tất cả các loại thứ bạn quen làm trong PHP. Bất cứ ai khác, những gì là bất kỳ chi tiết câu hỏi mà người khác có vào thời điểm này về PHP? Nếu người đến muộn một chút, Tôi đang hạnh phúc ở lại sau một chút và nói về một số đầu. Và nó cũng có tất cả livestreamed, và lưu trữ, mà là điên. Dù sao, vì vậy bây giờ chúng ta hãy làm một số cụ cao cấp hơn với PHP. Và một trong những điều đầu tiên bạn đã được giới thiệu trong C là cho vòng lặp. Và PHP có một mạnh mẽ hơn cho vòng lặp được gọi là vòng lặp foreach. Và có vẻ như this-- cho mỗi trống như trống, dấu ngoặc nhọn, làm điều. Vì vậy, đây là cơ bản một cách viết tắt. Xem, vòng lặp for như một xây dựng cú pháp được đưa ra trong C và lắp ráp ngôn ngữ và những thứ thích. Nghĩ ra trong C, chính xác, như một cách viết tắt cho rất nhiều các loại vòng rằng mọi người sẽ thấy. Giống như khi bạn viết một vòng lặp, có thường một bước khởi tạo thực hiện ngay từ đầu, một điều kiện nơi vòng lặp sẽ stop-- và đó là tính năng đó là chỉ trong vòng một thời gian, hay rằng một khi có chính xác Chỉ là feature-- và sau đó một bước incrementation ở cuối. Và vì vậy bạn nên thường tìm thấy chính mình viết code như sau. Tôi sẽ xóa đi những vùng này. Nhưng nếu chúng ta lặp qua nhân vật trong một mảng, Ví dụ, như chúng tôi đã có một mảng ký tự. Xin lỗi để mang lại C. Tôi biết, bạn nghĩ rằng bạn đã thực hiện. Nhưng nó chỉ cho mục đích của việc học PHP, tôi hứa. Vì vậy, nếu bạn có một char str chiều dài 8, và chúng ta hãy nói nó nói hellooo với một null dấu. Tuyệt vời, vì vậy đó là chuỗi của chúng tôi. Và sau đó chúng tôi đã có một vòng lặp for. Chúng tôi có int i bằng 0. Và chúng tôi muốn thoát ra khi str của tôi bằng không bằng null, bởi vì chúng ta thoát ra khi nó bằng null. Và sau đó chúng tôi làm i ++ tại mỗi điểm trong vòng lặp for. Làm gì đó với str của tôi. Vì vậy, các công thức cơ bản là, chúng tôi đã có mảng này mà chúng ta muốn để điều trị các yếu tố riêng biệt. Nhưng những gì chúng tôi phải làm là chúng ta phải về cơ bản tạo ra một số nguyên riêng biệt biến đó được đếm lên mỗi Hiện chúng tôi đã đi qua vòng lặp. Và sau đó chúng tôi sẽ phải sau đó gọi strstr [i] khi những gì chúng ta thực sự muốn làm chỉ được đi nhân vật của nhân vật, phải không? Chúng tôi không muốn để tăng một số nguyên và sau đó sử dụng số nguyên để truy cập vào từng nhân vật riêng lẻ. Chúng tôi thực sự muốn nhân vật của nhân vật. Và do đó, cho mỗi một cách thông minh tính toán đó cho chúng ta. Nếu chúng ta có một mảng, mà chúng ta có thể khai báo trong PHP như just-- nếu chúng ta có một biến gọi, hãy gọi nó là mảng. Các phép lạ của không đánh máy, nó giống như bất kỳ biến khác. Nó chỉ là một mảng. Và chúng tôi có một chút [Không nghe thấy] như 1, 2, 3, chỉ là một loại mảng khởi tạo. Đó là OK, nó không giống như foreach của tôi. Nhưng nếu chúng ta thực sự foreach-- Tôi đã đánh một chút sai. Có hai cách để làm một vòng lặp foreach. Có cú pháp trong và như cú pháp. Và chúng tôi đang đi làm trong cú pháp đầu tiên, không phải là. Đó là sai lầm của tôi. Num Vì vậy foreach trong mảng, echo num. Và PHP được la hét tôi đối với một số lý do. Nó tìm kiếm một bất ngờ ở trong một cái gì đó, đó là một chút của một bận tâm. Nhưng chúng ta sẽ tìm ra tại sao đó là trong một thời điểm. Vì vậy, không phải như thế. Hãy thử sử dụng như. Nó thích như cú pháp là vẻ. Vì vậy, chúng ta hãy làm mảng foreach như num. Vì vậy, giải thích một chút về những gì vừa xảy ra là như cú pháp được saying-- giếng đầu tiên, chúng ta hãy nhìn vào những gì này in ra. Vì vậy, chúng tôi mở ra IDE của chúng tôi. Chúng tôi đi đây. Chúng ta nói, Hello Jason. Và nó đã làm 123, đó là những nội dung của mảng mà chúng ta đã tạo lên hàng đầu. Vì vậy, lặn vào trong vòng lặp foreach này, chúng tôi có một mảng biến gọi là đó là một mảng của ba con số. Và sau đó chúng tôi đang làm foreach mảng như num, echo num. Và đó là nhiều trực quan hơn một cho lop. Chúng ta đang nói, điều trị mỗi những điều trong các mảng như num, Tôi muốn bạn để cho tôi num. Và đó là chính xác những gì nó làm. PHP được tính toán rằng khi bạn nói mảng foreach, và bạn đang làm việc với một mảng, những gì bạn sẽ muốn lặp trên là các nhân vật trong mảng đó, là ints trong mảng đó, là các yếu tố trong mảng đó. Và nó cho phép bạn lưu trữ các biến như num, và sau đó chỉ cần ra num ngay lập tức thay vì nói: Tôi có một biến gọi là i, và sau đó tôi muốn đầu ra strstr [i]. Và do đó cho phép chúng ta làm những điều mát mẻ. Giống như về cơ bản chúng ta không cần phải tạo ra các biến này như tôi và làm tất cả thứ incrementation này ở cuối. PHP sẽ chăm sóc của tất cả các điều đó cho bạn. Vì vậy, bây giờ hãy nói về foreach như nó áp dụng cho từ điển của chúng tôi _GET. Vì vậy, chúng tôi sẽ bình luận này ra một cách nhanh chóng. Vì vậy, chúng ta có mảng _GET của chúng tôi. Chúng tôi có biến này. Và nó có một số công cụ trong đó. Ngay bây giờ, chúng tôi chỉ có một biến được truyền cho nó, mà là tên. Nhưng nếu chúng ta nhấn Enter, bây giờ chúng ta có thể có hai biến. Chúng tôi có thể có tên và tuổi tác, ví dụ, nếu chúng ta muốn có được tuổi và cũng tên của một người, hoạt kê đủ. Vì vậy bây giờ _GET là có được một từ điển với hai yếu tố, với hai cặp giá trị quan trọng. Và key-- đầu tiên tôi sẽ viết này lên trên diễn đàn quá. Chúng tôi có từ điển của chúng tôi là _GET. Xin lỗi, nó là một chút khó khăn để xem. Nhưng bên trong từ điển của chúng tôi, chúng tôi có tên, mà là có được một cái gì đó rằng chúng tôi đang đưa ra. Và chúng ta sẽ có tuổi, đó cũng là sẽ là một cái gì đó mà chúng ta đang đưa ra. Và đây là toàn bộ của từ điển của chúng tôi. Vì vậy, nó có hai yếu tố trong đó. Và như vậy bởi vì foreach vòng là thông minh, chúng tôi có thể suy nghĩ, và chính xác có thể nghĩ rằng foreach có thể lặp qua này từ điển, in ra các giá trị được đưa ra bởi tên và tuổi. Vì vậy, hãy thực hiện điều đó. Hãy xây dựng một vòng lặp foreach. Và chúng ta sẽ làm cho _GET như. Và chúng ta sẽ làm như sau. Vì vậy, chúng ta hãy xem những gì sẽ xảy ra nếu chúng ta gõ chỉ từ, và sau đó nói lời echo. Chúng tôi cũng sẽ echo một dòng mới chỉ để làm cho nó một ít rõ ràng hơn, những gì đang xảy ra. Vì vậy, chúng ta hãy xem. Nó không cho tôi bất kỳ lỗi nào. Và chúng tôi sẽ đóng cửa này. Trên trang web của chúng tôi, bạn sẽ được làm rất nhiều rằng trong quá trình pset7. Vì vậy, chúng tôi nói tên tôi là Sam. Tuổi của tôi là 45. Nó không phải. Nhưng nó in ra, như mong đợi, Sam 45. Và do đó, bạn sẽ nhận thấy rằng những vòng lặp foreach did-- đây, chúng ta hãy trở lại đó để nó trên board-- chúng tôi nhận _GET như lời. Và có bốn điều trong _GET. Nhưng nó chỉ in ra hai điều. foreach, được tự mình thông minh, giả định rằng những gì chúng ta thực sự muốn là các giá trị, không phải là chìa khóa. Nhưng có một cách mà chúng ta có thể in ra các phím là tốt, nếu chúng ta muốn. Nếu chúng ta muốn cũng phải biết những gì các biến này được gọi là, có một cách mà chúng ta có thể truy cập này là tốt. Và cách để loại làm điều đó, vì vậy chúng tôi có thể nói, cho phép thực sự chia nó thành các cặp giá trị quan trọng. Vì vậy, chúng ta hãy xem những gì sẽ xảy ra bây giờ. Vì vậy, chúng ta có chìa khóa. Chúng tôi có giá trị. Chúng tôi có một mới dòng cho dễ đọc. Và chúng ta hãy xem những gì sẽ xảy ra khi chúng ta làm điều này bây giờ. Tôi không biết làm thế nào cũ là Jason. Jason của 15. Vì vậy, chúng tôi có tên Jason, 15 tuổi. Vì vậy, chúng tôi đã có thể truy cập các phím và cặp giá trị của từ điển này chỉ bằng cách nói điểm then chốt đối với giá trị. Và đó là một cú pháp foreach chút đường cho phép bạn truy cập vào những thứ có trong từ điển. Vì vậy, hy vọng loại này nhấn mạnh sức mạnh của các vòng lặp foreach. Bạn có khá nhiều ném bất cứ điều gì mà có vẻ iterable, giống như bất cứ điều gì mà có nhiều các yếu tố như một mảng, như một dictionary-- những người là hai điều chính bạn sẽ được làm việc với cả trong cuộc sống và trong pset 7. Vì vậy, bạn có thể ném những thứ đó vào nó, và nó sẽ tìm ra những gì bạn muốn làm gì với nó. Nó sẽ nói, OK, tôi sẽ có được những việc này từ các dữ liệu mà đã được chuyền đến tay tôi. Và đó là một cái gì đó mà bạn sẽ được sử dụng rất nhiều trong pset 7. Tôi sẽ nhanh chóng cuộn xuống chỉ để xem nơi tôi đang ở. Người dân có câu hỏi vào thời điểm này? Câu hỏi ở tất cả? Vâng? Đung Vì vậy, với những khoá và giá trị bạn có thể đặt tên cho nó bất cứ điều gì khác và nó vẫn sẽ làm việc? SPEAKER: Oops. Wow, tôi hoàn toàn bị xóa toàn bộ dòng. Great làm việc. Vì vậy, một, một. Key và giá trị chỉ là một quy ước. Nó rất hữu ích. Bạn sẽ nhận được một số thiết kế điểm, có thể một số điểm phong cách để làm điều đó bởi vì nó thực sự truyền tải được ý định. Nhưng chúng ta nói a và yarp. Đung Bạn không cần phải thay đổi bất cứ điều gì trong tập tin HTML để phản ánh điều đó? SPEAKER: Không phải ở tất cả. Đung Và nó chỉ biết rằng vì bằng than-- lớn hơn SPEAKER: Yes. Đung chỉ --that rằng that's-- SPEAKER: Yes. Đó là một cú pháp foreach, nhưng đúng. Đung Không có loại. Vì vậy, những gì nếu bạn muốn tuổi chỉ là một con số? Có cách nào để làm điều đó? SPEAKER: Có nhiều cách để kiểm tra xem biến phù hợp với một số loại. Vì vậy, PHP hỏi nhiều hơn một chút từ bạn bởi vì không có loại trong. Một số cách nó yêu cầu ít hơn. Trong một số cách nó yêu cầu nhiều hơn. Bởi vì nếu bạn có chỉ một cái gì đó trong một biến, bạn không có ý tưởng những gì loại nó được. Nhưng nếu bạn là thông minh về các biến mà bạn chỉ định kiểu cho và chắc chắn có chức năng chỉ return-- bạn muốn chức năng để chỉ trở lại một loại giá trị như vậy mà bạn có thể cơ bản mong rằng các biến bạn trở lại từ một chức năng sẽ là loại mà bạn nghĩ rằng nó sẽ được, về cơ bản. Nhưng có một số phương pháp do đó bạn có thể kiểm tra. Tôi không nhớ chúng ra khỏi đỉnh đầu của tôi. Tôi đang chờ đợi cho nó để chuyển sang màu xanh. isint? isstr? Có nhiều phương pháp được xây dựng vào PHP mà có thể kiểm tra các loại biến cho bạn. Nhưng nếu bạn gán biến thông minh, bạn không nên phải làm điều đó quá nhiều trong pset 7. Nhưng các phương pháp đó không tồn tại. Và đó là một cái gì đó mà là bằng ngôn ngữ riêng của mình. Và tôi không nhớ cú pháp chính xác. Chúng tôi thậm chí có thể nhìn nó lên. Nhưng thời gian là điều cốt yếu. Có ai khác có có bất kỳ câu hỏi nhiều hơn? Vâng. Đung Tôi chỉ có một nhiều hơn. Vì vậy, bạn đề cập đến các phương thức GET, nhưng bạn không đề cập đến các phương thức POST. Có phải chúng ta quay trở lại với điều đó? SPEAKER: Vâng, chúng tôi sẽ được trở lại đó. Đó chính xác là những gì tôi đang tìm kiếm vào điện thoại của tôi, mà bây giờ đã ngủ, nhưng tôi sẽ tìm thấy nó. Chỉ cần đảm bảo rằng chúng tôi nhấn tất cả các ghi chú PHP. Yep, không có phiên bản sửa lỗi. Có, chúng tôi có một vài điều nữa mà chúng tôi muốn làm bây giờ vào thời điểm này. Vì vậy, nói về POST, mà bạn đã đề cập, sự khác biệt duy nhất giữa GET và POST là mà nhớ khi chúng ta nhìn tại URL này và chúng ta đã thấy, oh, Tên bằng a và tuổi bằng yarp là đúng trong các URL đó cho chúng ta. POST là bí mật nhiều hơn một chút với thông qua quyết định của thông tin. Vì vậy, nếu bạn không muốn người dùng cho biết, ví dụ, bạn không muốn tên người dùng và mật khẩu của người hiện đang đăng nhập để được hiển thị trong URL, đó là một điều hợp lý không muốn trong URL, vì một người nào đó có thể nhìn thấy nó. Nếu họ liên kết một người nào đó đến một trang, bạn không muốn URL của họ dán ở đó, vì đó sẽ cho phép mọi người đăng nhập chỉ với dán các URL thay vì của thực tế việc điền vào một mẫu đơn. POST là một chút bí mật hơn. Và điều duy nhất mà chúng tôi sẽ phải thay đổi là phương pháp này, thay đổi từ nhận được để gửi. Và sau đó bên trong HTTP, thay vì truy cập vào các mảng _GET, chúng ta sẽ truy cập vào các mảng _POST. Và chúng ta sẽ nhận thấy rằng, nếu chúng tôi mở lại này lên một lần nữa, Jason từ từ giảm đi tuổi. tên Jason, 14 tuổi. Các công cụ tương bật lên. Nhưng chúng tôi đi đến URL và các biến là không có. Và cách mà POST passes-- nên nhớ làm thế nào để nhìn vào mã nguồn của một trang. Chúng tôi đi vào mạng. Chúng tôi làm mới. Và đây là một điều mà POST sẽ cung cấp cho bạn những cảnh báo về. Bạn có thể đã thấy một cái hộp, một văn bản hộp như thế này trong trình duyệt của bạn. Bạn có chắc chắn bạn muốn để gửi một mẫu một lần nữa? POST là những gì đang gửi những hình thức. Bởi vì về cơ bản nếu bạn gửi của bạn thông tin thẻ tín dụng với một ai đó, đó không phải đi để hiển thị trong URL. Đó sẽ là một yêu cầu POST. Vì vậy, khi bạn làm mới trang, nó gửi lại rằng yêu cầu của bài. Vì vậy, bây giờ chúng tôi muốn gửi hình thành một lần nữa bởi vì nó không phải đi để tạo ra bất kỳ mua hàng trùng lặp. Và chúng ta sẽ nhận thấy rằng ở đây, phương pháp chúng tôi đang sử dụng là POST. Và nó đã thực sự chuyển byte. Nó chuyển 401 của họ. Của chương trình khá nhỏ. Nhưng có nơi nào mà chúng ta có thể nhìn thấy các giá trị được được thông qua. Các trang web có thể tự mình nhìn thấy, nhưng chúng tôi như người dùng không thể nhìn thấy, trừ khi bạn là một hacker. Nếu bạn là một hacker tốt, bạn có thể nhìn. Nếu bạn biết cơ bản định dạng của HTML, các giá trị sẽ làm cho mình được biết trong các trang. Bạn sẽ có thể nhìn thấy. Các giá trị sẽ có mặt ở đó, họ chỉ là một chút ít rõ ràng hơn cho bạn để truy cập, về cơ bản. Do chúng tôi có bất kỳ chi tiết câu hỏi về GET, POST before-- những gì chúng ta sẽ làm gì tiếp theo đang thực sự nhìn vào một số mã rằng bạn đang đưa ra trong pset 7, nói về cách nó sử dụng một số khái niệm, và nói về những điều mà bạn đang đi phải làm một chút trong pset 7. Bất kỳ câu hỏi nhiều hơn trước đó? Nhiều câu hỏi các bạn có? Thật tuyệt. Được rồi, chúng ta hãy nhìn một chút tại pset 7, không có nghi ngờ gì bạn đang có tất cả vui mừng nhất. Ý tôi là, đây là một cái gì đó David đi qua một chút. Nhưng chúng tôi sẽ có ba thư mục ở hàng đầu, cũng như một tập tin cấu hình. Đó là cơ sở dữ liệu cho, mà chúng tôi sẽ nói về trong khoảng năm phút. Bao gồm, bạn không bao giờ cần tìm trong thư mục này nếu bạn không muốn nhưng nó là tốt đẹp để biết có tất cả các loại của người trợ giúp. Helpers là như chức năng hữu ích. Và sau đó chúng tôi có cấu hình, trong đó đặt một số thứ lên. Có một số chức năng mà có CS50 văn bản có trong helper và config. Và một số các PHP đã thoát ra trong các tập tin sẽ làm rất nhiều loại hơn công việc chân của tù cho bạn. Cũng giống như nếu chúng ta đi vào công cộng login.php, đó là những gì hiện lên ngay khi bạn đi vào pset 7. Chúng ta sẽ thấy rằng có này yêu cầu tuyên bố. Và đó là loại giống như một sắc nét bao gồm, hashtag bao gồm nếu bạn là của một thế hệ mới hơn. Nhưng về cơ bản này nói rằng tôi cần phải truy cập cho tất cả các chức năng trong config.php. Và bạn có thể có một yêu cầu cho tất cả các loại vật khác. cấu hình thực sự đòi hỏi người trợ giúp. Vì vậy, bất cứ khi nào bạn cần config, bạn cũng bao gồm hoặc yêu cầu người giúp việc tốt. Vì vậy, cung cấp cho bạn truy cập vào tất cả các chức năng mát mà chúng ta đang sử dụng, những điều muốn làm. Tôi thực sự sẽ dễ dàng này xuống một chút. Vì vậy, các chức năng sau đó chúng tôi sẽ đi bộ qua ngay trước khi chúng ta chuyển đến SQL một chút bit là chức năng login.php, chỉ bởi vì nó sử dụng một số các chủ đề mà chúng ta vừa nói đến trong PHP. Bạn thấy điều đầu tiên là nếu $ _SERVER. Đây là một biến toàn cầu bạn sẽ được xử lý. Nó giống như _GET và _POST, nhưng những gì máy chủ chứa là điều này có thể cho bạn biết nếu phương thức yêu cầu là một GET hoặc POST. Giống như trước đây những gì chúng tôi đã làm chỉ là trong mã của chúng tôi mà chúng tôi đã viết, chúng tôi chỉ thay đổi nó là GET và POST phụ thuộc vào những gì mà HTML có. Nhưng có những trang mà có thể truy cập với cả hai kiểu yêu cầu. Và bạn có thể muốn làm những thứ khác nhau tùy thuộc vào loại yêu cầu, chỉ đăng nhập như nào. Vì vậy, bạn có thể kiểm tra yêu cầu đó phương pháp truy cập thông qua các phím, thông qua sử dụng một chìa khóa và nhận được giá trị của một cái gì đó có trong từ điển _SERVER. Vì vậy, đó là một toàn cầu biến như thế _GET và _POST. Nếu nó GET, chúng tôi muốn làm cho các mẫu đăng nhập. Render là một chức năng mà về cơ bản chỉ đặt lên thích hợp HTML và vượt qua nó một số thông số. Tiêu đề này là một tham số đó là được sử dụng trong việc hiển thị, kỳ quặc đủ, tiêu đề của trang trong câu hỏi, các điều lên đây, nói hoặc hello trong ví dụ trước. Bây giờ chúng tôi có một điều khác nhau. Khác nếu đó là POST, chúng tôi làm một số công cụ khác. Chúng tôi đang sử dụng là phương pháp có sản phẩm nào. Nó không tồn tại, nó trống. Và chúng ta đã thấy trước đây, PHP có một số tiền hợp lý của xây dựng trong phương pháp mà David will-- nếu có là phương pháp hữu ích cho bạn, họ sẽ được thông báo cho bạn trong bộ qua rằng David cho qua tổng kết bắt đầu, và cũng bit hữu ích của Zamyla. Cô trở lại tất cả mọi người. Tất cả chúng ta có thể vui mừng. xin lỗi là một chức năng có tên là aptly mà về cơ bản chỉ in ra một số thông báo lỗi, vì CS50 là rất lịch sự. Và bây giờ điều này, đây là một hơi khó khăn vì đây là nơi mà chúng ta đang truy vấn cơ sở dữ liệu. Bây giờ chúng tôi đã không nói về cơ sở dữ liệu. Và chúng ta sẽ ở bên cạnh năm phút hoặc lâu hơn, tối đa. Nhưng đây là một chức năng CS50 đã viết để có được một bảng cơ sở dữ liệu cơ bản từ một rằng chúng tôi đang làm việc với trong pset 7. Tôi thực sự xấu với tôi không lập chỉ mục ngày nay. Nhưng có, đó là 7. Vì vậy, truy vấn nó sẽ trả lại một mảng, về cơ bản là các bit. Và bởi vì những điều này không có đánh máy, do đó hàng là một mảng của mảng. Bởi vì khi chúng ta nghĩ về một bảng, những gì chúng tôi đang đi làm là, như bạn đã học được trong psets giống như các trò chơi của 15, anyway nơi bạn phải sử dụng một mảng hai, chúng tôi về cơ bản có mảng khác mảng làm cho một bảng. Và bạn đã có hàng và cột. Và sau đó bạn có thể truy cập chúng như [0] [1], bạn sẽ có được [0] [1]. Nội dung cơ bản như thế. Vì vậy, những gì chúng tôi đang làm ở đây trong chức năng này, chúng tôi đang yêu cầu các cơ sở dữ liệu nếu người sử dụng đó là cố gắng để đăng nhập, đó sẽ là gửi thông qua phương thức POST. Chúng ta sẽ thấy chúng tôi đang nhận tên người dùng từ _POST. Họ sẽ đã gửi, người sử dụng hoặc bạn sẽ gửi một giá trị thông qua một hình thức thông qua POST vì đó là tên người dùng và mật khẩu công cụ. Chúng tôi đang kiểm tra tên người dùng để xem, là này trong bảng? Bởi vì nếu một người dùng đăng nhập trong, sau đó ghi tên người nên được lưu trữ trong các bảng người dùng có cho trang web này. Vì vậy, về cơ bản nếu sử dụng là trong cơ sở dữ liệu, truy vấn sẽ trả lại hàng đó, mà là một mảng. Nhưng phần khó là nếu ngay cả nếu mảng đôi chỉ trong một hàng, thậm chí nếu đó là một hàng một array-- như bạn đã có basically-- nếu bạn đã có một kích thước một mảng đó là giữ một mảng khác, bạn đang thực sự đối phó với một cột. Nhưng nó vẫn còn điều trị giống như một mảng đôi. Và đây là nơi mà đôi khi nó có thể nhận được khó khăn, bởi vì chúng tôi đã có hàng ở đây. Biến của chúng tôi là hàng. Và sau đó chúng tôi đang tạo một biến gọi là hàng mới và đặt nó bằng với hàng đầu tiên của hàng. Và bạn sẽ nhận thấy rằng bình luận nói đó là hàng đầu tiên và duy nhất. Vì vậy, đây là khó khăn phần mà bây giờ chức năng có thể trở lại mảng rất dễ dàng. Không có mallocs. Bạn sẽ không thấy mallocs. Vì vậy, bạn sẽ không nhìn thấy lỗi seg. Nhưng chức năng vẫn sẽ đi qua xung quanh các mảng và các dữ liệu trong nhóm. Và bạn phải cảnh giác với những gì chính xác chức năng của bạn sẽ trở lại. Và thậm chí nếu nó là một cột như thế này, truy vấn vẫn sẽ trả về một mảng đôi. Vì vậy, để truy cập mà column-- hoặc bạn có thể nghĩ về tất cả những điều này là đảo ngược kể từ khi chúng ta đang nói về hàng. Nhưng để truy cập vào một hàng, bạn không thể chỉ nói hàng. Mặc dù nó là một dòng, bạn phải làm rowsrows [0] để loại trừ này bit ngoài của mảng và chỉ có một hàng của bạn. Do một số thứ khác. Có một chức năng gọi password_verify mà xác minh mật khẩu đã được đăng. Và sau đó chúng ta thấy một toàn cầu biến ở đây, _SESSION. Về cơ bản phiên id là làm thế nào bạn theo dõi của ai đó đang đăng nhập hay không. Vì vậy, ngay bây giờ với login.php, chúng tôi đang đăng nhập người dùng trong. Vì vậy, những gì chúng tôi muốn làm là chúng ta muốn nói phiên id bằng hàng id, mà chỉ có ý nghĩa vì mỗi hàng sẽ có một id khác nhau số như là một phần của bảng. Chúng tôi sẽ nhận được vào SQL trong một thứ hai, do đó, nếu bất cứ điều này có vẻ như một chút như blah, sau đó tất cả sẽ được làm sáng tỏ. Nhưng chúng ta sẽ thiết lập id bằng điều thích hợp, đăng nhập người sử dụng trong. Xin lỗi nếu bất cứ điều gì sai trái. Và đó là mục đích trong thông tin đăng nhập cuộc sống như giáo sư Malan sẽ nói. Vì vậy, đó là login.php. Và rất nhiều các mã PHP bạn viết trong pset 7, họ sẽ có một chút. Đừng quên chmod để các điều khoản thích hợp. Sẽ có một chút ít về rằng trong đầu của spec. Nhưng PHP mà bạn văn bản là có được làm công cụ đó là tương tự như này. Bạn đang đi đến được truy cập vào một số thứ được trao cho bạn trong biến toàn cầu của PHP đang đối phó với hiện tại đăng nhập người dùng, cho dù có có được yêu cầu gửi đến này trang, những thứ khác nhau như thế. Và nó cũng sẽ có khả năng lặp lại thông qua các hàng của điều này. Trong một chức năng khác nhau, truy vấn không trả lại mảng này tăng gấp đôi. Và nếu có nhiều hơn một hàng trong nó, nếu có are-- có, nếu có nhiều hơn một hàng trong nó, sau đó nó sẽ được một bảng. Và bạn có thể muốn lặp qua các hàng của mảng này sử dụng vòng lặp foreach mà chúng tôi mô tả. Vì vậy, nếu bạn làm foreach trên một đôi mảng, những gì sẽ là word-- đây, Tôi thực sự sẽ viết nó. Tôi sẽ viết nó nhanh chóng ở đây. Nếu chúng ta có một foreach hàng theo hàng, loại hàng là gì? Có ai biết không? Bạn đã nhận nó? Vì vậy, các hàng là một mảng đôi. Vì vậy, những gì đang foreach sẽ suy ra mà chúng tôi muốn từ mảng này tăng gấp đôi nếu chúng ta lặp qua nó? Chúng tôi về cơ bản có thể giả định rằng nó sẽ là một trong hai yếu tố, hoặc các hàng, cột, về cơ bản. Và như vậy các hàng và cột chúng ta có thể điều trị như điều tương tự. Về cơ bản những gì các vòng lặp foreach sẽ làm là nó sẽ trả lại hàng. hàng là có được các loại hàng, trong khi đó hàng là một mảng đôi. Vì vậy, nếu bạn cung cấp cho foreach một mảng hai, đó là sẽ không để lặp nhiều hơn một mức độ sâu sắc. Đó là cơ bản để nói nếu có tám tế bào trong này table-- 1,2, 3 4, 5, 6, 7, 8-- sự foreach vòng lặp không phải là sẽ đi qua từng tế bào. Những gì các vòng lặp foreach sẽ làm được nó sẽ đi qua hàng này, cung cấp cho bạn toàn bộ hàng này. Và sau đó nó sẽ đi qua hàng đó. Vì vậy, nó chỉ lặp một mức độ sâu sắc. Nếu bạn thêm một lồng nhau foreach vòng lặp, sau đó bạn có thể đối xử với mỗi hàng trở về từ hàng, bạn làm hàng foreach là nguyên tố, hãy cùng nói nào. Và sau đó bạn có thể đồng nguyên tố này. Vì vậy, đó là một bản tóm tắt chút bồi dưỡng về cách bạn có thể được sử dụng foreach vòng trong bối cảnh của câu truy vấn. Có bất kỳ câu hỏi về PHP? Bất cứ điều gì ở tất cả trước khi chúng ta chuyển sang nói về SQL và những niềm vui của cơ sở dữ liệu? Cảm thấy tốt? Cảm thấy tốt. Được rồi. Chúng ta hãy chuyển trở lại PowerPoint, mà bạn có thể bỏ lỡ. SQL, yay. Những người trong phần của tôi thường sẽ biết rằng các phân nhóm từ viết tắt luôn luôn chỉ là những từ đầu tiên Tôi nghĩ về trận đấu đó mà algorithm-- từ viết tắt mà. Nó không phải là một thuật toán. Vì vậy, một cơ sở dữ liệu SQL là. Đó là một ngôn ngữ làm việc với cơ sở dữ liệu. Và tất cả các cơ sở dữ liệu đang là bảng, ít nhất là trong cách SQL mà đại diện cho họ. Một cách khác để suy nghĩ về cơ sở dữ liệu là cơ sở dữ liệu là một tập hợp các phím và các giá trị về cơ bản. Bạn có thể nghĩ về một cơ sở dữ liệu như một từ điển và cũng như một bảng. Về cơ bản đó là một cách để liên kết dữ liệu khác nhau với dữ liệu khác, thường là thông qua các hàng và cột. Và đó là cách đó là SQL hoạt động tốt nhất. Vì vậy, đây là một ví dụ của một bảng. Tôi đã có một vài ví dụ về người trong phần của tôi, mà Tôi không có thời gian để thay đổi. Nhưng chúng tôi đã có những điều giống như ID, tên, siêu cường, và quê hương. Tôi không biết nơi mà bất kỳ ai từ trong phần của tôi, vì vậy tôi chỉ cần đi để giả tất cả mọi người từ New York Thành phố vì tôi có một thống kê cao khả năng là chính xác. SQL sẽ tự động mất quan tâm của cột ID cho bạn. Nếu bạn chèn một hàng mới vào một cơ sở dữ liệu SQL, nó sẽ thặng dư mà Số ID và chỉ về cơ bản dính như năm tên, siêu cường, quê hương, bất cứ ai vào cuối của bảng đó. Vì vậy, ID là một cột bạn sẽ không bao giờ phải lo lắng về. Nhưng, như trong trường hợp của login.php, khi chúng ta đã nhận được các ID phiên từ một bảng và chỉ sử dụng ID, ID là một cách để nhận diện một phần tử của một cơ sở dữ liệu. Vì vậy, nếu chúng tôi có hai Sams, cả hai mà dạy CS50, và cả hai người là từ Milwaukee, những người sẽ vẫn có số ID riêng biệt và do đó phải khác biệt trong bối cảnh của bảng. Vì vậy, đây là những gì SQL là đối phó với, làm việc với trong các kết thúc trở lại. Bây giờ đây là bốn lệnh mà bạn sẽ cần phải làm việc với SQL. Và tôi đã ném tất cả chúng lên trên một slide. Nhưng chúng ta sẽ đi qua tất cả chúng riêng rẽ. Lệnh đầu tiên là UPDATE, mà hiện những gì bạn có thể mong đợi. Giả sử bạn có một số dữ liệu trong bảng đó là lỗi thời. Cũng giống như nếu bạn đang giữ theo dõi các tên của người dân và lứa tuổi, nếu một ai đó độ tuổi tăng lên, sau đó bạn sẽ muốn đi vào và cập nhật tuổi chỉ của người đó. Đối với một ví dụ mà các công trình với table-- đầu tiên của chúng tôi đừng lo lắng về cách viết tất cả các lệnh cùng một lúc. Nhưng nếu bạn đã có bản cập nhật xuống, rằng sẽ tốt cho phần này, bởi vì chúng ta sẽ quay trở lại bàn. Vì vậy, nếu chúng ta quay trở lại bàn, chúng ta hãy nói điều gì đó đã xảy ra đã có một trận động đất hoặc có một đường nứt mà chia trực tiếp qua thành phố New York. Và chúng tôi muốn để cập nhật tất cả mọi người người sống ở thành phố New York. Tất cả họ đều đã phải di chuyển tới Pennsylvania. Đó không phải là một quê hương. Tất cả họ đều đã phải di chuyển đến New Haven. Hiện chúng tôi đi. Vì vậy, tất cả mọi người ở New York di chuyển đến New Haven. Và đó là một cái gì đó chỉnh sửa ba hàng trong bảng này. Nhưng trong SQL, bạn có thể làm mà chỉ trong một tuyên bố. Vì vậy, chúng tôi quay trở lại UPDATE. Hãy để tôi nhanh chóng xóa bảng này một lần nữa. Khi chúng ta đang nói về cập nhật, có một vài bộ phận của cú pháp đó là chìa khóa. Vâng, tất cả các cú pháp là chìa khóa. Nhưng những thứ trong xanh là tùy chọn. Màu trắng được yêu cầu, như tên được xác định trước. Và ánh sáng màu xanh là những thứ mà thay đổi tùy theo bảng. Vì vậy, đó là những gì đang xảy ra với các màu sắc ở đây, ở trên đó. Vì vậy, nếu chúng ta muốn cập nhật chỉ những hàng của những người sống ở New York, vì vậy những gì chúng ta sẽ làm gì nếu chúng ta nói CẬP NHẬT? Vì vậy, bảng là nơi mà chúng ta đặt tên bảng của chúng tôi. Hãy chỉ nói tên bảng của chúng tôi là một bảng. Vì vậy, chúng tôi muốn UPDATE bảng một. Và chúng tôi muốn set-- những gì chúng ta muốn thiết lập? Vâng, chúng tôi muốn nói, vì vậy column-- PHP đối xử với các hàng như là định danh duy nhất. Và sau đó là cột các lĩnh vực khác nhau của những yếu tố của cơ sở dữ liệu. Vì vậy, yếu tố đầu tiên của cơ sở dữ liệu có một cái tên của Sam, siêu cường của CS50, và một quê hương của Milwaukee. Vì vậy, nếu chúng ta biết thiết lập, chúng ta hãy nhìn vào các thông số thiết lập lại mà mất. Chúng tôi có cột bằng giá trị. Vì vậy, chúng tôi muốn nói một số column-- mà nhớ là một field-- chúng tôi muốn thấy một lĩnh vực tương đương với một cái gì đó mới. Vì vậy, nếu chúng ta chỉ nói cập nhật bảng 1, đặt tên bằng Elliot. Nhận được một số người từ phần mới trong ngày này. Nhưng nếu chúng ta chỉ cần làm cập nhật bảng 1 đặt tên bằng Elliot, những gì sẽ bảng trông giống như sau đó? Mọi người có bất cứ ý tưởng? Yeah. Đung Tất cả mọi thứ trong đó hàng sẽ trở thành Elliot. SPEAKER: Tất cả mọi thứ trong đó hàng? Đung Trong hàng đầu tiên. SPEAKER: Trong hàng đầu tiên? Tại sao hàng đầu tiên? Tôi không có ý trêu bạn. Đung Có lẽ tất cả mọi thứ trong toàn bộ bảng? SPEAKER: Tất cả mọi thứ trong toàn bộ bảng, yes. Và đó chính xác là đúng because-- tôi chỉ giúp bạn ra ngoài một chút there-- vì chúng ta bỏ qua các khoản tùy chọn WHERE. Nếu bạn không có WHERE khoản, điều lệnh này sẽ làm là nó sẽ làm việc với tất cả các hàng duy nhất trong bảng. Tên của tất cả mọi người sẽ trở thành Elliott, về cơ bản, mà Elliot là rất hạnh phúc về. Hoặc Yanni, một trong hai. Nhưng tên của tất cả mọi người sẽ thay đổi. Vì vậy, cách chúng ta sử dụng WHERE clause-- và điều này áp dụng cho tất cả các Wheres đó là trong mỗi những điều khác nhau. Vì vậy, bạn sẽ nhận thấy rằng SET có giá trị bằng cột. Và do đó, hiện WHERE. Nhưng đây là những khác nhau các loại báo cáo. Vì vậy, các cột bằng giá trị trong SET là trong chuyển nhượng. Giống như chúng ta nói rằng chúng ta muốn để đặt tên bằng Elliot. Nhưng trong điều khoản WHERE, đây là những câu bình đẳng. Vì vậy, hãy nói chúng tôi chỉ muốn thay đổi tên của người này để Elliot nếu tên của họ là Ryan, chúng ta hãy nói. Vì vậy, khi chúng ta nói WHERE name bằng Ryan, rằng sẽ thành công chỉ thay đổi các name-- nó sẽ chỉ thay đổi các trường tên trong hàng nơi mà các trường tên là bằng Ryan. Vì vậy, nếu chúng ta có nhiều người tên là Ryan, tất cả các tên của họ sẽ thay đổi để Elliot. Đây là giống như ví dụ của nếu có một đường nứt tách Thành phố New York và tất cả mọi người có để di chuyển đến New Haven, cách chúng ta có thể làm điều đó trong một tuyên bố là CẬP NHẬT table1 SET quê hương = New Haven nơi quê hương bằng thành phố New York. Đây là sức mạnh của câu lệnh UPDATE. Chúng ta có thể chọn bất kỳ số hàng thông qua các báo cáo đúng về các lĩnh vực trong những hàng. Chúng tôi không thể nói CẬP NHẬT table1 đặt name = Elliot ĐÂU hàng = 1, ngoại trừ chúng ta có thể nếu chúng ta nói ID = 1. Vì vậy, chúng ta sẽ được làm việc với bình đẳng lĩnh vực, bình đẳng của các cột. Nhưng sử dụng các lĩnh vực ID là một cách để lựa chọn các hàng cá nhân cụ thể, vì trường ID là một độc đáo định danh trong một cơ sở dữ liệu SQL. Vì vậy, như cập nhật hàng một, ID bằng 1. Cập nhật hàng hai, chỉ thay đổi mà số ID. Nhưng sức mạnh của Tuyên bố WHERE là chúng ta rằng có thể cập nhật những điều dựa trên những gì họ giá trị hiện tại của những điều nào đó. Có Elliot? Đung Và nếu những gì bạn muốn với: một lần nữa, đây là một câu hỏi khác. Nhưng câu hỏi đầu tiên của tôi là, nơi này xảy ra? Nơi tôi đang cập nhật này? Đây có phải là trong một mã PHP? SPEAKER: Nơi bạn cập nhật, có. Chúng ta sẽ nói chuyện về nơi mà tất cả những điều này xảy ra loại một khi chúng ta đi thông qua tất cả các lệnh. Nhưng những gì bạn cần biết ngay bây giờ về cơ bản là rằng cơ sở dữ liệu SQL của bạn tồn tại như một cái gì đó để được truy cập bởi các truy vấn chức năng, mà CS50 định nghĩa. Vì vậy, nếu bạn sử dụng các chức năng truy vấn, bạn có thể truy cập vào bảng này. Vì vậy, bạn sẽ được gửi những lệnh để bàn của bạn trong file PHP thông qua các chức năng truy vấn. Bạn cũng có thể chơi xung quanh với bảng của bạn trực tiếp. Và đó là cách tốt nhất để kiểm tra các loại lệnh. Và chúng ta sẽ đi qua một cách chính xác như thế nào để làm điều đó chỉ một chút. Vì vậy, đó là CẬP NHẬT lệnh. Và phần còn lại của lệnh đang có được loại tương tự, làm việc trên những điều tương tự. INSERT INTO có lẽ sự khác nhau nhất từ ​​UPDATE. Tôi sẽ để lại rằng lên đó cho chỉ cần một chút và làm việc ở đây. Vì vậy, INSERT INTO, bạn sẽ thấy bảng đó là vẫn như nhau. Bạn muốn INSERT INTO. Giá trị vốn hóa, SQL là trường hợp nhạy cảm. Vì vậy, bạn không cần phải tận dụng những điều này. Theo quy ước, những lời trong trắng được vốn. Nhưng tôi cũng màu mã chúng. Lý do duy nhất mà bạn viết hoa những khi bạn đang gõ chúng chỉ là để nhấn mạnh đó là những hằng số. Và như vậy bạn có thể nhìn vào các hoa hoặc thực tế mà tôi đã tô màu chúng khác nhau. Vì vậy, chúng tôi đã có INSERT INTO, chúng ta hãy làm table1 một lần nữa. Đây là tất cả trên cùng một dòng. Tôi chỉ tách nó bằng các báo cáo khác nhau. Vì vậy, đừng lo lắng về thực tế là table1 đã làm cho nó vào dòng thứ hai. Vì vậy, chúng tôi muốn INSERT INTO Table1 một số giá trị. Và bạn sẽ nhận thấy các tùy chọn bit, mà tôi sẽ nhận được để trong một giây. Vì vậy, chúng tôi đã có GIÁ TRỊ. Vì vậy, chúng ta hãy nói rằng chúng ta muốn thêm Andi bảng của chúng ta, bởi vì chúng ta bỏ lỡ Andi. Andi bị bệnh. Vì vậy, chúng ta hãy thêm Andi để bàn của chúng tôi. Hãy nhớ rằng số ID được cập nhật tự động. Vì vậy, các lĩnh vực duy nhất chúng tôi cần phải lo lắng về là tên, siêu cường, và quê hương. Và do đó, cách mà chúng tôi làm điều đó, nhìn vào cú pháp của chúng tôi, là chúng tôi đã chỉ có một dấu ngoặc đơn, dấu phẩy với giá trị tách biệt, mỗi trong số đó là một giá trị. Vì vậy, nếu chúng ta muốn chèn Andi thành của chúng tôi bàn, tất cả chúng ta phải làm là đúng Andi. Siêu cường của Andi là gì, người trong phần Andi không? Cô muốn bay, hay thích tốc độ, hoặc một cái gì đó. Những gì chúng tôi đã có ở đó? Chúng tôi có CS50, chuyến bay, tốc độ và sức mạnh. Đung Thời gian đi lại. SPEAKER: Thời gian đi lại, tuyệt vời. Vì vậy, chúng tôi đã có Andi, thời gian du lịch, và quê hương của cô. Đó là một câu hỏi thực sự tốt. Thành phố New York, trừ khi có ai đó biết. Mọi người đều là từ New York là bài học để lấy đi từ ngày hôm nay. Vì vậy, tuyên bố này sẽ chèn, như là một hàng thứ năm, với thời gian đi siêu cường và một quê hương của thành phố New York. Nhưng các lĩnh vực tùy chọn về cơ bản là một cách để xác định chính xác các cột bạn muốn chèn thứ trong. Cách mà chúng tôi đang làm bây giờ, Andi, thời gian đi lại, thành phố New York, sắp theo thứ tự chính xác của chúng tôi Tên table--, siêu cường, quê hương. Và nếu bạn muốn làm một cái gì đó khác hơn, như nói rằng bạn không biết siêu cường của một ai đó, như thế nào tôi không biết Andi của siêu cường lúc đầu. Vì vậy, tôi chỉ biết là mình đặt tên và quê hương của cô. Những gì tôi có thể làm là tôi có thể do-- tôi sẽ xóa sổ nhanh chóng này. Tôi muốn chỉ cập nhật các cột. Và đây là nơi mà các tùy chọn danh sách cột đến chơi. Tôi chỉ muốn cập nhật tên và quê hương. Và sau đó tôi sẽ nói VALUES. Tôi sẽ làm Andi và thành phố New York. Nếu tôi đã bỏ qua danh sách các cột và chỉ cần thực hiện hai điều này, nơi sẽ thành phố New York đã đi? Những cột sẽ New York Thành phố đã được đặt trong? Mọi người có bất cứ ý tưởng? Siêu cường, chính xác. Vì vậy, điều này sẽ chỉ đi theo thứ tự. Và một khi nó đến điểm cuối của danh sách, nó sẽ chỉ dừng ở việc làm đầy. Và các giá trị mà nó sẽ dính vào tất cả các cột sẽ chỉ là NULL. Vì vậy, bởi vì chúng tôi quy định tên và quê hương, chúng ta sẽ có ID 5, tên Andi, siêu cường NULL. Vì vậy, siêu cường là một giá trị chưa được khởi tạo. Bạn sẽ không nhất thiết phải có được lỗi tương Valgrind nếu bạn cố gắng và truy cập nó. Tất cả mọi thứ sẽ được độc đáo zeroed ra, bởi vì NULL là một giá trị trong SQL. Đó là một hằng số. Và sau đó quê hương sẽ là thành phố New York. Vì vậy, đó là INSERT INTO lệnh. Trước khi chúng tôi di chuyển, có hơn hai lệnh. Người dân có bất kỳ câu hỏi về UPDATE, INSERT INTO về, về SQL nói chung là trước khi chúng tôi di chuyển lên bit thức của chúng tôi? Mọi người cảm thấy tốt, tuyệt vời. Yêu nó. Vì vậy, chúng ta hãy nói về SELECT. Đi mương CẬP NHẬT ở đây. Và SELECT sẽ là rất tương tự. Mục tiêu của SELECT, Mục đích của CHỌN trong cuộc sống là để cung cấp cho bạn một loạt các cột đáp ứng các điều kiện nhất định. Và khi tôi nói đáp điều kiện nhất định, tâm trí của bạn có thể ngay lập tức đi lại cho rằng mệnh đề WHERE mà đến trong UPDATE. Và đó là điều khoản chính xác có trong SELECT. Nếu chúng ta không đặt WHERE khoản và chúng tôi nói CHỌN tên, hometown-- đánh vần mà một chút Tên wrong--, quê hương FROM table1. Nếu chúng ta chỉ nói rằng, những gì CHỌN sẽ cung cấp cho chúng tôi là nó sẽ cung cấp cho chúng ta một double-- một bảng, thay. Một mảng tăng gấp đôi nếu chúng tôi suy nghĩ về trong PHP cảm. Nhưng nó chỉ là sẽ cung cấp cho chúng ta một mảng đôi của hai tên columns--, và quê hương. Và nó sẽ bỏ qua ID. Và nó sẽ bỏ qua siêu cường. Và nó sẽ chỉ cung cấp cho chúng ta mỗi hàng duy nhất của bảng đó. Vì vậy, nếu chúng ta chỉ cần chèn Andi, chúng tôi sẽ có Andi. Và chúng tôi sẽ có bản gốc bốn. Nếu họ đã được cập nhật, mà sẽ được phản ánh, vân vân, vân vân. Vì vậy, đây là bởi vì chúng tôi không sử dụng mệnh đề WHERE. Nhưng chúng ta có thể sử dụng nó trong cách chính xác cùng một cách mà chúng ta sử dụng nó trong UPDATE. Nếu chúng ta chỉ muốn có một bảng tên và siêu quyền hạn của những người sống ở New York, chúng ta có thể thực thi một lệnh như SELECT name, superpower-- Tôi chỉ đi để lại that-- TỪ table1 ĐÂU quê hương = Thành phố New York. Vì vậy, điều này đi để cho thấy rằng bạn có thể lấy cốt hoàn toàn khác nhau, và sau đó đặt các cột mà bạn không thậm chí nhận được trở lại trong mệnh đề WHERE. Chúng tôi thậm chí không muốn quê hương của tất cả mọi người. Nhưng chúng tôi muốn tên và siêu cường của người dân có quê hương là thành phố New York. Vì vậy, đó là điều chúng tôi có thể làm với các WHERE Mệnh đề là chúng ta có thể đối phó với các cột rằng chúng ta không nhất thiết muốn trở lại. Trong cùng một cách trong UPDATE, chúng ta có thể đối phó với các cột mà chúng ta không nhất thiết phải muốn cập nhật. Chúng tôi có thể cập nhật các thành phố của tất cả mọi người ai tên là Sam, ví dụ. Chúng tôi có thể cập nhật các thành phố tất cả mọi người có ID số là 2. Vì vậy, chỉ cần cập nhật các thành phố của hàng thứ hai mà chúng ta không phải đối phó với cần thiết các câu hỏi thường gặp. Và DELETE là, như bạn muốn mong đợi, DELETE FROM table1. Và sau đó chúng tôi đã có một mệnh đề WHERE. Vì vậy, chúng ta có thể nói đâu ID = 1. Xóa hàng đầu tiên. Và DELETE sẽ luôn luôn xóa một hàng, hoặc nó sẽ xóa một số số lượng hàng. DELETE FROM table WHERE Thành phố quê hương = New York sẽ xóa tất cả mọi người trong thành phố New York. Đó là nếu có một đột ngột bệnh dịch hạch bi thảm và bạn chỉ muốn loại bỏ tất cả mọi người từ bảng người sống trong một thành phố nào đó nơi bị bệnh dịch hạch. Họ có thể nghỉ ngơi trong hòa bình. Đây là bốn câu lệnh SQL mà bạn sẽ cần phải sử dụng. Bạn có thể thậm chí không cần phải sử dụng tất cả. Nhưng đây là bốn rằng CS50 hy vọng bạn để được thoải mái với việc đi vào cả hai bài kiểm tra 1 và cũng pset7 và pset8. Không chỉ là bảng đó một lần nữa. Trong một này, siêu cường của Roy có được cập nhật để các chùm laser, mà là một ví dụ tôi đã không sử dụng. Tôi không biết cái nào Roy thích, nhưng sức mạnh. Roy có một siêu cường của sức mạnh. Katherine đã không làm cho nó ngày hôm nay. Thật không may. Nhưng cô có siêu tốc độ. Vâng đó là PHP. Trước khi chúng ta nói về MVC, không ai có thắc mắc về PHP? Bây giờ SQL, PHP hoặc nếu bạn đột nhiên có đưa ra một câu hỏi về PHP? Thật tuyệt. Được rồi, chúng ta đã cài đặt xong rồi. Vì vậy, nói một chút về mô hình điều khiển xem, chúng ta hãy trở lại một số các công cụ trong pset7. Vì vậy, những gì mô hình điểm điều khiển is-- Tôi không sẽ lưu các thay đổi của tôi để đăng nhập bởi vì tôi hoàn toàn làm thịt nó. Nhưng về cơ bản chúng ta có hai những điều riêng biệt xảy ra. Chúng tôi có một công thư mục có chứa mã đó sẽ được thực thi và các trang web đó sẽ được viếng thăm. Và chúng tôi cũng có thư mục quan điểm này. Và quan điểm chứa mẫu. Đây là những gì các chức năng render-- chúng ta đã thấy render chức năng trong một loạt các mã PHP CS50 đó đã viết cho bạn, mà mất trong một số thông số. Những mã mà là làm là nó sẽ vào xem, đó là bộ như Mã HTML prewritten, và nó chèn các giá trị vào những nơi nhất định. Đây là thế nào khi bạn đi vào CS50 Tài chính, các tiêu đề tương tự trên mỗi trang. Footer tương tự trên mỗi trang. Điều này là do đường mà làm cho công trình là nó sẽ thấy tự động vá trong tiêu đề đó và xem mà bạn có thể tìm thấy trong quan điểm. Chúng tôi có thể thực sự đi vào tiêu đề, và nhìn, nó là một tập tin HTML với một cái đầu. Nó có một số stylesheets. Bạn không cần phải nhìn vào CSS cho pset7 nếu bạn không muốn. Nhưng bạn có thể sửa đổi họ nếu bạn muốn, làm cho Tài chính của bạn trông hơi khác một chút. Nó có một số PHP ở tiêu đề một chút để xem nếu có một tiêu đề khác nhau nó nên đặt ở đầu này. Nhưng chỉ một số kịch bản khác, và các liên kết, và những thứ khác. Đầu kết thúc, cơ thể bắt đầu, và oops, chúng tôi có chút kỳ lạ này kết thúc. Và có một div, giống như một loại vô sắc của nguyên tố rằng có một ý tưởng về trung. Và sau đó khi chúng ta nhìn thấy chân, chúng tôi có sự kết thúc của một div. Chúng tôi có một dưới, đó là nơi mà các văn bản footer là. Cuối div, kết thúc của cơ thể, kết thúc của HTML. Vì vậy, những gì làm là làm là làm là sắp xếp vá lên tiêu đề, một file PHP khác nhau mà sẽ chứa những điều thực tế mà bạn sẽ xem, giống như bảng của cổ phiếu nếu bạn đang mua hay bán cổ phiếu. Và sau đó nó sẽ thêm vào phần cuối trang. Và quan điểm mô hình ý tưởng điều khiển là chúng ta rằng muốn tách riêng như thế nào những điều nhìn từ mã. Đó là chúng ta muốn tách riêng các lối vào và các phụ trợ, nơi lối vào là những thứ mà người dùng thấy, tốt đẹp visuals-- HTML, CSS, những điều như thế, hình ảnh, vân vân. Và các phụ trợ là PHP. Đây là đoạn code mà bạn viết. Đây là nơi mà các mã đó là làm các hoạt động thực tế. Đây là khi bạn đang thêm một cổ phiếu để bàn của bạn, khi bạn mua và bán, đó là phụ trợ. Và chúng ta có thể, như bạn đã thấy, bao gồm PHP trực tiếp trong HTML. Vì vậy, những gì chúng tôi có thể đã làm cho chuyển nhượng này chỉ là có một tập tin HTML cho mỗi trang, như đăng nhập. Và sau đó trên trang đó, chỉ đã có một khối lớn các mã PHP, bao gồm tất cả các mã trang mà cụ thể sẽ cần. Và sau đó chúng ta có thể có làm điều đó cho danh mục đầu tư. Chúng tôi đã có thể làm tất cả các mua và bán trong các trang cá nhân. Nhưng vì chúng ta đang vẽ một cách riêng biệt từ nơi chúng ta đang viết các phụ trợ code, chúng ta có thể dễ dàng thay đổi như thế nào những điều trông không thay đổi từng tập tin duy nhất. Chúng tôi làm những việc như chỉ cần thêm một div mới đến đáy of-- Xin chào, tôi đổi chân. Bạn chỉ có thể làm những thứ như thế. Nhưng cũng có thể, bạn có thể thay đổi toàn bộ bố trí trực quan mà không ảnh hưởng gì đi trong backend. Và bạn có thể thay đổi toàn bộ phụ trợ và vẫn có nó trông giống như nó đã làm trước đây. Cái này Là ý tưởng của mô hình điều khiển xem. Và nó thực sự là một mô hình áp đặt trong một số ngôn ngữ lập trình bạn có thể muốn sử dụng cho các dự án cuối cùng. Nếu bạn làm phát triển iOS, họ có tầm nhìn, đó là những gì bạn thấy trên iPhone, và sau đó phụ trợ như là giống như một điều riêng biệt. Bạn có thể nghĩ về một chút. Có rất nhiều các tập tin nhị phân trong khoa học máy tính, mà là funny, bởi vì tất cả mọi thứ là trong hệ nhị phân. Tôi không có kế hoạch đó. Đó là một sự chơi chữ không mong muốn. Có, chơi chữ không có ý định. Nhưng giống như các file .h và các file .c, có rất nhiều phân cách thứ chúng ta có thể không cần. Vì vậy, chúng tôi chỉ có thể chỉnh sửa các tập tin h, hoặc một người nào đó chỉ có thể nhìn thấy một file .h và biết chính xác các chức năng có trong tập .c mà không nhất thiết biết thực hiện của họ. Ý tưởng này của các thành phần tách mà phụ thuộc vào nhau nhưng có thể loại truy cập mỗi khác thông qua các kênh khác nhau, qua của các biến, chỉ bao gồm báo cáo, điều như thế, nguyên tắc này giúp tạo ra các ứng dụng có thể được dễ dàng hơn sửa bởi nhiều người, có thể được dễ dàng hơn thay đổi hoặc sửa đổi trên một quy mô lớn, và dễ gỡ lỗi trong rất nhiều cách khác nhau. Thật nhanh chóng, tôi có một vài lời khuyên cho pset7, mà tôi sẽ làm cho màn hình đầy đủ, do đó bạn không chỉ cần nhìn vào the-- tip tip tippee. Hiện có không có nhiều lời khuyên. Nhưng tôi đã đề cập PHP là khó để gỡ lỗi. Đôi và gấp ba lần kiểm tra xem nó. Nếu mã của bạn chỉ là không hiển thị trên trang, nó có thể là một lỗi PHP, xin lỗi. Bạn không bao giờ cần phải nhìn vào CSS nếu bạn không muốn. Nhưng một khi bạn đã hoàn tất, nó có thể được vui một chút điều tốt đẹp để chỉ cần đi vào và gây rối với các thông số CSS. CSS và HTML là một ví dụ về một mô hình điều khiển xem phong cách điều quá, phải không? Bạn có thể có thẻ phong cách bên trong các phần tử HTML. Nhưng nếu bạn sắp xếp của gia công phần mềm họ CSS, chúng dễ dàng hơn để chỉnh sửa và chơi xung quanh, và vui chơi với. Hãy đối xử với CS50 helper chức năng như hộp đen. Bạn không cần phải biết chính xác những gì Render làm, nhưng tin tưởng nó sẽ luôn luôn làm đúng các điều tùy thuộc vào những gì bạn vượt qua nó, thứ như thế này. Và tôi muốn giới thiệu xem walkthrough của David, đi qua tất cả các công cụ, không chỉ các todos, nhưng bạn thực sự có thể điều trị các hộp đen. Đừng đi vào những chức năng tìm kiếm lỗi. Và chào đón sự trở lại của overlord Zamyla của chúng tôi. Thật tuyệt. Có bất kỳ câu hỏi cuối cùng trước khi chúng tôi loại trả lại cho ngày? Tôi vẫn còn sống? Thật tuyệt. Người livestream Hi. Thật tuyệt. Có câu hỏi nữa? Không? Và sau đó tôi nghĩ rằng chúng tôi tốt để đi cho ngày hôm nay. Tôi sẽ dính vào xung quanh một chút sau đó nếu mọi người đã có câu hỏi họ sợ không dám hỏi trên suối. Nhưng nếu không, có một ngày tốt lành.