[Powered by Google Translate] [კვირა 8 გაგრძელდა]
[დევიდ ჯ Malan] [ჰარვარდის უნივერსიტეტის]
[ეს არის CS50.] [CS50.TV]
>> ეს არის CS50, ამიტომ ეს არის ბოლომდე კვირა 8 აქ.
ჩვენ, რა თქმა ჰქონდა ცოტა ქარიშხალი ამ კვირაში,
ამიტომ ახლავე მართლაც მხოლოდ თქვენ და მე ამ აუდიტორია,
მაგრამ დღეს ჩვენ ვაგრძელებთ საუბარი PHP
და ვებ პროგრამირების უფრო ზოგადად, და ჩვენ ასევე გააცნობს იდეა
მონაცემთა ბაზების, განსაკუთრებით ერთი მოუწოდა MySQL, რომელიც საკმაოდ პოპულარულია ამ დღეებში,
დიდი ნაწილი, რადგან მისი scalability ასევე რადგან მისი ყოფნა თავისუფალი და ღია წყაროებიდან.
>> მაგრამ პირველი, შევხედოთ, სადაც ჩვენ შეჩერდით ბოლო დროს.
შეგახსენებთ, რომ ჩვენ შევხედავთ რამდენიმე Frosh IMS მაგალითები,
და ეს იყო hideous ფორმა რომ ჩამოვედი რაიმე 15 + წლის წინ
იმისათვის, რომ სტუდენტებს კამპუსში რეესტრის freshman intramural სპორტული
გარეშე რეალურად მქონე Trek აღარ მასშტაბით ეზოში Wigglesworth
to ლღობას ფიზიკური ნაჭერი ქაღალდი ქვეშ ზოგიერთი PROCTOR ს კარი.
ამის ნაცვლად გადავედით ყველაფერი შემოსული, მაგრამ უნდა გავაკეთოთ, რომ ჩვენ საჭირო გამოიყენოს
რამდენიმე ტექნოლოგიები, ამიტომ ერთი, ჩვენ გვჭირდებოდა HTML, ჰიპერტექსტური მარკირებას ენაზე
რაც კიდევ ერთხელ არის ამ მარკირებას ენა, რომელიც თქვენ გააკეთებთ ვებ გვერდები სტრუქტურულად.
>> გამოყენება ცოტა CSS ამ დღეებში, კასკადური სტილების,
რომლითაც ჩვენ ვიყენებთ stylizations of ვებ გვერდზე გამოყენებით ოდნავ განსხვავებული სინტაქსით,
ხოლო HTML იყო ყველა სტრუქტურის შესახებ.
ჩვენ ასევე უნდა შემოიღონ ვებ პროგრამირების ენაზე.
ამ შემთხვევაში, ჩვენ ვიყენებთ PHP, და PHP აპირებს საშუალებას მოგვცემს
to დინამიურად გამომავალი content ასევე გავაკეთოთ პროგრამული რამ, როგორიცაა
გაგზავნის წერილებს, როგორც იყო საქმე ნოტა, რომელიც ჩვენ დაუტოვებიათ გასულ კვირას.
>> შეგახსენებთ, რომ კოდი ამ იყო 2 ნაწილად.
ერთი, ჩვენ გვყავდა froshims3.php,
და ეს იყო რუბრიკაზე markup ერთად HTML ფორმა შიგნით ის,
პაწაწინა ცოტა CSS აქ სტილში ატრიბუტები
ისე, რომ ფორმა თავად იქნება ორიენტირებული გვერდზე, მაგრამ ამის მიღმა
ჩვენ გვქონდა წარმომადგენელი ფორმა საშუალებებით, ველში, ჩამრთველი,
ზოგიერთი რადიო ღილაკები, აირჩიეთ მენიუ და submit ღილაკს.
და Via ეს ფორმა, ჩვენ წარმოდგენილი ფაილი, რომელიც სავარაუდოდ მოუწოდა register3.php,
რაც თავისთავად გამოიყურებოდა ცოტა რაღაც მსგავსი.
ახლა, ყველაზე მეტად კოდი register3.php იხსენებენ, იყო ყველაფერი ელ.
ასე ცოტა Validation ფორმის რომ იყო წარდგენილი დარწმუნდით
რომ სფეროებში ფაქტიურად იმ პირობით, რომ იყო ნავარაუდევი.
მაშინ ჩვენ მოუწოდა ზოგიერთი PHP ფუნქციების გამოყენებით მსუბუქად ახალი სინტაქსის,
მიუხედავად იმისა, რომ ეს ნასესხები C.
>> ეს arrow ოპერატორი საშუალებას გვაძლევს გამოიყენონ რაღაც მოუწოდა ობიექტის ორიენტირებული პროგრამირება.
ჩვენ არ შევალ, რომ ნებისმიერ დეტალს, მაგრამ ვიცი, ახლა
ეს გზა მქონე ფუნქციების ასოცირდება ობიექტები,
რომლებიც სპეციალური ტიპის სტრუქტურა, როგორც ვნახეთ C.
მაგრამ ახლა, უბრალოდ იღებს რწმენა, რომ ეს სწორი სინტაქსი გამოიყენოს
როდესაც გამოყენებით ბიბლიოთეკა მოსწონს ეს PHPMailer ბიბლიოთეკაში.
ხოლო შემდეგ ბოლომდე ამ ფაილის გვქონდა დინამიურად გენერირებული ელ
რომ მიიღო გაიგზავნა ჩემი jharvard@cs50.net ანგარიშის
ჩემი jharvard@cs50.net ანგარიშზე,
და ვაცნობეთ მომხმარებლის შესაბამისად, რომ ისინი დარეგისტრირებული ამ სპორტის.
სწორედ საკმაოდ ბევრი რა Frosh IMS საიტი გააკეთა ყველა იმ წლის წინ
როცა განახორციელეს, გაცემული, სხვა ენაზე,
მაგრამ ეს გიჩვენებთ ალბათ ძალა, რომ თქვენ გაქვთ
ახლა რომ თქვენ შეგიძლიათ გამოხატოს თავის არა მხოლოდ პროგრამულად
დაბალ დონეზე ენის მსგავსად C მაგრამ ბევრად უფრო მაღალ დონეზე
ამ ძალიან რეალური სამყაროს განაცხადების მოსწონს ელ რეალურად მოგვარებას
ზოგიერთი რეალური სამყაროს პრობლემებს.
>> ახლა, რა თქმა უნდა, მიუხედავად იმისა, რომ გამოვიყენო ეს სკრიპტი გენერირებისათვის ზოგიერთი
წერილებს დინამიურად საწყისი jharvard@cs50.net, რომელიც მართლაც ანგარიშის
რომ მე ხელი მიუწვდება, ნუ საკმაოდ ფრთხილად გააგზავნოს
გვერდის მხოლოდ ანგარიშებიდან, რომლებიც ფაქტობრივად საკუთარ,
Lest რამ მისაღებად თქვენ ცოტა ცხელი წყლით ცხოვრებაში.
აღნიშნულის გათვალისწინებით, მოდით ახლა გადასვლას გადაჭრის სხვადასხვა პრობლემა საერთოდ,
რომ შენარჩუნების შტატები.
ახლა, რას ნიშნავს რეალურად?
HTTP, ამ ჰიპერტექსტის გადაცემის პროტოკოლი,
ფაქტიურად მოქალაქეობის არმქონე ოქმს, და რა ეს ნიშნავს, რომ
როდესაც თქვენ დახევის up რაღაც Google.com და შემდეგ დააჭიროთ
ჩვეულებრივ თქვენი ბრაუზერის აქვს გარკვეული სახის დაწნული ხატი, რომ მაშინ
შედეგი, ზოგი ვებ გვერდზე მიმდინარეობს გადმოწერილი,
და შემდეგ რომ პატარა ხატი აჩერებს დაწნული, და რომ მართლაც ვარაუდობს
რომ HTTP დაასრულა გარკვეული კავშირი სერვერზე და ამით ყველაფერი მთავრდება.
HTTP არის მოქალაქეობის არმქონე იმ გაგებით, რომ იგი არ შეინარჩუნოს
მუდმივი კავშირი სერვერზე ისევე Skype აკეთებს
ან Gchat აკეთებს, რადგან ერთად HTTP
ვარაუდი არის ის, რომ ერთხელ თქვენ fetched ვებ გვერდზე რომ არის ის.
>> ახლა, რეალურად ამ დღეებში ადგილებზე როგორიცაა Facebook და Google Maps
და Twitter და მოსწონს იქ გაცილებით მეტი დინამიზმი, რომლითაც
შემდეგაც კი, რომ ხატი აჩერებს დაწნული შეგიძლიათ რეალურად მიიღოთ მეტი განახლებები
საწყისი სერვერზე, უფრო tweets, უფრო სტატუსები Facebook-ზე და მოსწონს.
მაგრამ რომ იყენებს ტექნიკა რომ ჩვენ ვსაუბრობთ ერთ კვირაში ან ორ
ცნობილია როგორც Ajax იყენებს ენის მოუწოდა JavaScript,
მაგრამ დღის ბოლოს, HTTP კვლავ მოქალაქეობის არმქონე.
და მაინც, თუ გსურთ როგორღაც გახსოვთ რამ მომხმარებლის
შემდეგაც კი ისინი გათიშული თქვენი სერვერი
PHP არ მივცემთ თავს თქვენ საშუალებით აკეთებს ამ
რადგან, როგორც ვნახეთ ბოლო დროს, PHP აქვს მთელი რიგი superglobals,
და superglobal არის, კიდევ ერთხელ, სპეციალური გლობალური ცვლადი
რომ გადასცა თქვენ მიერ სერვერზე და PHP თავად.
>> თქვენ არ გაქვთ არაფერს დააყენოს ღირებულებების ის,
და შორის superglobals ჩვენ ვნახეთ დღემდე არიან მიიღონ და გამოქვეყნება,
რაც აქ ფორმა ველები დააყენა ავტომატურად თქვენთვის,
ასევე რამდენიმე სხვები, რომ ჩვენ არ მინახავს არავის გაუკეთებია.
შიგნით $ _server ზოგიერთი სპეციალური ცვლადები დაკავშირებული სერვერი თავად.
რა არის IP მისამართი, რა ოქმი, HTTP ან HTTPS არ გამოიყენოს,
რა მოთხოვნის მეთოდი არ გამოიყენოთ და მოსწონს, ასე რომ არსებობს რამდენიმე საინტერესო,
წვნიანი შესახებ სერვერზე, და ფაქტობრივად, მომხმარებლის იქ ისევე.
აქ $ _cookie, სადაც ეს ყველაფერი მოუწოდა Cookies ინახება.
ჩვენ არ გაატარონ დრო Cookies თავად დღეს,
მაგრამ ვიცით, რომ ფუნთუშა მხოლოდ პატარა ნაჭერი ინფორმაცია
რომ სერვერზე შეიძლება ქარხანა ბრაუზერში
და თავის მხრივ თავისი RAM ან მისი კომპიუტერის მყარ დისკზე
ინფორმაციის შესანახად მომხმარებელი, მაგალითად, მათი მომხმარებლის სახელი
ისე, რომ მათ არ უნდა აკრიფოთ ეს ყოველ ჯერზე ისინი სისტემაში ან რამდენიმე
უნიკალური ნომერი ან იდენტიფიკატორი ამ მომხმარებლის
ასე რომ თქვენ არ უნდა pester მათ იგივე სახის კითხვებს
პრეფერენციები მომავალში, მაგრამ ყველაზე საინტერესო
ახლავე არის $ _session.
>> ეს superglobal, რომელიც, ისევე როგორც სხვები, ჩაბარების თქვენ ავტომატურად PHP
როდესაც თქვენ წერილობით PHP დაფუძნებული საიტებზე
შენახვა შეუძლია არაფერი გსურთ, სტრინგი, რიცხვებით,
მცურავი ქულა, ღირებულებების, კოლექტორები, ობიექტების,
მართლაც რამე რომ გინდათ, და ეს გაძლევთ საშუალებას ჩაწეროთ იგი ასეთი გზა
რომ მაშინაც კი, თუ მომხმარებლის სტუმრობს თქვენ ახლა და შემდეგ
ბრუნდება წუთი ამიერიდან ან 5 წუთი ამიერიდან რადგან
ისინი მათი ხნით ადრე დაწკაპვით ზოგიერთი სხვა ლინკები
PHP უზრუნველყოფს, რომ რასაც თქვენ დააყენა ამ სესიის superglobal
წუთი ან 5 წუთი წინ იქნება იქ, როდესაც მომხმარებლის ბრუნდება.
და ქვეშ hood ამ superglobal ხორციელდება გზით
იმ რამ მოუწოდა cookies, მაგრამ ახლა, უბრალოდ აბსტრაქცია
რომლითაც ეს ერთგვარი პროგრამული ეკვივალენტი კალათა.
რასაც თქვენ, პროგრამისტი, დასვა, რომ
superglobal ასოციაციურ მასივში იქნება გარკვეული რაოდენობის წუთში
სანამ არ წაშალოთ ან სანამ მომხმარებლის ტოვებს თავის ბრაუზერში საერთოდ.
>> მოდით შევხედოთ მაგალითს, თუ როგორ ეს რამ ფაქტობრივად გამოყენებული.
In counter.php შორის დღევანდელ ცალი კოდი
ჩვენ გვაქვს შემდეგი ხაზი.
დაწყების ამ ფაილის გვაქვს bunch of blue კომენტარები, რომლებიც uninteresting ახლა.
მაგრამ ხაზი 13 გვაქვს ახალი ხაზი,
session_start, და რომ რეალურად აკეთებს ზუსტად რა წერია.
იგი იწყება სხდომებზე.
ეს საშუალებას გაძლევთ გამოიყენოთ, რომ დიდი superglobal $ _session, და ეს იმდენად მარტივია, რომ.
ახლა, თუ ვაგრძელებთ შევხედოთ ხაზი 16, მოდით ცდილობენ გაერკვნენ, რა ამ ვებ გვერდზე გაკეთებას აპირებს.
თუ (isset ($ _SESSION ["მთვლელი"]) მაშინ წავიდეთ წინ
და მაღაზიის counter ცვლადი, ამას counter,
$ _SESSION ["მთვლელი"].
ეს, როგორც ჩანს, გამოცხადების ადგილობრივი ცვლადში counter
შიგნით, რომელიც მას აყენებს ასლი რაც შიგნით superglobal
მოუწოდა სხდომა საიდან "counter".
სხვაგან, როგორც ჩანს, ამ პატარა ადგილობრივი ცვლადი counter, ინიციალიზდება რომ 0.
>> მაგრამ შემდეგ რამოდენიმე ხაზს მოგვიანებით 26 გავითვალისწინოთ რომ სესიის ასლი counter,
მისი გასაღები, აქვს ახალი მნიშვნელობის ენიჭება, რაც მისი მიმდინარე ღირებულების პლუს 1.
მოკლედ, ამ ფაილის ჩანს განახლებას
Counter რომ ინახება შიგნით სესიის superglobal
მიერ დამატება იგი 1, მაგრამ ეს პირველი იტოვებს ასლი წინა ღირებულება
მიერ შენახვა მას ადგილობრივი ცვლადში $ Counter,
და შემდეგ ქვევით აქ ვნახოთ რა რჩება.
თურმე ეს საკმაოდ ბევრი უბრალოდ HTML.
ბოლოში ამ გვერდზე ვხედავთ ხაზი 37 რომ მე ნამყოფი ამ საიტიდან
Counter რამდენჯერმე, ამიტომ არსებობს რამდენიმე საინტერესო თვისებები აქ.
ერთი, ეს ნათლად ცვლადი, მაგრამ ეს არ გვაძლევს, უბრალოდ დააყენა
$ Counter სხეულში თქვენი HTML, რადგან, რა თქმა უნდა
თუ უბრალოდ იქ შორის თქვენი HTML PHP აპირებს ვივარაუდოთ, რომ უბრალოდ HTML.
თქვენ სიტყვასიტყვით მინდა $ counter უნდა დაიბეჭდოს ეკრანზე.
>> მაგრამ ნაცვლად მიერ ჩაშვების შევიდა PHP რეჟიმში
ამ ნაჭერი სინტაქსის შეგვიძლია დინამიურად ჩადეთ ღირებულება აქ
ძალიან მსგავსი სულისკვეთება, თუ რა გავაკეთეთ ბოლო დროის
ჩასმა ღირებულებები შევიდა სტრიქონები.
ფაქტობრივად, ეს მხოლოდ სტენოგრამის ნოტაცია ამას რაღაც მსგავსი სიტყვასიტყვით,
ბეჭდვითი ($ counter) ან თუნდაც რაღაც printf (% s, Counter),
ან თუნდაც, როგორც თქვენ შეიძლება არ მინახავს შემოსული ან სახელმძღვანელოებში,
არსებობს ფუნქცია PHP მოუწოდა ეხო
რომელიც იგივე, და ყველა იმ უბრალოდ აღარ winded გზები
საქართველოს ამბობდა <? =.
ამ ერთ შემთხვევაში არ გჭირდებათ დააყენოს
სიტყვა PHP შემდეგ კითხვის ნიშნის.
ეს არის სტენოგრამის ნოტაცია ამისთვის, კიდევ ერთხელ, რასაც ჩვენ უბრალოდ დაინახა მომენტში წინ
რომელიც echoing გარკვეული მნიშვნელობა.
>> ვნახოთ რა საბოლოო ჯამში ამ რეალურად არის.
ნება მომეცით წასვლა მეტი ჩვენს counter.php ფაილი,
და ჩვენ ვხედავთ, რომ დავით უბრალოდ დაუშვა შეცდომა მიერ თამაშობდა კოდი არსებობს.
მოდით წავიდეთ სარემონტო რასაც he ბრალია,
და შეცდომა ჩანს იქ, წასული, on line 37.
მიხედვით ზევით ამ გვერდზე მე მოინახულა საიტი 0 ჯერ.
კარგად, მოდით წავიდეთ წინ არის, და ზედა ბრაუზერის დააჭირეთ
განაახლეთ ხატი, და მე დააჭირეთ განაახლეთ,
და ახლა მე მოინახულა საიტი 1 დროს, 2, 3, 4, 5, 6, 7, 8.
მართლაც, თუ დავაკვირდებით წყარო ამ გვერდზე ფაქტობრივი კოდის იცვლება,
და შეამჩნია სრული არარსებობის ნებისმიერი PHP, და ეს იმიტომ, რომ
PHP კოდი ფასდება ან ინტერპრეტირებული სერვერის მხარეს,
და ა.შ. ეს იმას ნიშნავს რომ გამოშვებულ PHP სკრიპტი რა საბოლოოდ გაგზავნილი ბრაუზერის,
რომელიც ამ შემთხვევაში ზოგიერთი ნედლეული HTML და ზოგიერთი ნედლეული ტექსტი.
რა ხდება აქ?
>> ისე, საკმაოდ ცოტა ხაზების კოდი მაქვს იმის შესაძლებლობა შესანახად
დაჟინებით მეტი კურსი რამდენიმე წამში, ან თუ ჩვენ დაელოდა ხანგრძლივი საკმარისი,
წუთი, თუნდაც საათი, გარკვეული მნიშვნელობა ისე, რომ ხდის HTTP
როგორც ჩანს stateful თითქოს ჩვენ შეინარჩუნა
ამასთან დაკავშირებით სერვერზე, და ეს მხოლოდ დამახსოვრების რა ვუთხარი მას ბოლო დროს,
მაგრამ რეალურად არსებობს მთელი bunch of სირთულის მიმდინარეობს ქვეშ hood
ჩართვის Cookies რომ საშუალებას აძლევს PHP მისცეს ჩემთვის ეს ილუზია
ამ კალათა მსგავსი ფუნქცია.
ახლა ტრივიალური მაგალითი, სადაც ჩვენ უბრალოდ შენახვა მთელი რიცხვი,
მაგრამ, რომ ფუნქცია დავბრუნდებით იყოს დიდი მნიშვნელობა
როდესაც ჩვენ ვიწყებთ საუბარს უფრო რთული პროექტები,
მათ შორის პრობლემა მითითებული 7.
ეს არის თქვენი ძალიან ბოლო პრობლემა მითითებული CS50.
მე ვიცი, რა სამწუხარო, მაგრამ რასაც თქვენ იპოვით, რომ ჩვენ ვაპირებთ დავასკვნათ
ამ ნაწილში სემესტრის მიერ რეალურად გადასვლის
საწყისი კონტექსტში C თქმა იმ კონტექსტში PHP
მაგრამ დროს ზოგიერთი ძალიან იგივე საფუძვლები
ჩვენ ვისაუბრეთ, გარკვეული დროის.
>> ობიექტური ერთად pset 7 განხორციელება წარმოადგენს CS50 ფინანსთა,
რაც თქვენი საკუთარი ვერსია Yahoo საფინანსო ან Google ფინანსთა
ან თუნდაც Etrade.com რომლითაც თქვენ გაქვთ უნარი
ეძებოთ საფონდო ფასები მოცემული სიმბოლოების, მაგრამ უფრო მეტიც
თქვენ გაქვთ უნარი "ყიდვა" და "გაყიდვას" აქციების
რომ ივაჭრება სხვადასხვა საფონდო ბირჟებზე, რადგან როგორც ამ საწყისი გვერდი
აქ ვარაუდობს, რომელიც რეალურად რამდენად რომელიც ჩვენ დავიწყეთ
პრობლემა კომპლექტი, თქვენ აქვს შესვლის ფორმა რომ ითხოვს მომხმარებლის სახელი და პაროლი.
მას აქვს submit ღილაკზე, მაგრამ ამის შემდეგ, როგორც ჩვენ საბოლოოდ ვხედავთ,
არაფერია ნამდვილად მიმდინარეობს ქვეშ hood yet, რადგან იგი
რჩება თქვენთვის განახორციელოს უნარი რეგისტრაცია ახალი მომხმარებლებს,
უნარი აქციების შესაძენად, გაყიდოს აქციები,
რეალურად გამოიყურებოდეს up მიმდინარე საფონდო ფასები.
>> მართლაც, ეს იქნება როგორც რეალურ სამყაროში, როგორც შეუძლებელია, რადგან ჩვენ
მოიცავს ცოტა კოდი, რომელიც საშუალებას მოგცემთ ერთი ფუნქცია
to შეკითხვის Yahoo Finance, რომელიც შესანიშნავად ხდის ხელმისაწვდომია უფასო მონაცემები
ამისთვის ეძებს up საფონდო ფასები ეფუძნება საფონდო სიმბოლო ან ticker სიმბოლო,
და თქვენ დავუბრუნდეთ მიმდინარე საფონდო ფასი დღეში.
მონაცემები თქვენ რეალურად ვხედავთ ამ კონკრეტულ pset იქნება
შესახებ, როგორც რეალურ სამყაროში, როგორც ეს შეიძლება მიიღოს ასე რომ თქვენ რეალურად interfacing
რეალურ სამყაროს აქციებით, რეალური მსოფლიო ფასები,
და ვნახოთ რა თანხა შეგიძლიათ ალბათ
მომდევნო რამდენიმე დღის განმავლობაში თამაშობდნენ საკუთარი პრობლემის კომპლექტი.
>> მაგრამ პირველი მითითებული ეტაპი როგორ შეიმუშავონ რაღაც რომ ნამდვილად უფრო რთული
ვიდრე counter.php, რომ უფრო რთული, ვიდრე ნებისმიერ Frosh IMS მაგალითები ჯერჯერობით
და მოდით ცდილობენ შემოიღონ რამდენიმე პარადიგმების აქ რომ საშუალებას მოგვცემს
როგორც pset 7 და იქნებ თქვენი საბოლოო პროექტი თუ რაღაც ვებ დაფუძნებული
შეინახეთ კოდი კარგად ორგანიზებული, შენარჩუნება თავის sane,
და მიიღოს ნაბიჯი თანამშრომლობს, თუ CS50 საბოლოო პროექტი
ან სხვაგან თუ გააგრძელებთ პროგრამის რაღაც მომავალში.
არსებობს ამ ზოგადი დიზაინი პარადიგმა
კომპიუტერულ მეცნიერებაში და პროგრამული უზრუნველყოფის დამუშავება ზოგადად
ცნობილია როგორც MVC, მოდელი ხედი კონტროლერი,
და ეს არის სულელური აბრევიატურა, რომელიც ასახავს ძალიან ლამაზი იდეა,
რაც გამიჯვნა სხვადასხვა ასპექტები პროგრამა,
კონკრეტულად შენახვა ცალკე ლოგიკა ან ბიზნეს ლოგიკა ნახვა
ისე, რომ ყველაფერი, რაც მოიცავს რამ, როგორიცაა
მოუწოდებდა ფუნქციები და querying მონაცემთა ბაზები და მოსწონს
ხდება არ შედის თქვენი HTML
არამედ ცალკე ფაილი, და მართლაც, იქ ამ ერთი ფაილი
ტიპიურად, რომ თქვენ არ მოუწოდა კონტროლერი
რომ მართლაც ტვინი უკან ოპერაცია, და ვნახავთ, მაგალითად
ამ რაღაც მომენტში.
>> არსებობს მოდელი, რომელიც პროგრამირების კოდი
რომ არ ვსაუბრობთ თქვენს მონაცემთა ბაზა, რომ მოლაპარაკებები Yahoo ფინანსთა და მოსწონს,
და შემდეგ იქ V in MVC, views,
ყველა პერსონალი, რომელიც დაკავშირებულია ესთეტიკასთან, ფაილი, რომელიც რეალურად შეიცავდეს
თქვენი HTML, შესაძლოა თქვენი CSS და მოსწონს.
იდეა აქ, როგორც ამ სურათს გვთავაზობს, არის ის, რომ კონტროლერი
არის ფაილი, როგორც ჩვენ ვხედავთ მალე და როგორც თქვენ განსაკუთრებით ვხედავთ pset 7,
რომ მსოფლიოში მოლაპარაკებების მეშვეობით მათი ვებ ბრაუზერები.
სწორედ ფაილი რომ იღებს ეწვია შესახებ საჯარო ინტერნეტით,
მაგრამ კონტროლერი მოლაპარაკებები პოტენციურად მოდელი,
რომელიც ერთ ან მეტ სხვა ფაილი რომელიც შეიცავს კოდი დაკავშირებული მონაცემები,
კოდი დაკავშირებული მონაცემთა ბაზებთან და მოსწონს, და მერე მოლაპარაკებები
კონტროლერი ერთი ან მეტი სხვა ფაილი რომელიც ცნობილია როგორც ხედები,
რომლებიც ესთეტიკას ვებ გვერდზე, თარგები of ჯიშები,
რომ შესაძლოა ზოგიერთი მონაცემების შეყვანის, მაგრამ დღის ბოლოს
მხოლოდ ლოგიკა შიგნით დასაწყისში უნდა იყოს გაწევა, რომ მონაცემები,
iterating მეტი მარყუჟის და ფაქტობრივად spitting გარკვეული
HTML დაფუძნებული rendition ან თუნდაც რაღაც PDF.
>> რა არის ლამაზი შესახებ MVC ისაა, რომ თქვენ განსხვავებული ხედვა აქვთ
ეფუძნება ტიპის მოწყობილობა, დაფუძნებული ტიპის ფაილის ფორმატში, რომ თქვენ ნამდვილად
გვინდა დავანახოთ მომხმარებელს.
მოდით შევხედოთ რამდენიმე თანდათანობით უფრო რთული და მოფიქრებული მაგალითები
მიერ დაწყებული პირველი ვერსია 0 აქ.
ნება მომეცით წავიდეთ წინ და ქმნის ჩვენს MVC დირექტორია დღეს
ფაილი სახელად index.php დირექტორიაში 0.
გაითვალისწინეთ ეს არის სუპერ მარტივი და ძალიან underwhelming ნახვა
რომ ერთგვარი ვერსია 0 of Homepage for CS50,
და შეამჩნევთ, თუ როგორ გვაქვს ბმული ლექციები, ჩვენ გვაქვს ბმული სილაბუსი,
და თუ ამ ბმულზე, რათა ლექციები ცნობა URL
up დაბრუნება აპირებს შეცვლის lectures.php.
თუ მე მომდევნოგ ბმული კვირა 1 გავითვალისწინოთ რომ URL ცვლილებების week1.php.
როგორც ჩანს საკმაოდ მარტივია იერარქიული სტრუქტურის აქ.
>> ავიღოთ სწრაფი ნახვა ქვეშ Hood, როგორ ეს ასახული,
და მართლაც, თუ გავითვალისწინებთ index.php ეს საკმაოდ მარტივია.
სინამდვილეში, მიუხედავად იმისა, რომ დავურეკე ამ PHP ფაილი არ არსებობს ფაქტობრივი პროგრამირების კოდი.
აქ კომენტარი რომ დავწერე აქ, PHP ასე მონაწილე არ დასრულდება მდე ხედავს მას.
რა თქმა უნდა, როგორც ადრე, არაფერს რომ შორის PHP tags
იღებს ინტერპრეტირებული, თუნდაც ეს კომენტარი და ინტერპრეტაცია კომენტარი
ნიშნავს მხოლოდ გადაყარეთ ის დაშორებით დროს დღის ბოლოს კი არა,
გაუგზავნოთ ბრაუზერში, ასე რომ ყველაფერი აქ არის მხოლოდ ესთეტიკას.
თუ მე ქმნის ასეთივე lectures.php ესეც მხოლოდ მძიმე კოდირებული ფაილის.
ეს ხდება ე.წ. რაღაც. Php,
მაგრამ ეს მართლაც მხოლოდ. HTML და week1.php, week2.php
ანალოგიურად მხოლოდ markup, ამიტომ არსებობს bunch of ნაკლოვანებები ამ დიზაინის.
ერთი, ეს დიდი ოდენობით ასლი / პასტა.
მიუხედავად იმისა, რომ ერთადერთი, რაც ის შეცვლის მათ შორის ფაილი არის უწესრიგო სია,
li tags, მე მაინც აქვს doc ტიპის, HTML, თავი,
სათაური, მჭიდრო ორგანოს, მჭიდრო HTML და მეტი
ყველა ერთი ფაილი, რაც იმას ნიშნავს, რომ თუ ოდესმე გვინდა, რომ რესტრუქტურიზაცია
ამ ვებ გვერდზე ან restylize ის უნდა წავიდეს და შეცვალოს
ყველა ამ ფაილების ხელით ან ზოგიერთ მასობრივი იპოვოს და შეცვლის.
>> ავიღოთ ნაბიჯი სასურველი სტუმარი გახდებით, აღარ ფიქრობს დიზაინის ვერსია 1 აქ
რომლითაც როგორც პოსტი წაიკითხა, რომ ჩვენ შედის ასე რომ თქვენ შეგიძლიათ ითამაშოთ ერთად
ამ უფრო leisurely სახლში ცნობა გვაქვს აქ
რეზიუმეს ფაილი ვერსია 1 ამ საიტის,
და როგორც ჩანს, რომ მე მას მიღებული საფუძველზე თავი ფაქტორი გარეთ
ზოგიერთი საერთო კოდი, header.php და footer.php.
კარგად, მოდით შევხედოთ რა შიგნით პირველი იმ.
Header.php გამოიყურება ნაცნობი,
მაგრამ შეამჩნია, სადაც იგი მისაღებად შეწყვიტა?
მარჯვენა შემდეგ ხაზი 19, ასე რომ ყველაფერი, რაც იყო საერთო
საწყისი ფაილი index.php, lectures.php,
week1 და week2.php საწყისი წინა მაგალითი.
რა გავაკეთე იყო ასლი და cut ყველაფერი, რაც იყო საერთო ყველა იმ ფაილებს,
ამას ცალკე header ფაილი, და ანალოგიურად წელს footer.php
არც მე ვრცელდება იგივე პრინციპი, რომლითაც მხოლოდ საინტერესო ხაზები
წელს footer.php არიან ამ ორი, მჭიდრო ორგანოს და ახლო HTML.
>> მაგრამ რა ეს იმას ნიშნავს, ახლა ის არის, რომ ახალი ვერსია
საქართველოს index.php შეამჩნევთ, თუ როგორ უფრო მარტივიც ყველაფერი შეიძლება კიდევ.
გაცემული, ცოტა მეტი cryptic ეძებს, ცოტა ნაკლები ინტუიციური
დაიცვას ყველაზე ქვედა, მაგრამ ჩემი ღმერთი, ყველა რომ redundancy არის წასული.
ჩვენ გვჭირდება გამოყენებით PHP ფუნქცია სიტყვასიტყვით მოუწოდა მოითხოვს დასაწყისშივე,
რაც ძალიან თქვენში, გავიხსენოთ, რა C-ს # მოიცავს მექანიზმი.
ჩვენ გვჭირდება header.php ზედა.
ჩვენ გვჭირდება footer.php ბოლოში, და ერთადერთი, რაც არის სხვადასხვა
ან სპეციალური ამ ფაილი content რომ ნიშნავს, რომ უნიკალური მას.
თუ მე მაშინ წასვლას, ვთქვათ, lectures.php, იგივე პრინციპი ვრცელდება.
ერთხელ, რამდენიმე კომენტარი დასაწყისშივე, მაგრამ მერე მოითხოვს header, საჭიროებს ძირი,
და შორის ეს მხოლოდ კმაყოფილია, რომ სინამდვილეში შეიცვალა.
და თუ ჩვენ ჩანდა შევიდა კვირა 1 და 2 კვირა მინდა ვხედავ
რომ იგივე პრინციპი იყო გამოყენებული იქ.
კარგად, ჩვენ არა ვართ საკმაოდ გაკეთდა.
>> მოდით შევხედოთ ვერსია 2, რომელსაც აქვს მსგავსი სტრუქტურა,
მაგრამ შეამჩნევს ახლა მე გააცნო რაღაც.
შეესაბამება 10 მე გააცნო helpers.php,
რომელიც აშკარად შეიცავს დამხმარე ფუნქციები.
დამხმარე ფუნქცია ზოგადად შედარებით მოკლე ფუნქცია
რომ წერთ, რათა დაგეხმაროთ თქვენ out სხვადასხვა ადგილას,
და ვნახოთ რა შიგნით helpers.php.
ამ შემთხვევაში, როგორც ჩანს მას აქვს 2 ფუნქციებს.
შეგახსენებთ, მეორე დღეს ჩვენი კუბი მაგალითად
თქვენ შეგიძლიათ განსაზღვროთ თქვენი საკუთარი ფუნქციების PHP, და რა მე ვაკეთებ ახლა არის მე
განსაზღვრული ფუნქციები მოუწოდა გაწევა footer და გამოიტანოს ჰედერი,
პირველი გამოაქვს პარამეტრი ეწოდება მონაცემები,
რომლის საწყისი მნიშვნელობა არის ცარიელი მასივი, როგორც შესთავაზა იქ,
და ჩვენ შეგვიძლია რეალურად წერენ ამ კიდევ უფრო succinctly in უახლესი ვერსია PHP
იმით ღია მოედანი bracket, დახურული მოედანი bracket.
ეს იმას ნიშნავს, ცარიელი მასივი ზომა 0, მაგრამ მიუხედავად ამისა მასივი.
>> ეს ამონაწერი ფუნქცია არის პატარა სპეციალური ამ
თუ რას აკეთებს არის ის იღებს, როგორც თავისი არგუმენტი ასოციაციურ მასივში
რომ აქვს 0 ან მეტი გასაღები მნიშვნელობის წყვილის, და თუ გაქვთ გასაღები foo
და ღირებულება ბარი ექსტრაქტი ფუნქცია
ქმნის სიტუაციას, რომელშიც ახლა, როგორც ხაზი 11,
თქვენ გაქვთ ადგილობრივი ცვლადში $ foo რომლის ღირებულება არის ბარი.
და თუ თქვენ უფრო გასაღებები და ღირებულებების მონაცემები მასივი,
ანალოგიურად რომ ისინი ამოღებულ იქნეს შევიდა ადგილობრივი ფარგლებს
ან სახელი სივრცეში ისე, რომ footer.php და
იგივე იდეა ქვემოთ აქ ისე, რომ header.php
ხელი მიუწვდება იმ ცვლადების.
ფაქტობრივად, ნება მომეცით გახსენით ისევ header.php
და დავხატოთ ყურადღებას ახლა ეს რას ჰგავს ამ ვერსია.
>> იმის ნაცვლად, რომ მძიმე კოდირების CS50 როგორც სათაური ყოველი ერთი გვერდი
შეამჩნია დინამიურობა რომ შესაძლებელია ახლა.
სტრიქონში 5 მე echoing სათაური ცვლადი,
მაგრამ პირველი მე ავლით, რომ სათაური ცვლადი ფუნქციის მოუწოდა htmlspecialchars.
სულელური სახელი ფუნქციას, სანამ ის არის, მაგრამ ეს მართლაც თუ რას ამბობს.
იგი უზრუნველყოფს, რომ რაიმე სპეციალური სიმბოლოების
in string რომ უკვე ძალაში შევიდა, სწორად გაიქცა HTML.
ეს არის რეალურად გზა თავიდან აცილების რაღაც მოუწოდა ჯვარი საიტი სკრიპტირების თავდასხმა
რის ვინმემ maliciously ან შემთხვევით
მიეცეს საკუთარი HTML თქვენს ნახვა
მიერ pasting შევიდა გარკვეული ფორმით, მაგალითად,
რაღაც, რომ თქვენ არ საკმაოდ ველოდებით, განსაკუთრებით JavaScript კოდი,
როგორც ჩვენ ვსაუბრობთ ერთ კვირაში ან ორ დროს.
>> ეს არის header.php, ეს ხედი
იმ გაგებით, რომ იგი გაძლევთ საშუალებას იხილოთ ესთეტიურად შინაარსი ზოგიერთი მონაცემები კომპლექტი.
მაგრამ უფრო კონკრეტულად, ეს თარგი.
ეს არის ერთგვარი გეგმა არის, თუ რა გვინდა header ყველა გვერდი უნდა გამოიყურებოდეს,
მაგრამ არსებობს გარკვეული დინამიზმი, რომ ჩვენ გვინდა სათაური უნდა დინამიურად ჩასმული
ეფუძნება სათაური ცვლადი
რომ იყო მოპოვებული, როდესაც ჩვენ მოუწოდა, კიდევ ერთხელ,
Render header ფუნქცია.
ახლა, თუ ჩვენ შევხედეთ Render footer, არსებობს რეალურად დიდად არ გამოყენება, რომ ახლავე
რადგან footer.php არ დინამიზმის განაწილებაზე.
არსებობს შეიძლება იყოს, თუმცა ამ ეტაპზე ეს მძიმე კოდირებული სიაში 2 tags,
მაგრამ იგივე იდეა ვრცელდება, ისე, რომ ფაქტობრივად გვთავაზობს რატომ
არც ჩვენ დაგვრჩა დრო მქონე Render ზედა და Render footer ფუნქცია?
ნება მომეცით წასვლა ნაცვლად ახლა შევიდა ვერსია 3,
და ვერსია 3 ში დამხმარე გადავწყვიტე გამარტივება კიდევ უფრო.
>> ნება მომეცით აქვს ერთი Render ფუნქცია.
ნება მომეცით აქვს მიიღოს კიდევ ერთი არგუმენტი, ამ დროს მოუწოდა თარგი,
რაც ნიშნავს, რომ სახელწოდება თარგი,
და მაშინ მე concatenate presumptuously. php რომ ცვლადი ღირებულების,
და მაშინ, თუ ის არსებობს foo.php, bar.php ან header.php და footer.php,
მაშინ მე ვაპირებ წავიდეთ წინ და ექსტრაქტი ცვლადი მონაცემები
და შემდეგ მოითხოვს, რომ გზას.
სხვა სიტყვებით, გამოიყენოს ეს არის, თუ გახსენით index.php
შეამჩნია, რომ მე არ მოვუწოდებ Render header უქმნით.
მე უბრალოდ მოვუწოდებ სივრციდან, მაგრამ გაივლის წელს ციტირებული ღირებულება header
გაარკვიოს რომელიც თარგი მე ნამდვილად გინდათ ჩატვირთვა.
>> მაშინ მეტი აქ შეამჩნია რა ვაკეთებ.
მე გადადის დინამიურად გასაღები უფლების,
ღირებულება CS50 და ეს ძალიან, როგორც დავინახეთ, ადრე,
შეიძლება უფრო ლაკონური in უახლესი ვერსია PHP
სად შემიძლია შეცვლის მასივი ფუნქციის კვადრატულ ფრჩხილებში,
რაც მე ვთავაზობ, კიდევ უფრო იკითხება და, რა თქმა უნდა
ცოტა ადვილია ტიპის.
და რა თქმა უნდა, ერთად Render footer ზარის ბოლოში,
ჩვენ არ გადაიტვირთოთ გადადის მეორე არგუმენტი საერთოდ, არ ასოციაციურ მასივში,
რადგან არაფერი დინამიური შიგნით რომ footer.
უბრალოდ ზოგიერთი ახლო Tags for HTML.
კარგი, ჩვენ აღების ნაბიჯები მართლაც დასუფთავების რამ აქ,
მაგრამ ნება მიბოძეთ გახსენით 2 საბოლოო მაგალითები.
ეს ერთი, ნომერი 4 შეამჩნევთ, რომ მე გააკეთა შეგნებული გადაწყვეტილება არის
გასაუმჯობესებლად საფუძველზე წინა მაგალითად საბოლოოდ იყენებთ იერარქიაში ჩემს ფაილი.
>> გაითვალისწინეთ, რომ ამ შემაჯამებელი, ამ წაიკითხა ჩემთვის, მე გააცნო
მოიცავს დირექტორიაში და შაბლონების კატალოგი
რომლის შინაარსი ვაპირებთ იყოს რამ მინდა მოიცავს
და თარგები რომ მინდა გაწევა, შესაბამისად.
ეს ნამდვილად ჩემთვის მყოფი anal და ცდილობს შეინარჩუნოს რამ Tidy,
შენარჩუნება მსგავსი თამაშები ერთად, მაგრამ ბოლოს შედეგი
ის არის, რომ ჩვენ ახლა აქვს ოდნავ tidier setup, მაგრამ ჩვენ უნდა გვახსოვდეს არის
წელს, მაგალითად, index.php
როდესაც გვჭირდება ფაილი helpers.php
ჩვენ ახლა საჭიროებს ის მეშვეობით შედის / helpers.php
ვიდრე უბრალოდ ამბობდა helpers.php რადგან ახლა რეალურად ქვე დირექტორია.
ახლა, როგორც განზე, თქვენ ნახავთ ამ მაგალითები და ზოგიერთი სხვა
ფუნქციები, როგორიცაა მოითხოვს, მოითხოვს ერთხელ.
არსებობს რეალურად ფუნქცია თავად მოუწოდა მოიცავს, და ისინი ყველა აქვს ოდნავ განსხვავებული ქცევა.
აქ ვამბობ მოითხოვს ერთხელ რათა სუპერ ნათელია, რომ მე მხოლოდ მინდა იმ
დამხმარე შედის ჩემი პროექტი ერთხელ.
მაგრამ თუ მე ფრთხილად და თუ მე რეალურად ფიქრობს მეშვეობით ჩემი ლოგიკა სწორად
ეს უნდა საკმარისი ძალიან უბრალოდ რომ ვთქვათ მოითხოვს up დაბრუნება
ამიტომ სანამ მე თვითონ არ შემთხვევით მოითხოვს, რომ იგივე ფაილი სხვაგან.
ფაქტობრივად, ეს არის ოდნავ უფრო ეფექტური გზა აკეთებს რამ მაშინ გამოყენებით
საჭიროებს ერთხელ, ასე რომ მე მორთვა მისი დანგრევა მხოლოდ საჭიროებს.
>> ავიღოთ ერთი ნაბიჯი შემდგომი.
ეს ბოლო მაგალითი არის, ვერსია 5, აქვს კი სუფთა ფოლდერი იერარქია.
გაითვალისწინეთ რა მე ვაკეთებ აქ თითო წაიკითხა ჩემთვის ამ საბოლოო ვარიანტი
არის მე მაქვს ჩემი HTML დირექტორია, რომელიც მე მქონდა ამ ხნის,
მაგრამ შიგნით იქ ახლა მხოლოდ index.php, lectures.php,
week1.php და week2.php.
მოიცავს დირექტორია ცხოვრობს ერთად საქართველოში HTML დირექტორია,
ამიტომ ამავე დონეზე, როგორც ძმა, ასე ვთქვათ.
ასე რომ არ თარგები საქაღალდეში.
გასაღები takeaway აქ მე გააცნო ცოტა მეტი სტრუქტურის,
მაგრამ გასაღები ფუნქცია, ახლა ის არის, რომ მხოლოდ ფაილები
რომ უნდა იყოს ვებ ხელმისაწვდომი, საჯაროდ addressable
by მისამართი საჯარო ინტერნეტია ჩემი HTML დირექტორია.
>> ამასობაში, სხვა ფაილი, helpers.php, footer.php,
header.php, რომლებიც სავარაუდოდ იქნებ უფრო მგრძნობიარე,
იქნებ დამხმარე რეალურად აქვს გარკვეული მომხმარებლის სახელები და პაროლები ან ინტელექტუალური
ქონების აფეთქდა, ფუნქციები მე ნამდვილად არ მინდა, რომ მსოფლიომ დაინახოს, თუნდაც შემთხვევით.
კარგია პრაქტიკა შეინახეთ საჯარო HTML დირექტორია
ნებისმიერი ფაილი, რომელიც არ გვჭირდება თავს საზოგადოებას.
ყველა თქვენ უნდა გააკეთოთ ამ შემთხვევაში, როდესაც ჩვენ შევხედავთ, მაგალითად,
HTML დირექტორია ს index.php ფაილი,
შეამჩნია ჩვენ უბრალოდ უნდა იყოს ცოტა მეტი სიფრთხილე მოითხოვს
ან მოითხოვს ერთხელ ამ ფაილის.
მე უნდა გააკეთოს პირველი .. წასვლა მშობელი დირექტორია,
მაშინ ნუ / შედის / helpers.php
to ჩაყვინთვის უკან ქვემოთ მისაღებად ფაილი რომ მე აღელვებთ.
>> ნებისმიერი კითხვები შემდეგ MVC
ან ამ შედარებით მარტივი განსახიერება მისი?
და ნება მომეცით ნათლად, რომ ჩვენ ორიენტირებული საკმაოდ მწირი on
V აქ, მოსაზრებები და ფაქტორინგი აღნიშნული თარგები.
ჩვენ ნამდვილად არ გამოირჩევა მეტრში C უბრალოდ არავის გაუკეთებია.
სინამდვილეში, მართლაც არ არის M აქ, და კიდევ ჩვენი C,
კონტროლერი, არ არის ნამდვილად აკეთებს ყველა რომ ბევრი რამ, მაგრამ თქვენ მიიღებთ გაცილებით მეტ
იცნობს ორივე 2 წერილები MVC,
უფრო სწორად, თქვენ მიიღებთ გაცილებით უფრო იცნობს C
წელს MVC პრობლემის კომპლექტი 7, ასე რომ უფრო რომ ჰორიზონტზე.
კითხვები?
იქ რეალურად არავინ აქ.
>> Okay, მოდით ახლა გადავიდეთ მეორე და საბოლოო თემაა დღეს.
სწორედ დანერგვა მონაცემთა ბაზაში.
დღემდე ამ ეტაპზე ჩვენ გვქონდა რამდენიმე გზა შენახვის მონაცემები.
ჩვენ გამოყენებული ცვლადები.
თავში ჩვენს C ფაილი, I / O დისკუსია დავიწყეთ გამოყენებით ტექსტური ფაილების
და გამოყენებით ფაილი მოსწონს fprintf, და შემდეგ ჩვენ კი დაიწყო
ვსაუბრობთ CSV ფაილი ცოტა, მძიმით გამოყოფილი მნიშვნელობები,
ასე რომ ყველა ამ მოგვცა აქვს მონაცემები ინახება
ან არასამთავრობო დაჟინებით ან დაჟინებით.
მაგრამ CSVs ნამდვილად არ ხელს ძებნას
და ჩასმა და წაშლა.
ეს მართლაც მხოლოდ სულელური ტექსტური ფაილი მძიმით
row მიერ row მიერ row მიერ მწკრივი, ასე რომ, თუ გსურთ
ძებნის რომ ფაილის საუკეთესო შეგიძლიათ გააკეთოთ მართლაც ხაზოვანი ძებნა.
თქვენ უნდა დაიწყოს ზედა ფაილი, წაიკითხა მთელი რამ,
და ვეძებთ გარკვეული მნიშვნელობა ინტერესი.
თუ გსურთ ჩადეთ მივანიჭო გაქვთ, იგივე,
iterating მას და ჩასმა კონკრეტულ ადგილას,
და ფაქტობრივად, ამისათვის ყველა ძებნას ლოგიკა თავს.
>> თქვენ ვერ ჭკვიანი ნიმუში შესატყვისი on CSV ფაილი თუ თქვენ თავს დაწეროს კოდი.
თქვენ ვერ ფილტრაციამ CSV ფაილი
თუ თქვენ თავს დაწეროს კოდი.
არ იქნება ლამაზი, თუ ვინმე დააყენოს ყველა ძალისხმევას
რეალურად მიიღოს ძებნას და ადვილი Insertion ადვილი
და წაშლის და განახლებისა და ა.შ.?
სწორედ რა არის მონაცემთა ბაზა.
SQL, სტრუქტურირებული შეკითხვის ენა, არის კიდევ ერთი ენა
რომ ჩვენ შემოღების დღეს აქ, მაგრამ ესეც საკმაოდ ხელმისაწვდომი,
და რა ჩვენ ნამდვილად ვაპირებთ მხოლოდ pluck გარეთ ზოგიერთი ყველაზე salient
მახასიათებლები ასე რომ pset 7 და თუ რაიმე ვებ დაფუძნებული,
თქვენი საბოლოო პროექტი, თქვენ გაქვთ უნარი გამოხატოს თავის
თვალსაზრისით მონაცემები შეკითხვებს.
თქვენ გაქვთ უნარი შესანახად მცირე ან ბევრი მონაცემები
ბევრად უფრო სტრუქტურირებული გზა, რომელიც დასასრულს დღეში
თქვენი ცხოვრება უფრო ადვილია, რადგან ერთად SQL შეგიძლიათ გამოხატოს თავის
გაცილებით უფრო სწორად, ბევრად უფრო მეთოდურად, რათა
დავუბრუნდეთ ზოგიერთი subset მონაცემების უფრო ფართო კორპუსს მონაცემები.
>> შეგიძლიათ წარმოიდგინოთ, რომ მონაცემთა ბაზაში, ამ შემთხვევაში, SQL მონაცემთა ბაზაში, ნამდვილად მოსწონს Excel
ან ნომრები, სადაც ეს ცხრილების,
ან იქნებ მრავალჯერადი ცხრილები, და ცხრილების, რა თქმა უნდა,
აქვს სტრიქონები და სვეტები, და ეს იმიტომ, რომ
SQL მონაცემთა ბაზებთან are relational, ფარდობით იმ გაგებით
რომ მათ შესანახად მონაცემები თვალსაზრისით ამ მაგიდები,
სტრიქონები და სვეტები.
ისინი უმაღლესი საშემსრულებლო ვიდრე რაღაც ცხრილების,
და ცხრილების ნიშნავს გამოყენებული იქნას ადამიანის.
მონაცემთა ბაზა ნიშნავდა გამოყენებული იქნას პროგრამისტი
წერა კოდი წინააღმდეგ, ასე რომ განსახიერება მონაცემთა ბაზის
აპირებს იყოს ბრძანებათა სტრიქონიდან.
>> ერთი ყველაზე პოპულარული relational მონაცემთა ბაზები out არსებობს, კიდევ ერთხელ, MySQL,
რაც შესანიშნავად თავისუფალი, ძალიან მაღალი საშემსრულებლო და ეს არის ის, რაც
Facebook გამოიყენება ძალიან დასაწყისში და გარკვეულწილად მაინც დღეს
შესანახად ბევრი თავისი მონაცემები, და ჩვენ ვხედავთ მომენტში
რომ გამოყენებით შედარებით მარტივი ბრძანებები
ჩვენ შევძლებთ მოვნიშნოთ მონაცემები, ჩადეთ მონაცემები, განახლება მონაცემები,
წაშლა მონაცემები და მოსწონს, მაგრამ საბედნიეროდ, არსებობს უფრო მოსახერხებელი ინტერფეისი
ვიდრე უბრალოდ აკრეფით შავ და თეთრ ზოლზე აქ.
ჩვენ ვიყენებთ pset 7 და მის ფარგლებს გარეთ უფასო ინსტრუმენტი მოუწოდა phpMyAdmin.
სახელი არის დამთხვევაა.
ინსტრუმენტი ხდება განსახორციელებელი PHP,
მაგრამ ეს ფუნდამენტურად შეუსაბამო.
რა არის სასარგებლო შესახებ phpMyAdmin არის, რომ ინტერნეტის მეშვეობით სასარგებლო.
ჩვენ წინასწარ დაყენებული ის ელექტრო თქვენთვის,
და მასთან ერთად თქვენ შეგიძლიათ შექმნათ მაგიდები მონაცემთა ბაზა,
ჩადეთ დისკი მონაცემები, წაშლა მონაცემები და, ზოგადად ვხედავ
თქვენი მონაცემების საკმაოდ მოსახერხებელი გარემოს.
შენი მომხმარებლებს არ ვაპირებთ გამოვიყენოთ phpMyAdmin.
>> ეს მართლაც მხოლოდ ადმინისტრაციულ ან დეველოპერი ს ინსტრუმენტი
რომელთანაც დაინახოს და poke გარშემო თქვენი მონაცემები და გაერკვნენ, თუ როგორ სტრუქტურირებაზე ის,
ჰგავს რომ თავად შეიძლება გამოიყენოთ Excel ან ნომრები,
მაგრამ ეს იქნება დიდი გზა ვიზუალურ რა ხდება ქვეშ hood
ასე რომ თქვენ შეგიძლიათ ფოკუსირება საინტერესო პრობლემის გადაჭრის და არა იმდენად
on arcane ბრძანებები.
მოდით შევხედოთ მაგალითს მონაცემები, რომელიც შეიძლება ინახება tabularly
წელს relational მონაცემთა ბაზაში.
აი ერთი ასეთი მაგალითი.
ახლა, სამწუხაროდ, phpMyAdmin erred მხარეს სროლა გზა ძალიან ბევრი სიტყვა
და გრაფიკული თქვენ, მაგრამ თუ აიფოუნ წელს მხოლოდ
ID სვეტი, მომხმარებლის სახელი სვეტი, და hash სვეტი,
ეს ეფექტურად ცხრილების, მაგრამ მაინც ხდება, რომ იყოს Snippet
საქართველოს მაგიდა შიგნით ელექტრო მოწყობილობების
გამოყენებით ფაილი რომ ჩვენ მოგაწვდით პრობლემების კომპლექტი 7.
>> კერძოდ, ჩვენ მოგცემთ ფაილი, რომელიც წარმოადგენს
მომხმარებლის მაგიდა, ასე ცხრილების შემცველი მომხმარებლების 3 მწკრივი,
რომელთაგან ერთი უნიკალური ID დაწყებული 1 და მიმდინარეობს incremented შემდეგაც.
მეორე სვეტი არის მომხმარებლის სახელი და იმ თქვენ ვინ Hacker,
Hacker გამოცემა ამისთვის pset 2, შესაძლოა, აღიაროს ზოგიერთი ამ მომხმარებლის სახელები მინიმუმ.
წლის მარჯვენა მხარეს არიან პაროლები, მაგრამ ისინი არ ლიტერატურული პაროლები.
ისინი ჰეშები მათი გამოდის
რომ შენახვის პაროლები მონაცემთა ბაზაში არის ნამდვილად ცუდი იდეაა.
თქვენ ალბათ ყველა წაკითხულად რაღაც მომენტში ზოგიერთი ნახვა
ან კომპანიის მონაცემთა ბაზაში მიმდინარეობს კომპრომეტირებული და შემდეგ თქვენ უნდა
პაროლის შეცვლას, თქვენ უნდა მიიღოს თანხის დაბრუნება on რამ
რადგან ზოგიერთი ცუდი ბიჭი რეალურად შეიჭრა თქვენი ანგარიში შედეგად.
>> შენახვის პაროლები ნათელი ტექსტი, unencrypted მონაცემთა ბაზაში
სრულიად asinine, და ჯერჯერობით ეს დიდად სახალისო
მაშინ წასაკითხი შესახებ რამდენიმე ძალიან ცნობილ კომპანიებს,
ხანდახან პრესაში, რომლის მონაცემთა ბაზები არიან დათმობაზე წავიდა,
და რომ ნაწილი არ არის სასაცილო, მაგრამ ის ფაქტი, რომ მონაცემთა ბაზებთან შეიცავდეს unencrypted
პაროლები სასაცილოა რადგან სიტყვასიტყვით ერთი ხაზი კოდი
შეგიძლიათ დაიცვას, რომ კონკრეტული საფრთხე, და რომ ის, რაც ჩვენ გავაკეთეთ აქ.
თუნდაც ჩვენი ყალბი პატარა CS50 ფინანსთა ვერსია
ჩვენ encrypting პაროლები მხოლოდ კარგი ღონისძიება, და იმ ფაქტს, რომ
ყველა ამ პაროლები იწყება $ 1 $ მხოლოდ კონვენციას.
რომ მხოლოდ იმას ნიშნავს, ისინი დაშიფრული ან მართლაც hashed,
რაც მოსწონს ერთი გზა დაშიფვრის ფუნქცია
რის ვერ დავამარცხებთ მისი ეფექტი რაღაც მოუწოდა MD5.
>> ის ფაქტი, რომ 50 არის შემდეგ, რაც იმას ნიშნავს, რომ მარილის ღირებულება
50 გამოყენებული იყო hashing ყველა ამ პაროლები გარდა ერთი.
ნაღმების, რა თქმა უნდა, როგორც ხედავთ, ჰა,
იყო გამოყენებით სხვადასხვა მარილი, ისე იმ თქვენ რომელმაც ოდნავ იმყოფებოდა up
იქნებ წელს Hacker 2, რომ შეიძლება შედეგი ჩვენი რომელმაც გამოიყენა
სხვადასხვა hash ვიდრე სხვები, რადგან ჩემი დაგავიწყდათ ფაქტიურად იგივე
როგორც სხვა მომხმარებლის up there.
რეალურად, თუ თქვენ უკვე ელოდება ყველა ამ კვირის გასარკვევად
რა იმ პაროლები იყო აქ იყო პაროლები, რომ თქვენ ეჭვქვეშ
to crack in Hacker გამოცემა პრობლემა კომპლექტი 2, ასე რომ არა ძალიან სახიფათო.
ფაქტობრივად, Malan ს იგივე იყო რაც jharvard,
მაგრამ თუ ჩვენ დავბრუნდებით ისინი ჩანდა სხვადასხვა.
>> ფოკუსირება jharvard წელს ჟოლოსფერი, რადგან ისინი დამარილებული განსხვავებულად.
ალგორითმი perturbed ისე, რომ
hash ღირებულება, დაშიფრული ღირებულება გამოიყურება ცოტა განსხვავებული
რადგან საშუალებებით იყო ოდნავ განსხვავებული, მაგრამ დაგავიწყდათ ქვეშ hood
ჯერ კიდევ საბოლოოდ ჟოლოსფერი.
ახლა, ვის აინტერესებს ეს?
ისე, ჩვენ თქვენს უზრუნველყოფას ნიმუში მომხმარებლებს, ნიმუში მომხმარებლის სახელები
და ჰეშები მათი პაროლები ასე რომ თქვენ ნამდვილად აქვს გარკვეული
მომხმარებელს CS50 ფინანსთა როდესაც თქვენ პირველად მიიღოს off ადგილზე თქვენი კოდი.
თქვენ უნდა განახორციელოს უფრო მაგიდები შიგნით MySQL, შიგნით მონაცემთა ბაზაში.
თქვენ უნდა შევქმნათ მეტი ცხრილები, ეფექტურად, მაგრამ ჩვენ გადავწყვიტეთ, რომ გადმოგცეთ ეს ერთი
მისაღებად თქვენ დაიწყო, და თქვენ ნახავთ, რომ პრობლემა კომპლექტი სპეციფიკაცია
დადის თქვენ მეშვეობით პროცესში იმპორტიორი ამ მაგიდასთან
და ასევე აეხსნა რა ზოგიერთი მახასიათებლები,
და თქვენ ასევე ვხედავთ, რომ ჩვენ მოგაწვდით კოდი
გაუმკლავდეს hashing ან დაშიფვრის ამ პაროლები,
ასე რომ თქვენ არ გჭირდებათ ფიქრი ძალიან ბევრი იმაზე, თუ რა MD5 ან ანალოგიური არის პრაქტიკულად ყველა შესახებ.
>> ასე რომ, SQL, სტრუქტურირებული შეკითხვის ენაზე.
ეს არის, უბრალოდ, ენა ჩვენ შესახებ დასაწყებად გამოიყენოს pset 7
და შესაძლოა მიღმა მოითხოვოს მონაცემთა ბაზაში გარკვეული.
მონაცემები, კიდევ ერთხელ, ინახება tabularly ამ ფარდობით მაგიდები, სვეტების და სტრიქონების,
მაგრამ მისი გამოყენება ზოგიერთი შედარებით მარტივი სინტაქსი მოსწონს წაშლა,
ჩადეთ, განახლება და აირჩიეთ გავაკეთოთ ზუსტად რომ.
ჩვენ შეგვიძლია წაშლა მონაცემთა ბაზიდან, ჩადეთ,
განაახლოთ მონაცემები, ასევე არჩევა, რომელიც, ვიღებ მონაცემები მონაცემთა ბაზიდან.
როგორ უნდა წავიდეს შესახებ ამით?
ნება მომეცით წავიდეთ წინ შევიდა ელექტრო მოწყობილობების.
ნება მომეცით დახევის up http://localhost,
რომელიც, კიდევ ერთხელ, არის ადგილობრივი ელექტრო თვით.
სწორედ ნაგულისხმევი ზედმეტსახელი.
და ნება მომეცით წასვლა / phpmyadmin.
ეს ხდება, რომ იყოს სპეციალური URL რომ ელექტრო მოწყობილობების არის preconfigured უნდა გვესმოდეს
რომ მაშინვე მოთხოვნა ჩემთვის სახელი და პაროლი.
>> როგორც წესი, მე ვაპირებ აკრიფოთ jharvard და ჟოლოსფერი,
მაგრამ გააცნობიეროს, რომ ადმინისტრაციასა ანგარიშზე კომპიუტერი.
უბრალოდ დამთხვევა, რომ არსებობს ასევე jharvard დარეგისტრირებული CS50 ფინანსთა.
Jharvard, ჟოლოსფერი, შეიყვანოთ მაძლევს ინტერფეისი, რომ ჩვენ ვნახეთ
glimpse of მომენტში წინ, და ეს პატარა აბსოლუტური თავდაპირველად,
მაგრამ დანარჩენი დაარწმუნა, თქვენ არასდროს უნდა დააჭიროთ უმრავლესობა ბმულები ამ ინსტრუმენტს.
თქვენ დასრულდება up გამოყენებით მცირე subset, რომლებიც სუპერ გამოსადეგი,
პირველი რომლის მონაცემთა ბაზების აქ.
თუ მე ახვიდეთ მონაცემთა ბაზა, რომ მე აიძულა მონაცემთა ბაზის შესაქმნელად.
ეს არის მსგავსად შექმნა ახალი Excel ფაილი, ეფექტურად.
მე ვაპირებ წავიდეთ წინ და დაარქვით ლექცია, და მე უბრალოდ აპირებს იგნორირება სფეროში არსებობს, Collation.
მას არ უკავშირდება წარმომადგენლობა მონაცემები მასში,
და მე ვაპირებ დააწკაპუნეთ შექმნა, და ახლა შეამჩნია როგორც მე გაუშვებენ of შექმნა
on მარცხენა მხარეს, სადაც იგი ამბობს, რომ არანაირი მონაცემთა ბაზებთან
მე უნდა მალე დაინახავთ ლექცია მონაცემთა ბაზაში.
>> თუ მე ახლა დააკლიკებთ მარცხენა მხარეს, ლექცია მონაცემთა ბაზა,
შეამჩნია ჩემი ჩანართები შეცვლის ცოტა.
მაქვს სტრუქტურა, SQL, ექსპორტი, იმპორტი და ზოგიერთი სხვა რამ.
სტრუქტურა საკმაოდ ბევრი ცარიელი.
არარის მაგიდები მოიძებნა მონაცემთა ბაზაში, როგორც იგი აცხადებს, აქ,
მოდით შევქმნათ მაგიდა, და მოდით წავიდეთ წინ და შევქმნათ მაგიდა
მინდა სტუდენტები, და რამდენი სვეტების გვინდა?
მოდით შენარჩუნება ეს მარტივი და მოდით ჩანაწერი თითოეული სტუდენტი
ნომერი, სახელი და ელექტრონული ფოსტის მისამართი.
>> ჩვენ გავაგრძელებთ მარტივი მოსწონს, რომ, ასე 3 მწკრივი, წასვლა.
ფორმა, რომ ხედავთ აქ არის ცოტა ბინძურ და აბსოლუტური,
მაგრამ ჩვენ უბრალოდ უნდა გაიაროს ეს row მიერ მწკრივი, ასე ნამდვილად სწრაფად მოდით მივცეთ
პირველი სვეტი ბაზის სახელწოდება ID, უნიკალური იდენტიფიკატორი.
ეს იქნება მთელი რიცხვი. მე შემიძლია რეალურად იგნორირება სიგრძე და ღირებულებებს.
Int იქნება 32 ბიტი არ აქვს მნიშვნელობა რა თქვენ ტიპი იქ, მოდით დატოვეთ ცარიელი.
საწყისი მნიშვნელობა, მე ვერ იყოს იგი null, როგორც განსაზღვრული.
მე ვაპირებ, რომ დატოვოს მარტო. ნუ ვნერვიულობთ რა ღირებულებებს.
მოდით გადახვევა მეტი აქ უფლება, ატრიბუტები.
ეს არის საინტერესო.
მოდით წავიდეთ წინ და გარკვეულწილად თვითნებურად ამბობენ, რომ პირადობის მოწმობები უნდა იყოს ხელმოუწერელი.
ნუ დაკარგავთ რაიმე უარყოფითი რიცხვები.
>> მოდით წავიდეთ 0 დან 4 მილიარდი, მისცეს ან მიიღოს,
და მაშინ მოდით არ შეეხოთ ნებისმიერი ამ სფეროებში უბრალოდ ჯერჯერობით იქ,
მაგრამ მაშინ ნება მომეცით აკრიფოთ სახელი ქვემოთ აქ,
და მაშინ სხვა იყო ელ, ასე დაჭერა არის ელ
და სახელი, აშკარად არ რიცხვებით, მოდით შევცვალოთ ეს სხვადასხვა სფეროში.
თურმე varchar, ცვლადი სიგრძის char,
ჰგავს string in SQL მონაცემთა ბაზაში
მაგრამ ცვლადი სიგრძის, და თქვენ ნამდვილად უნდა ვუთხრათ ეს წინასწარ
მაქსიმალური სიგრძე სიმებიანი, ამიტომ მე ვაპირებ გარკვეულწილად თვითნებურად
მიერ კონვენციის ტიპის 255 სიმბოლო.
მე ვერ მთლიანად ამბობენ 32. მე შეიძლება ითქვას, 1000.
თქვენ სახის საჭიროება უნდა გადაწყვიტოს საკუთარი ეფუძნება თქვენი დემოგრაფიას რა არის
გრძელი სტუდენტი სახელი და წავიდეთ ერთად, რომ ნომერი, ან ცოტა უფრო დიდი,
მაგრამ რა ლამაზი შესახებ varchar არის ეს არ დაგვრჩა
255 bytes ყველა სტუდენტის სახელი.
თუ ეს DAVID ეს არ გამოიყენოს მთელი 255 ბაიტი,
მაგრამ ეს ზედა შეკრული, ამიტომ მე წავიდეთ ერთად 255 მხოლოდ კონვენციის,
მაგრამ ჩვენ შეგვიძლია ვიმსჯელოთ, რომ იყოს ზოგიერთი მცირე მნიშვნელობის და ელექტრონული ფოსტის მისამართი
უბრალოდ უნდა იყოს თანმიმდევრული 255, მაგრამ კვლავ, ჩვენ შეგვეძლო იგივე დებატები.
მაგრამ მე ვაპირებ ერთი სხვა რამ მეტი აქ მარჯვენა მხარეს.
>> რა არის ძლიერი შესახებ მონაცემთა ბაზაში არის ის, რომ ბევრი მძიმე მოხსნას
ან კომპლექსური მუშაობა თქვენთვის.
კერძოდ, მე ნამდვილად არ მაინტერესებს, რა ჩემი სტუდენტის პირადობის ნომრები არიან.
უბრალოდ ნიშნავს, რომ უნიკალური იდენტიფიკატორი მონაცემთა ბაზაში
ასე მაქვს 32-bit ლაკონური წარმომადგენლობა რომ სტუდენტი
ასე, რომ მე გარკვეული გზა ცალსახად საიდენტიფიკაციო მათ
Lest იქ იყოს 2 Davids, მაგალითად, კლასი.
ფაქტობრივად, მე ვაპირებ შეამოწმოთ ამ AI ყუთი, ავტო წუთობრივი,
ისე, რომ მონაცემთა ბაზაში, MySQL, გათვლით out
რა ყველა ახლად ჩასმული სტუდენტის პირადობის იქნება.
მე კი არ უნდა ზრუნავდეს, რომ ჩემს კოდი,
და მე ასევე აპირებს ამოირჩიოთ ქვეშ ინდექსი მენიუ.
ინდექსი ვარდნა ქვემოთ აქ უკვე დაწყებითი, უნიკალური,
ინდექსი და სრული ტექსტი.
შეგიძლიათ იქნებ გამოიცანით რა რამდენიმე ეს ყველაფერი,
მაგრამ აღმოჩნდება, რელატიური მონაცემთა ბაზებთან
თქვენ პროგრამისტი ან მონაცემთა ბაზის ადმინისტრატორი მისაღებად preemptively
მისცეს მინიშნებები მონაცემთა ბაზაში, თუ რა სფეროებში
წელს მაგიდასთან ხართ პატარა სპეციალური.
>> მაგალითად, ამ შემთხვევაში მე ვაპირებ ვთქვა, რომ ID
იქნება პირველადი ინდექსი, წინააღმდეგ შემთხვევაში, ცნობილია, როგორც პირველადი გასაღები.
რა ეს იმას ნიშნავს, ზოგადად ის არის, რომ ამიერიდან ID
იქნება ცალსახად იდენტიფიცირება სტუდენტები ამ მაგიდასთან.
არარის სტუდენტი ექნება იგივე ID რადგან მე დაკისრების ამ შეზღუდვა ან ამ ინდექსის.
უფრო მეტიც, თუ რა ამ გაკეთებას აპირებს ჩემთვის არის ის აპირებს ვუთხრა
MySQL, რომ ID არის სპეციალური.
მე ზრუნვა განსაკუთრებით ID, ამიტომ წავიდეთ წინ და თქვენი ლამაზი მონაცემები სტრუქტურის Magic,
დაამყარონ გარკვეული ხე.
როგორც წესი ეს რაღაც მოუწოდა B ხე, რომელიც ჩვენ არ შევხედოთ კვირის წინ
მაგრამ კიდევ ერთი ასეთი მონაცემები სტრუქტურის მსგავსი სულისკვეთებით, რათა ბინარული ხეები
და ცდილობს, რომ ჩვენ შევხედეთ, მაგრამ თქმას
მონაცემთა ბაზაში ამ სფეროში იმდენად მნიშვნელოვანია, რომ მე ალბათ
გვინდა ექნებათ მოძებნონ მასზე, წავიდეთ წინ და დაამყარონ გარკვეული ხელნაკეთობების
მონაცემები სტრუქტურა მეხსიერების დააჩქარებს ძიება ისე, რომ იდეალურად
ისინი მუდმივი დროის ან თუნდაც ისევე ახლოს რომ რაც შეიძლება
ასე რომ არ გადაეცემა შევიდა ხაზოვანი ძებნა, რომელიც არ იქნება
ყველაზე მაღალი საშემსრულებლო მიდგომა.
პირიქით, ელექტრონულ მისამართზე შეიძლებოდა ყოფილიყო პირველადი გასაღები.
>> თეორიულად, ყველას ელექტრონული მისამართი არის უნიკალური, თუ თქვენ გაზიარების რამდენიმე ანგარიში,
მაგრამ ზოგადად არ არის კარგი გამოიყენოს მსგავსი რამ სიმებიანი
როგორც პირველადი გასაღები, რადგან თუ მისი მიზანი ცხოვრებაში არის ცალსახად იდენტიფიცირება
რიგების თქვენს მაგიდასთან არსებობს არანაირი მიზეზი, რომ გამოიყენოს 255 ბაიტი მაქსიმალურად
to ცალსახად იდენტიფიცირება ვინმეს თუ შეგიძლიათ მიიღოთ გადაურჩა მხოლოდ 4 ბაიტი
ან 32-bit int.
ზოგადად, პირველადი გასაღები უნდა იყოს მოკლე და ლაკონური
და იდეალურად რაღაც რიცხვი ან დიდი int, რომელიც ხდება უნდა იყოს 64 ბიტი.
მაგრამ ელექტრონულ მისამართზე უნდა იყოს უნიკალური, და ერთი თავისებურება მონაცემთა ბაზაში ძალიან
არის აღსასრულებლად უნიკალურობა ჩემთვის.
შერჩევის უნიკალური აქ შემდეგ ელ, მიუხედავად იმისა, რომ თავად მისწერეთ
არის scrolled off ეკრანზე, მე ვამბობ, რომ მონაცემთა ბაზაში
არ ვენდობი მე.
ნუ ჩემთვის ჩადეთ მონაცემთა ბაზაში
იგივე ელექტრონულ მისამართზე ორჯერ, მაშინაც კი, თუ მე ვარ იდიოტი და არ ვარ
ძალიან კარგი, რომ ჩემს IFS და სხვაგან IFS და ფაქტობრივი PHP კოდი
და მე შემთხვევით ნება მომხმარებლის რეგისტრაცია არსებულ ელექტრონულ მისამართზე
მონაცემთა ბაზაში არის კიდევ ერთი დონის თავდაცვის სისწორის
უზრუნველყოს, რომ რომ დუბლიკატი ელექტრონულ მისამართზე არ დასრულდება მდე ცხრილში.
>> ახლა კი პირიქით, ამისთვის სახელი თქვენ ალბათ არ სურს, რომ უნიკალურ
რადგან მაშინ ვერასოდეს ვერ იქნება 2 Davids ან 2 მაიკ Smiths, მაგალითად,
თქვენს მონაცემთა ბაზაში, რომ ერთი ჩვენ უბრალოდ თავი დაანებოს.
მე ვაპირებ წავიდეთ წინ და დააჭირეთ გადარჩენა დროს ქვედა მარჯვენა,
და ყველაფერი გამოიყურება კარგია, მაგრამ შეამჩნია აქ
ეს ნაწილი, რომ ახლა ჩვენ არ დახარჯო ზედმეტი დრო
რადგან სინტაქსი არის პატარა კომპლექსი, და ჩვენ არ უნდა შევქმნათ მაგიდები
ყველა რომ ხშირად, მაგრამ SQL თავისთავად ენაზე
სინტაქსი, რომელიც სწორედ აქ, რომ მე მონიშნულია.
რა phpMyAdmin მართლაც არის ის უქმნის web-based GUI თქვენთვის
რომელთანაც შეგიძლიათ დაზოგოთ დრო და არ აქვს ხელით აკრიფოთ გარეთ
საკმაოდ ხანგრძლივი SQL query იგრძნობა.
>> სხვა სიტყვებით, თუ უნდოდა ხელით შექმნა ამ მაგიდასთან,
არც იმ შავი და თეთრი სწრაფი ან თუნდაც phpMyAdmin
გამოყენებით ამ სხვა tab, ამ SQL tab სადაც შეგიძლიათ აკრიფოთ ნებისმიერ SQL queries
გსურთ, გულწრფელად, ამ შემთხვევაში აქვთ აღებული ჩემთვის წუთი
რეალურად გვახსოვს მთელი სინტაქსი, და მაშინაც მე ალბათ ექნება
გარკვეული typos, ამიტომ ეს ინსტრუმენტი არის სასარგებლო რამ, როგორიცაა, რომ, და ეს ასევე სასწავლო.
თქვენ შეგიძლიათ დაიწყოს infer რა სინტაქსი არის
მხოლოდ ლამაზი ფერი კოდირების რომ phpMyAdmin ამატებს
ჩვენი ვიზუალური მოხერხებულობისთვის.
მაგრამ ახლა მოდით ეს ნაცვლად.
ნება მომეცით წასვლა ჩასმა tab ზედა, და ნება მომეცით წავიდეთ წინ და ჩადეთ მაგალითად
პირადობის ვთქვათ-რეალურად არ მაინტერესებს.
იგი აპირებს ავტომატური იყოს. მე ვაპირებ ნება ბაზაში გაუმკლავდეთ ამ.
მაგრამ მე უნდა დავით, და ჩემი ელ უნდა იყოს malan@harvard.edu.
>> მოდით წავიდეთ წინ აქ და დასვა მაიკ სმიტი, როგორც მეორე.
მე მივცემ თავს გვარი ისევე,
და გვექნება მას იყოს smith@example.com,
და მაშინ სად მივდივარ შემდეგი?
ასევე, ის ჰგავს გადასვლა არის ღილაკს დააჭირეთ და voila.
გაითვალისწინეთ ზედა 2 ხაზად ჩასმული.
ეს არის ფაქტობრივი SQL შეკითხვა.
სწორედ phpMyAdmin ინსტრუმენტი შესრულებული ჩემთვის,
მაგრამ საბოლოო ჯამში, განცხადებების, თუ მე ახლა წასვლა დათვალიერება tab,
, ვნახოთ 2 რიგები ამ მაგიდასთან, ძალიან თქვენში ესთეტიურად
ცხრილის ვნახეთ ადრე ჩვენი მომხმარებლებს pset 7,
ერთი რომელთაგან დავით Malan, ერთი რომელთაგან ახლა არის მაიკ სმიტი.
მაგრამ უნდა იყოს ნათელი, მე არ უნდა გამოვიყენოთ phpMyAdmin,
და მართლაც, თქვენ აპირებს მალე წერილობით კოდი pset 7
რომ automates პროცესში დასძინა რიგები, წაშლის რიგები, განახლებაზე რიგები და მოსწონს,
ნება მომეცით, ნაცვლად წასვლა SQL tab აქ
და ტიპის არჩევა * სტუდენტური აქ
ელ = "malan@harvard.edu."
>> სხვა სიტყვებით ვარაუდობენ ახლა თქვენ გაქვთ
ზოგიერთი HTML ფორმას, და მომხმარებლის ტიპის თავის ელექტრონულ მისამართზე, მათ შორის სხვა სფეროებში,
და მიზანი ახლა არის PHP უკან ბოლომდე კოდი
რეალურად გამოიყურებოდეს up ამ მომხმარებლის სხვა დეტალები.
რა არის თქვენი სრული სახელი? როგორია თქვენი ნომერი?
თქვენ შეეძლო დაეწერა SQL query მოსწონს ეს შეარჩიეთ * სტუდენტური
სადაც ელ = "malan@harvard.edu."
და თუ დაწკაპეთ წასვლა, შეამჩნია, რომ მე უნდა, და მართლაც მე, დაიბრუნებს მხოლოდ ერთი მწკრივი.
მაიკ არის გამოტოვებული ამ შედეგი კომპლექტი, როგორც კრებული რიგების
ზოგადად მოუწოდა, რადგან მას არ აქვს იგივე ელექტრონულ მისამართზე, როგორც ჩემთვის.
>> ახლა, ისევ, აქ pset 7 თქვენ გამოიყენებთ phpMyAdmin როგორც ადმინისტრაციული ინსტრუმენტი
და პედაგოგიური ინსტრუმენტი უნდა ვისწავლოთ თქვენი გზა
გარშემო სამყარო SQL, მაგრამ დღის ბოლოს
თქვენ უნდა წერა ამ queries შიგნით ფაქტობრივი PHP კოდი,
და ასე ადევნეთ თვალყური in Zamyla ს walkthrough კერძოდ
აქ თქვენ მიიღებთ ტური განაწილების კოდი ამ პრობლემის კომპლექტი
აქ ჩვენ მოცემული არა მხოლოდ ესთეტიკის ამისთვის შესვლის გვერდზე
და ლამაზი Sexy ლოგო, რომელიც ამბობს, CS50 ფინანსთა, მაგრამ ჩვენ ასევე მოცემული
bunch of ფუნქციები რომ გახდის თქვენს ცხოვრებაში ცოტა ადვილია.
ჩვენ ასევე წერილობითი ნაწილი pset თქვენთვის,
შესვლა ნაწილის კერძოდ, გადმოგცეთ გრძნობა წარმომადგენელი დიზაინი
რომ რეალურად იყენებს კონტროლერი, მაგალითად, index.php,
login.php და მოსწონს, და შემდეგ თქვენ ნახავთ pset ასევე აქვს შაბლონების კატალოგი
რომ აქვს ყველა თქვენი შეხედულებები, ყველა ესთეტიკას.
და ა.შ. საერთო Workflow in pset 7 იქნება, რომ
თქვენი წევრებს ეწვევა კონტროლერი მეშვეობით მისამართს ბრაუზერში.
რომ კონტროლერი შეიცავს PHP კოდი, რომ თქვენ წერდა და შიგნით თქვენი PHP კოდი
შესაძლოა ზოგიერთი ხაზები SQL წყობილი შორის ორმაგი შეთავაზებები
და გადავედით ფუნქცია ჩვენ წერდა მოუწოდა შეკითხვის
რომელიც დაგეხმარებათ გაიგო ბაზაში გამოყენების გარეშე მსგავსი რამ
ადმინისტრაციული ინსტრუმენტი, როგორიცაა phpMyAdmin.
>> თქვენ გექნებათ დაწერა SQL განცხადებებს PHP კოდი
და დავუბრუნდეთ PHP მასივი შედეგი კომპლექტი,
საქართველოს რიგები რომ რეალურად ემთხვევა, რომ შეკითხვა.
და ასეთივე იქნება თქვენ ვერ გააკეთებს ჩანართები ან წაშლის
ან განახლებები ან მოსწონს, სინტაქსი, რომელიც საკმაოდ მსგავსი,
და თქვენ ნახავთ რამდენიმე ხაზზე ცნობას, საწყისი განაწილების კოდი
და pset კრავენ თავად ზუსტად როგორ წავიდეთ შესახებ აკეთებს, რომ.
გააცნობიეროს საბოლოოდ ჩვენ ნამდვილად მხოლოდ scratching ზედაპირზე SQL
და MySQL, მაგრამ ძალა ნამდვილად არის ის, რომ ათავისუფლებს თქვენ
ფოკუსირება პრობლემების გსურთ მოგვარებას, გამოყენების შემთხვევები გსურთ განახორციელებს
გარეშე ინერვიულოთ საკმაოდ იმდენი, მინიმუმ დილით,
დაახლოებით სად და როგორ შევინახოთ და მოძებნოთ თქვენს მონაცემთა ბაზაში,
და ეს არის საკმაოდ სიტყვასიტყვით, სადაც Facebook თავად მიიღო მისი დაწყების
გამოყენებით MySQL და შემდეგ გამოყენებით მეტი MySQL სერვერები და შემდეგ უფრო MySQL სერვერები
ადრე ხანგრძლივი სანამ ისინი მოუწია, რათა რეალურად დაიწყოს ფიქრი რთულია, თუ როგორ უნდა
შენახვის მონაცემები, როგორ შესანახად კიდევ უფრო ეფექტურად,
ამიტომ, მიუხედავად იმისა, ჩვენ თავისთავად ის ფაქტი, რომ მაჩვენებლები და უნიკალური შეზღუდვების
და ა.შ. უბრალოდ მუშაობა იქ ძალიან საინტერესო საუბარი
რომ ეს ყველა საბოლოოდ, ასე რომ მიხვდებიან, რომ ჩვენ უბრალოდ scratching ზედაპირზე
თუ რა შეიძლება საბოლოოდ თქვენთვის ან თქვენი პროექტები საკმაოდ ცოტა დიდი მონაცემები.
>> აღნიშნულის გათვალისწინებით, მოდით დამთავრდეს აქ, და ვნახავთ, თქვენ მომავალ კვირას.
[CS50.TV]