[Powered by Google Translate] [Week 8, Sambungan]
[David J. Malan] [Universiti Harvard]
[Ini adalah CS50.] [CS50.TV]
>> Ini adalah CS50, jadi ini adalah akhir 8 Minggu di sini.
Kami sudah tentu mempunyai sedikit taufan awal minggu ini,
jadi sekarang ia adalah benar-benar hanya anda dan saya di dalam dewan kuliah ini,
tetapi hari ini kita meneruskan perbualan kami tentang PHP
dan tentang pengaturcaraan web lebih amnya, dan kita juga memperkenalkan idea
pangkalan data, terutamanya yang dipanggil MySQL, yang cukup popular pada hari ini,
dalam sebahagian besar kerana berskala serta kerana menjadi sumber bebas dan terbuka.
>> Tetapi pertama, lihat di mana kita berhenti kali terakhir.
Ingatlah bahawa kita telah melihat Frosh beberapa contoh IM,
dan ini adalah bentuk yang mengerikan bahawa saya datang dengan kira-kira 15 tahun + yang lalu
untuk mempunyai pelajar pada daftar kampus untuk sukan bayat di antara dinding
tanpa sebenarnya perlu berjalan lagi di seluruh kawasan itu untuk Wigglesworth
ke slaid sekeping kertas fizikal bawah pintu beberapa pengawas mahasiswa.
Sebaliknya kita berpindah segala-galanya dalam talian, tetapi untuk berbuat demikian kita perlu untuk menggunakan
daripada beberapa teknologi, jadi satu, kita perlu HTML, bahasa tokokan hiperteks,
yang sekali lagi adalah ini bahasa markup yang anda membuat laman web strukturnya.
>> Menggunakan sedikit CSS pada hari ini, melata style sheet,
di mana kita menggunakan stylizations laman web menggunakan sintaks yang sedikit berbeza,
manakala HTML adalah semua tentang struktur tersebut.
Kita juga perlu untuk memperkenalkan bahasa pengaturcaraan web.
Dalam kes ini, kita akan menggunakan PHP, dan PHP akan membolehkan kita
ke kandungan output dinamik serta melakukan perkara-perkara perancangan seperti
menghantar e-mel, seperti mana yang berlaku pada nota kita meninggalkan minggu lepas.
>> Ingatlah bahawa kod ini adalah dalam 2 bahagian.
Satu, kita terpaksa froshims3.php,
dan ini adalah sebahagian besarnya markup dengan bentuk HTML di dalamnya,
sedikit kecil CSS di sini dalam ciri-ciri gaya
supaya bentuk itu sendiri akan berpusat pada halaman, tetapi lebih dari itu
kami mempunyai beberapa input borang wakil, medan teks Kotak pilihan,,
beberapa butang radio, pilih menu, dan butang submit.
Dan melalui borang ini, kami menyerahkan untuk fail yang nampaknya dipanggil register3.php,
yang sendiri kelihatan sesuatu yang kecil seperti ini.
Kini, kebanyakan kod di register3.php, ingat, adalah semua tentang e-mel.
Ia tidak sedikit pengesahan borang yang telah dikemukakan untuk memastikan
bahawa bidang sebenarnya syarat yang dijangka.
Kemudian kita dipanggil beberapa fungsi PHP menggunakan sedikit sintaks baru,
walaupun ia dipinjam dari C.
>> Ini pengendali arrow membolehkan kita untuk membuat menggunakan sesuatu yang dipanggil berorientasi objek pengaturcaraan.
Kami tidak akan pergi ke mana-mana secara terperinci di sini, tetapi tahu sekarang
ia adalah cara yang mempunyai fungsi-fungsi yang berkaitan dengan objek,
yang adalah sejenis khas struktur, seperti yang kita lihat di C.
Tetapi untuk sekarang, hanya mengambil kepercayaan bahawa ini adalah sintaks yang betul untuk menggunakan
apabila menggunakan perpustakaan seperti perpustakaan PHPMailer ini.
Dan kemudian oleh akhir fail ini kita telah dijana secara dinamik e-mel
yang mendapat dihantar ke akaun jharvard@cs50.net saya
dari akaun jharvard@cs50.net saya,
dan kami memaklumkan kepada pengguna dengan sewajarnya bahawa mereka telah mendaftar untuk sukan ini.
Itu adalah cukup banyak apa tapak Frosh IM lakukan semua tahun-tahun yang lalu
apabila saya dilaksanakan, diberikan, dalam bahasa yang berbeza,
tetapi ia menunjukkan anda mungkin kuasa yang anda ada
sekarang bahawa anda boleh meluahkan diri anda bukan sahaja programatik
pada tahap yang rendah dalam bahasa seperti C tetapi pada tahap yang lebih tinggi
dengan aplikasi ini dunia yang amat nyata seperti e-mel untuk benar-benar menyelesaikan
beberapa masalah dunia sebenar.
>> Kini, sudah tentu, walaupun saya menggunakan skrip ini untuk menjana beberapa
e-mel dinamik dari jharvard@cs50.net, yang memang akaun
bahawa saya mempunyai akses kepada, jangan menjadi agak berhati-hati untuk menghantar
mail sahaja dari akaun yang sebenarnya anda sendiri,
supaya perkara mendapatkan anda dalam sedikit air panas dalam kehidupan.
Dengan itu berkata, mari kita kini peralihan untuk menyelesaikan masalah yang berbeza sama sekali,
bahawa negeri penahan.
Kini, apakah ini sebenarnya bermakna?
HTTP, ini protokol pemindahan hypertext,
sebenarnya protokol bernegara, dan apa yang bermakna ini adalah bahawa
apabila anda tarik sehingga sesuatu seperti Google.com dan kemudian tekan enter
biasanya pelayar anda mempunyai beberapa jenis ikon berputar yang kemudian
keputusan dalam beberapa laman web yang dimuat turun,
dan kemudian bahawa ikon sedikit berhenti berputar, dan bahawa sesungguhnya mencadangkan
HTTP telah menyiapkan beberapa jenis sambungan kepada pelayan dan itu sahaja.
HTTP adalah bernegara dalam erti kata bahawa ia tidak mengekalkan
sambungan berterusan kepada pelayan di Skype dengan cara yang sama tidak
atau GChat tidak kerana dengan HTTP
andaian adalah bahawa apabila anda telah diambil laman web itu sahaja.
>> Sekarang, dalam realiti hari ini di laman seperti Facebook dan Google Maps
dan Twitter dan sebagainya terdapat dinamisme yang lebih banyak di mana
walaupun selepas ikon yang berhenti berputar anda sebenarnya boleh mendapatkan lebih banyak update
dari pelayan, lebih banyak tweet, kemaskini status di Facebook dan sebagainya.
Tetapi, walaupun yang menggunakan teknik yang kita akan bercakap tentang dalam satu atau dua minggu
dikenali sebagai Ajax menggunakan bahasa yang dipanggil JavaScript,
tetapi pada akhir hari, HTTP masih bernegara.
Dan lagi jika anda entah bagaimana mahu ingat perkara-perkara mengenai pengguna
walaupun selepas mereka telah dicabut dari pelayan anda
PHP tidak mampu anda satu cara untuk berbuat demikian
kerana, seperti yang kita lihat masa lalu, PHP mempunyai beberapa superglobals,
dan Superglobal adalah, sekali lagi, pembolehubah global khas
yang diserahkan kepada anda oleh pelayan web dan oleh PHP sendiri.
>> Anda tidak perlu berbuat apa-apa untuk meletakkan nilai-nilai di dalamnya,
dan antara superglobals kita telah melihat setakat mendapatkan dan hantar,
yang mana medan borang diletakkan secara automatik untuk anda,
serta beberapa orang lain yang kita tidak pernah melihat lagi.
Dalam _server $ adalah beberapa pembolehubah khas yang berkaitan dengan pelayan sendiri.
Apakah alamat IP, apa protokol, HTTP atau HTTPS adakah anda menggunakan,
apa permintaan kaedah adakah anda menggunakan dan sebagainya, jadi ada beberapa yang menarik,
butiran berair tentang pelayan, dan pada hakikatnya, pengguna di sana juga.
Terdapat $ _cookie, yang mana perkara-perkara ini dipanggil cookies disimpan.
Kami tidak akan menghabiskan masa pada cookies diri mereka hari ini,
tetapi tahu sekarang bahawa cookie adalah hanya sebahagian kecil maklumat
bahawa pelayan web boleh menanam pada pelayar web
dan seterusnya RAM atau cakera keras komputer
untuk menyimpan maklumat tentang pengguna, misalnya, nama pengguna mereka
supaya mereka tidak perlu menaip setiap kali mereka log masuk atau beberapa
nombor unik atau pengenal pasti bagi pengguna yang
supaya anda tidak perlu menyusahkan mereka dengan jenis yang sama soalan mengenai
keutamaan dalam masa depan, tetapi kebanyakan kepentingan
sekarang adalah $ _session.
>> Ini Superglobal, yang, seperti yang lain, diserahkan kepada anda secara automatik oleh PHP
apabila anda menulis laman web berasaskan PHP-
boleh menyimpan apa sahaja yang anda mahu, rentetan, integer,
mata terapung, nilai, array, objek,
benar-benar apa-apa yang anda mahu, dan ia membolehkan anda untuk menyimpan dalam apa-apa cara
bahawa walaupun jika pengguna melawat anda sekarang dan kemudian
datang kembali minit dari sekarang atau 5 minit dari sekarang kerana
mereka mengambil masa mereka sebelum mengklik beberapa pautan lain
PHP akan memastikan bahawa apa sahaja yang anda dimasukkan ke dalam Superglobal sesi itu
minit atau 5 minit lalu masih akan berada di sana apabila pengguna pulangan.
Dan di bawah hood Superglobal ini dilaksanakan dengan cara
perkara-perkara yang dipanggil cookies, tetapi untuk sekarang, ia adalah hanya satu abstraksi
di mana ia adalah jenis bersamaan perancangan shopping cart.
Apa sahaja yang anda, pengaturcara, dimasukkan ke dalam itu
array bersekutu Superglobal akan berada di sana beberapa beberapa minit kemudian
sehingga anda memadamkannya atau sehingga pengguna berhenti pelayar beliau sama sekali.
>> Mari kita melihat contoh bagaimana perkara ini sebenarnya digunakan.
Dalam counter.php kalangan keping hari ini kod
kita mempunyai baris berikut.
Pada permulaan fail ini kita mempunyai sekumpulan komen biru, yang tidak menarik buat masa sekarang.
Tetapi dalam 13 baris kita mempunyai baris baru,
session_start, dan yang benar-benar melakukan apa yang dikatakan.
Ia bermula sesi.
Ia membolehkan anda untuk menggunakan yang besar Superglobal $ _session, dan ia adalah semudah itu.
Sekarang, jika kita teruskan untuk melihat pada garis 16, mari kita cuba untuk mengetahui apa yang laman web ini akan lakukan.
Jika (isset ($ _SESSION ["kaunter"]) kemudian pergi ke hadapan
dan kedai dalam pembolehubah kaunter, kaunter kecil,
$ _SESSION ["Kaunter"].
Ini seolah-olah mengisytiharkan pembolehubah tempatan yang dipanggil kaunter
di mana ia meletakkan salinan apa yang ada di dalam satu Superglobal
dipanggil sesi di lokasi "kaunter."
Yang lain, nampaknya, ini kaunter sedikit ubah tempatan, dimulakan kepada 0.
>> Tetapi kemudian beberapa baris kemudian dalam 26 notis bahawa salinan sesi kaunter,
utamanya, mempunyai nilai yang ditugaskan baru yang adalah nilai semasa campur 1.
Secara ringkas, fail ini seolah-olah mengemaskini
kaunter yang disimpan di dalam Superglobal sesi
oleh incrementing ia sebanyak 1, tetapi ia pertama mengekalkan salinan nilai sebelumnya
dengan menyimpannya dalam pembolehubah tempatan dipanggil $ kaunter,
dan kemudian turun di sini mari kita lihat apa yang tinggal.
Ia ternyata ia adalah cukup banyak hanya HTML.
Pada bahagian bawah halaman ini, kita lihat dalam 37 baris yang saya telah melawat laman ini
bilangan kaunter kali, jadi terdapat ciri-ciri pasangan yang menarik di sini.
Satu, ini adalah jelas pembolehubah, tetapi ia tidak mencukupi untuk hanya meletakkan
$ Kaunter dalam badan HTML anda kerana kursus
jika ia hanya ada di kalangan PHP HTML anda akan menganggap bahawa hanya HTML.
Anda benar-benar mahu $ kaunter akan dicetak pada skrin.
>> Tetapi bukan dengan menjatuhkan ke mod PHP
dengan sehelai ini sintaks kita dinamik boleh memasukkan nilai di sini
sangat serupa dalam semangat untuk apa yang kita lakukan masa lalu dengan
memasukkan nilai ke dalam rentetan.
Malah, ini adalah hanya notasi trengkas untuk mengatakan sesuatu seperti ini benar-benar,
cetak ($ ​​kaunter) atau bahkan sesuatu seperti printf (% s, kaunter),
ataupun, kerana anda mungkin telah dilihat dalam talian atau dalam buku teks,
ada fungsi dalam PHP dipanggil echo
yang melakukan perkara yang sama, dan semua orang adalah cara hanya lagi lebar
mengatakan <? =.
Dalam satu kes ini, anda tidak perlu meletakkan
PHP perkataan selepas tanda tanya.
Ini adalah notasi trengkas, sekali lagi, apa yang kita hanya melihat seketika lalu
yang mengulangi beberapa nilai.
>> Mari kita lihat apa hasil akhir ini sebenarnya adalah.
Mari saya pergi lebih ke dalam fail counter.php kami,
dan kita akan melihat bahawa Daud hanya membuat kesilapan dengan bermain dengan kod di sana.
Mari kita pergi menetapkan apa sahaja yang beliau diskrukan sehingga,
dan kesilapan itu seolah-olah berada di sana, pergi, pada 37 baris.
Menurut ke atas halaman ini, saya telah melawat laman web ini 0 kali.
Nah, mari kita pergi ke hadapan sekarang, dan pada bahagian atas pelayar klik pada
reload ikon, dan saya klik reload,
dan sekarang saya telah melawat tapak 1 masa, 2, 3, 4, 5, 6, 7, 8.
Dan sesungguhnya, jika kita melihat sumber halaman ini kod sumber sebenar berubah,
dan notis ketiadaan lengkap PHP mana-mana, dan itu kerana
Kod PHP dinilai atau ditafsirkan sebelah pelayan,
dan sebagainya yang bermakna bahawa output skrip PHP adalah apa yang akhirnya dihantar ke pelayar,
yang dalam kes ini adalah beberapa HTML mentah dan beberapa teks mentah.
Apa yang berlaku di sini?
>> Nah, dengan agak beberapa baris kod yang saya dapat menyimpan
berterusan sepanjang beberapa saat, atau jika kita menunggu cukup lama,
minit, walaupun jam, beberapa nilai dalam cara yang menjadikan HTTP
stateful kelihatan seolah-olah kita telah mengekalkan
ini sambungan kepada pelayan, dan ia hanya mengingati apa yang saya memberitahu ia kali terakhir,
tetapi pada hakikatnya terdapat sekumpulan keseluruhan kerumitan yang berlaku di bawah hood
melibatkan cookies yang membolehkan PHP untuk memberikan saya ilusi ini
kart membeli-belah ini seperti ciri.
Buat masa sekarang, satu contoh yang remeh di mana kita hanya menyimpan integer,
tetapi ciri yang akan kembali untuk menjadi nilai yang besar
apabila kita mula bercakap tentang projek-projek yang lebih kompleks,
kalangan mereka masalah menetapkan 7.
Ini adalah masalah anda yang terakhir ditetapkan dalam CS50.
Saya tahu, ia begitu sedih, tetapi apa yang anda akan dapati adalah bahawa kita akan menyimpulkan
ini sebahagian semester dengan sebenarnya peralihan
dari konteks C pastinya konteks PHP
tetapi semasa menggunakan beberapa asas-asas yang sama
kita telah bercakap tentang untuk beberapa ketika.
>> Objektif dengan pset 7 adalah untuk melaksanakan CS50 Kewangan,
yang adalah versi anda sendiri Yahoo Kewangan atau Kewangan Google
ataupun Etrade.com mana anda mempunyai keupayaan untuk
melihat harga saham untuk simbol yang diberikan, tetapi lebih daripada itu
anda mempunyai keupayaan untuk "membeli" dan "menjual" saham
yang didagangkan di pelbagai bursa saham kerana sebagai halaman rumah ini
sini mencadangkan, yang benar-benar sejauh mana kita telah mula
set masalah bagi anda, anda mempunyai satu bentuk login yang meminta nama pengguna dan kata laluan.
Ia mempunyai butang submit, tetapi selepas itu, kerana akhirnya kita akan melihat,
tiada apa yang benar-benar berlaku di bawah hood lagi kerana ia
kekal bagi anda untuk melaksanakan keupayaan untuk mendaftar pengguna baru,
keupayaan untuk membeli saham, untuk menjual saham,
untuk benar-benar melihat harga saham semasa.
>> Dan sesungguhnya, ini akan menjadi sebagai dunia sebenar mungkin kerana kita lakukan
termasuk sedikit kod yang akan membolehkan anda dengan fungsi tunggal
query Yahoo Kewangan, yang hebat membuat data percuma yang disediakan
untuk mencari harga saham berdasarkan simbol saham atau simbol ticker,
dan anda mendapat kembali harga saham semasa hari.
Data anda sebenarnya melihat dalam pset ini khususnya akan
kira-kira sebagai dunia sebenar kerana ia boleh mendapatkan supaya anda sebenarnya pengantaramukaan
dengan saham dunia sebenar, harga dunia sebenar,
dan kita akan melihat berapa banyak wang yang anda boleh membuat mungkin
dalam tempoh beberapa hari akan datang bermain dengan set masalah anda sendiri.
>> Tetapi mari kita mula-mula menyediakan pentas untuk bagaimana untuk reka bentuk sesuatu yang sudah tentu lebih rumit
daripada counter.php, yang lebih rumit daripada mana-mana IM Frosh contoh setakat ini,
dan mari kita cuba untuk memperkenalkan beberapa paradigma di sini yang membolehkan kita
untuk kedua-dua pset 7 dan mungkin bagi projek akhir anda jika anda melakukan sesuatu berasaskan web
untuk menyimpan kod anda teratur, untuk menjaga diri anda waras,
dan untuk mengambil langkah ke arah bekerjasama, sama ada di dalam projek akhir CS50
atau di luar jika anda terus untuk memprogram sesuatu di masa hadapan.
Ada ini paradigma reka bentuk umum
dalam bidang sains komputer dan pembangunan perisian lebih amnya
dikenali sebagai MVC, model view pengawal,
dan ini adalah singkatan bodoh yang menggambarkan idea yang sangat bagus,
yang merupakan pemisahan aspek yang berbeza program,
khusus menjaga berasingan logik atau logik perniagaan laman web
jadi apa-apa yang yang melibatkan perkara-perkara seperti
memanggil fungsi dan pertanyaan pangkalan data dan sebagainya
tidak berlaku di kalangan HTML anda
tetapi dalam fail yang berasingan, dan sesungguhnya, ada fail ini satu
biasanya bahawa anda telah dipanggil pengawal
yang benar-benar otak di sebalik operasi, dan kita akan melihat contoh
ini hanya seketika.
>> Ada model yang pengaturcaraan kod
yang tidak bercakap kepada pangkalan data anda, yang bercakap dengan Yahoo Kewangan dan sebagainya,
dan kemudian ada V di MVC, pandangan,
semua barangan yang berkaitan dengan estetika, fail-fail yang sebenarnya mengandungi
HTML anda, mungkin CSS anda dan sebagainya.
Idea di sini, sebagai gambar ini mencadangkan, adalah bahawa pengawal
adalah fail, seperti yang kita tidak lama lagi akan melihat dan seperti yang anda terutamanya akan melihat dalam pset 7,
bahawa dunia bercakap dengan melalui pelayar web mereka.
Itu adalah fail yang mendapat dilawati di internet awam,
tetapi pengawal bercakap berpotensi model,
yang merupakan satu atau lebih fail lain yang mengandungi kod yang berkaitan dengan data,
kod yang berkaitan dengan pangkalan data dan sebagainya, dan kemudian ia bercakap kepada
pengawal satu atau lebih fail lain yang dikenali sebagai pandangan,
yang estetika laman web, template macam,
yang mungkin mengambil beberapa data sebagai input, tetapi pada akhir hari
logik sahaja di dalam pandangan harus penyediaan data,
iterating atas gelung dan sebenarnya meludah keluar beberapa
Berasaskan HTML rendition daripadanya atau bahkan sesuatu seperti PDF.
>> Apa yang baik tentang MVC adalah bahawa anda boleh mempunyai pandangan yang berbeza
berdasarkan jenis peranti, berdasarkan jenis format fail yang anda sebenarnya
mahu menunjukkan kepada pengguna.
Mari kita lihat pada contoh semakin kompleks dan direka dengan baik beberapa
dengan bermula pertama dengan 0 versi di sini.
Biar saya pergi ke hadapan dan membuka dalam direktori MVC kami hari ini
fail dipanggil index.php di titik 0 direktori.
Notis ini adalah sebuah laman web yang sangat mudah dan sangat underwhelming
itulah jenis 0 versi homepage untuk CS50,
dan melihat bagaimana kita mempunyai pautan ke Kuliah, kami mempunyai pautan ke Sukatan,
dan jika saya mengikuti pautan kepada notis Kuliah bahawa URL
top up akan untuk menukar kepada lectures.php.
Jika saya kemudian ikuti pautan kepada notis Minggu 1 bahawa URL perubahan kepada week1.php.
Terdapat seolah-olah menjadi struktur hierarki yang agak mudah di sini.
>> Mari kita lihat cepat di bawah hood bagaimana ini dibentangkan,
dan sesungguhnya, jika saya melihat index.php ia agak mudah.
Malah, walaupun saya dipanggil fail ini PHP tidak ada kod pengaturcaraan sebenar.
Ada satu komen yang saya tulis di sini dalam PHP hanya jadi pengguna tidak berakhir melihat ia.
Sudah tentu, kerana sebelum ini, apa-apa yang di antara tag PHP
mendapat ditafsirkan, walaupun ia adalah komen, dan mentafsir komen
bermakna hanya untuk membuang ia jauh di hujung hari dan tidak sebenarnya
hantar ke pelayar, jadi segala-galanya di sini hanya estetika.
Jika saya membuka sama lectures.php ini juga adalah hanya fail berkod keras.
Ia berlaku dipanggil sesuatu. Php,
tetapi ia benar-benar hanya html, dan week1.php, week2.php
sama hanya markup, jadi ada sekumpulan kelemahan reka bentuk ini.
Satu, ia adalah sejumlah besar salin / tampal.
Walaupun satunya perkara yang berubah antara fail-fail adalah senarai yang tidak tertib,
tag li, saya tetap mempunyai jenis doc, HTML, kepala,
tajuk, badan dekat, dekat HTML dan lebih
dalam setiap fail tunggal, yang bermaksud bahawa jika saya pernah mahu untuk menyusun semula
ini laman web atau restylize saya perlu pergi dan menukar
semua fail-fail secara manual atau dengan beberapa besar-besaran mencari dan menggantikan.
>> Mari kita mengambil satu langkah ke arah reka bentuk bijak, lagi berfikir dalam versi 1 di sini
mana sebagai satu membacanya saya bahawa kita telah dimasukkan supaya anda boleh bermain bersama-sama dengan
ini lebih santai di rumah notis bahawa kita mempunyai di sini
ringkasan fail dalam versi 1 laman web ini,
dan ia seolah-olah bahawa saya telah mengambil ia kepada diri saya kepada faktor keluar
beberapa kod biasa, header.php dan footer.php.
Nah, mari kita melihat apa yang ada di dalam orang yang awal pertama.
Header.php kelihatan biasa,
tetapi notis mana ia mendapatkan dipotong?
Hak selepas baris 19, supaya bahawa segala-galanya adalah perkara biasa
dari index.php fail, lectures.php,
week1 dan week2.php daripada contoh sebelumnya.
Apa yang saya lakukan ialah salinan dan segala-galanya dipotong itu adalah perkara biasa untuk semua fail-fail,
meletakkan ia dalam fail pengepala berasingan, dan begitu juga dalam footer.php
adakah saya memohon prinsip yang sama di mana garis sahaja menarik
dalam footer.php adalah kedua-dua, badan rapat dan dekat HTML.
>> Tetapi apakah ini bermakna sekarang adalah bahawa dalam versi baru
notis index.php bagaimana lebih mudah ia boleh mendapatkan.
Diberikan, sedikit lebih samar mencari, sedikit kurang intuitif
untuk mengikuti atas ke bawah, tetapi Tuhan saya, semua lebihan itu kini hilang.
Kami memerlukan menggunakan fungsi PHP literal dipanggil memerlukan top up,
yang sangat mengingatkan, ingat, C # termasuk mekanisme.
Kami memerlukan header.php di atas.
Kami memerlukan footer.php di bahagian bawah, dan satu-satunya yang berbeza
atau istimewa tentang fail ini adalah kandungan yang bertujuan untuk menjadi unik kepadanya.
Jika saya kemudian pergi ke, katakan, lectures.php, prinsip yang sama terpakai.
Sekali lagi, beberapa komen top up, tetapi kemudian saya memerlukan header, memerlukan pengaki,
dan di antara ia hanya kandungan yang sebenarnya berubah.
Dan jika kita melihat ke dalam Minggu 1 dan Minggu 2 kita akan melihat
bahawa prinsip yang sama telah digunakan di sana.
Nah, kita tidak cukup dilakukan di sana.
>> Mari kita lihat pada versi 2, yang mempunyai struktur yang sama,
tetapi notis sekarang saya telah memperkenalkan sesuatu yang lain.
Dalam line 10 Saya telah diperkenalkan helpers.php,
yang nampaknya mengandungi fungsi pembantu.
Satu fungsi pembantu adalah umumnya fungsi yang agak singkat
bahawa anda menulis untuk membantu anda keluar di pelbagai tempat,
dan mari kita lihat apa yang di dalam helpers.php.
Dalam kes ini, ia kelihatan seperti ia mempunyai 2 fungsi.
Ingat dari hari lain dengan contoh kiub kami
anda boleh menentukan fungsi-fungsi anda sendiri dalam PHP, dan apa yang saya lakukan sekarang adalah saya
ditakrifkan fungsi yang dipanggil menyebabkan pengaki dan menyebabkan header,
pertama yang mengambil parameter yang dipanggil data,
yang nilai lalai pelbagai kosong, seperti yang dicadangkan di sana,
dan kita sebenarnya boleh menulis ini lebih ringkas dalam versi terbaru PHP
dengan mengatakan kurungan persegi terbuka, ditutup kurungan persegi.
Itu bermakna pelbagai kosong 0 saiz tetapi masih array.
>> Ini fungsi ekstrak adalah sedikit istimewa kerana
apa yang ia adalah ia mengambil sebagai hujah pelbagai bersekutu
yang mempunyai 0 atau lebih pasangan nilai utama, dan jika anda mempunyai kunci foo
dan nilai bar fungsi cabutan
mewujudkan situasi di mana sekarang, sebagai garis 11,
anda mempunyai pembolehubah tempatan dipanggil $ Anu yang nilai adalah bar.
Dan jika anda mempunyai lebih banyak kunci dan nilai-nilai dalam pelbagai data,
sama mereka akan diekstrak ke dalam skop tempatan
atau nama ruang supaya footer.php dan
idea yang sama di bawah sini supaya header.php
mempunyai akses kepada pembolehubah-pembolehubah.
Malah, izinkan saya membuka semula header.php
dan menarik perhatian sekarang apa yang kelihatan seperti dalam versi ini.
>> Bukannya keras pengekodan CS50 sebagai tajuk bagi setiap halaman tunggal
notis dinamisme yang mungkin sekarang.
Dalam baris 5 Saya mengulangi pemboleh ubah tajuk,
tetapi pertama saya lulus bahawa pemboleh ubah tajuk kepada fungsi yang dipanggil htmlspecialchars.
Satu nama bodoh untuk fungsi, selagi ia adalah, tetapi ia benar-benar melakukan apa yang dikatakannya.
Ia memastikan bahawa mana-mana aksara khas
dalam rentetan yang telah diluluskan dalam betul melarikan diri HTML.
Ini sebenarnya adalah satu cara mengelakkan sesuatu yang dipanggil tapak skrip serangan silang
di mana seseorang boleh dengan sengaja atau tidak sengaja
menyuntik HTML mereka sendiri ke dalam laman web anda
dengan menampal ke dalam bentuk tertentu, misalnya,
sesuatu yang anda tidak cukup mengharapkan, terutamanya kod JavaScript,
seperti yang kita akan bercakap tentang dalam seminggu atau masa dua.
>> Ini header.php sekarang, ia adalah pandangan
dalam erti kata bahawa ia membolehkan anda untuk melihat estetika kandungannya beberapa set data.
Tetapi lebih khusus, ia adalah template.
Ini adalah jenis pelan tindakan sekarang apa yang kita mahu header setiap halaman untuk kelihatan seperti,
tetapi terdapat beberapa dinamisme yang kita mahu tajuk secara dinamik dimasukkan
berdasarkan pembolehubah tajuk
yang telah diekstrak apabila kita dipanggil, sekali lagi,
fungsi header render.
Sekarang, jika kita melihat pengaki render, terdapat sebenarnya tidak banyak menggunakan bahawa sekarang
kerana dalam footer.php terdapat ada dinamisme jua.
Mungkin ada, tetapi pada masa ini ia adalah senarai keras berkod 2 tag,
tetapi idea yang sama terpakai, supaya sebenarnya mencadangkan mengapa
adakah kita membuang masa mempunyai tandukan render dan fungsi render footer?
Izinkan saya pergi bukannya kini ke versi 3,
dan dalam 3 versi dalam pembantu saya memutuskan untuk memudahkan ia lebih.
>> Biar saya mempunyai satu fungsi render.
Biar saya mempunyai ia mengambil hujah lain, kali ini dipanggil template,
yang bertujuan untuk menjadi nama template,
dan kemudian saya akan menyatukan angkuh. php nilai yang berubah-ubah,
dan kemudian jika ia wujud foo.php, bar.php atau header.php dan footer.php,
maka saya akan pergi ke hadapan dan mengekstrak data pembolehubah
dan kemudian memerlukan jalan yang.
Dalam erti kata lain, untuk menggunakan ini sekarang, jika saya membuka index.php
notis bahawa saya tidak hubungi header render lagi.
Saya hanya panggil menyebabkan, tetapi saya lulus dalam nilai yang dipetik header
untuk membuat jelas template yang saya benar-benar mahu untuk beban.
>> Kemudian di sini perasan apa yang saya lakukan.
Saya lulus dalam dinamik kunci hakmilik,
nilai CS50, dan ini juga, seperti yang kita lihat sebelum ini,
boleh dibuat lebih ringkas dalam versi terbaru PHP
di mana saya boleh menggantikan fungsi array dengan kurungan persegi,
yang saya mencadangkan adalah lebih dibaca dan pastinya
sedikit lebih mudah untuk menaip.
Dan sudah tentu, dengan panggilan render nota kaki di bawah,
kita tidak mengganggu lulus dalam hujah kedua pada semua, tiada array bersekutu,
kerana terdapat dalam apa yang dinamik pengaki bahawa.
Ia hanya beberapa tag rapat untuk HTML.
Baik, kita sedang mengambil langkah-langkah ke arah benar-benar membersihkan perkara-perkara di sini,
tetapi biarlah saya membuka 2 contoh akhir.
Ini satu, nombor 4, notis bahawa saya telah membuat keputusan yang sedar sekarang
untuk memperbaiki contoh sebelumnya oleh akhirnya menggunakan hierarki beberapa fail-fail saya.
>> Perhatikan bahawa dalam ringkasan ini, ini membaca saya, saya telah diperkenalkan
satu termasuk direktori dan direktori template
kandungan yang akan menjadi perkara yang saya mahu termasuk
dan template yang saya mahu untuk memberi, masing-masing.
Ini adalah benar-benar saya dubur dan cuba untuk menjaga perkara-perkara kemas,
menyimpan fail-fail yang berkaitan bersama-sama, tetapi hasil akhir
adalah bahawa kita kini mempunyai persediaan sedikit tidier, tetapi kita perlu ingat sekarang
dalam, misalnya, index.php
apabila kita memerlukan helpers.php fail
kita perlu kini memerlukan melalui termasuk / helpers.php
bukannya hanya mengatakan helpers.php kerana sekarang ia sebenarnya dalam direktori sub.
Kini, sebagai diketepikan, anda akan lihat dalam contoh-contoh ini dan beberapa orang lain
fungsi seperti memerlukan, memerlukan sekali.
Terdapat sebenarnya fungsi itu sendiri dipanggil termasuk, dan mereka semua mempunyai tingkah laku yang sedikit berbeza.
Di sini saya katakan memerlukan sekali untuk membuat super jelas bahawa saya hanya mahu mereka
pembantu yang termasuk dalam projek saya sekali.
Tetapi jika saya berhati-hati dan jika Saya sebenarnya berfikir melalui logik saya betul
ia harus mencukupi terlalu hanya untuk mengatakan memerlukan top up
begitu lama kerana saya sendiri tidak sengaja menghendaki supaya fail yang sama di tempat lain.
Malah, ini adalah cara yang lebih cekap melakukan perkara-perkara yang kemudian menggunakan
memerlukan sekali, jadi saya akan mengurangkan ia turun ke hanya memerlukan.
>> Mari kita mengambil satu langkah ke hadapan.
Contoh terakhir ini sekarang, versi 5, mempunyai folder hierarki yang lebih bersih.
Perhatikan apa yang saya telah dilakukan di sini setiap membaca saya dalam versi ini terakhir
kini saya mempunyai direktori HTML saya, yang saya telah mendapat semua masa ini,
tetapi di dalam ada kini hanya index.php, lectures.php,
week1.php dan week2.php.
Termasuk direktori kini tinggal bersama direktori HTML,
jadi pada tahap yang sama seperti adik-beradik, jadi untuk bercakap.
Begitu juga folder template.
Fleet utama di sini adalah saya telah memperkenalkan struktur sedikit lebih,
tetapi ciri utama sekarang adalah bahawa hanya fail
yang perlu untuk menjadi web yang diakses, terbuka addressable
oleh URL di internet awam adalah dalam direktori HTML saya.
>> Sementara itu, selain fail, helpers.php, footer.php,
header.php, yang dikatakan mungkin lebih sensitif,
mungkin pembantu sebenarnya mempunyai beberapa nama pengguna dan kata laluan atau beberapa intelektual
harta lombong, berfungsi Saya benar-benar tidak mahu dunia untuk melihat, walaupun tidak sengaja.
Ia adalah amalan yang baik untuk menjaga daripada direktori HTML awam
mana-mana fail yang tidak perlu diri menjadi awam.
Semua yang anda perlu lakukan dalam kes ini apabila melihat, sebagai contoh,
direktori HTML fail index.php,
notis kita hanya perlu untuk menjadi sedikit lebih berhati-hati apabila memerlukan
atau memerlukan sekali fail ini.
Saya perlu terlebih dahulu melakukan .. untuk pergi ke direktori induk,
maka janganlah / includes / helpers.php
untuk menyelam kembali ke dalam untuk mendapatkan fail yang saya mengambil berat tentang.
>> Mana-mana soalan itu MVC
atau ini penjelmaan agak mudah daripadanya?
Dan izinkan saya membuat jelas bahawa kita menumpukan agak sedikit pada
V di sini, pandangan dan pemfaktoran daripada template ini.
Kami telah tidak benar-benar dibezakan M dari C sahaja lagi.
Malah, ada benar-benar ada di sini M, dan C kami,
pengawal, tidak benar-benar melakukan semua yang banyak, tetapi anda akan mendapat lebih banyak
biasa dengan kedua-dua mereka 2 surat dari MVC,
atau sebaliknya, anda akan mendapat lebih biasa dengan C
di MVC untuk menetapkan masalah 7, jadi terdapat lebih daripada itu di ufuk.
Soalan?
Terdapat sebenarnya tiada siapa di sini.
>> Baiklah, mari kita sekarang beralih kepada topik kedua dan terakhir untuk hari ini.
Itu adalah pengenalan pangkalan data.
Sehingga ketika ini kita telah mempunyai beberapa cara untuk menyimpan data.
Kami telah menggunakan pembolehubah.
Kembali dalam fail C kami, I / O perbincangan kita mula menggunakan fail teks
dan menggunakan fail seperti fprintf, dan kemudian kita bermula
bercakap tentang CSV memfailkan sedikit, Comma Separated Values,
jadi semua ini membolehkan kita mempunyai data yang disimpan
sama ada tidak berterusan atau berterusan.
Tetapi walaupun CSVs tidak benar-benar kondusif untuk mencari
dan memasukkan dan memotong.
Ia adalah benar-benar hanya satu fail teks bodoh dipisahkan dengan koma
baris demi baris demi baris demi baris, jadi jika anda mahu
search bahawa fail yang terbaik anda boleh lakukan benar-benar adalah carian linear.
Anda perlu bermula di bahagian atas fail, membaca segala-galanya dalam,
dan mencari nilai beberapa faedah.
Jika anda ingin memasukkan ke dalamnya, anda perlu lakukan perkara yang sama,
iterating ke atasnya dan memasukkan di tempat tertentu,
dan pada hakikatnya, anda perlu untuk melakukan semua logik mencari diri sendiri.
>> Anda tidak boleh melakukan corak pandai sepadan pada fail CSV melainkan anda sendiri menulis kod.
Anda tidak boleh melakukan penapisan fail CSV
melainkan anda sendiri menulis kod.
Ia tidak akan menjadi baik jika orang lain dimasukkan ke dalam semua usaha
sebenarnya membuat mencari mudah dan kemasukan mudah
dan penghapusan mengemaskini dan sebagainya?
Itulah apa pangkalan data.
SQL, bahasa pertanyaan berstruktur, adalah lagi bahasa lain
bahawa kita memperkenalkan sini hari ini, tetapi ini juga agak diakses,
dan apa yang kita benar-benar akan melakukan hanya memetik daripada beberapa yang paling menonjol
ciri-ciri supaya untuk pset 7, dan jika anda melakukan sesuatu berasaskan web,
projek akhir anda, anda mempunyai keupayaan untuk meluahkan diri anda
dari segi pertanyaan data.
Anda mempunyai keupayaan untuk menyimpan sedikit atau banyak data
dalam cara yang lebih berstruktur yang akan pada akhir hari
membuat hidup anda lebih mudah kerana dengan SQL anda boleh meluahkan diri anda
lebih tepat, lebih teratur untuk
mendapatkan kembali beberapa subset data dari corpus data yang lebih besar.
>> Anda boleh berfikir pangkalan data, dalam kes ini, pangkalan data SQL, benar-benar seperti Excel
atau Nombor di mana ia adalah spreadsheet,
atau mungkin spreadsheet berganda, dan spreadsheet, sudah tentu,
mempunyai baris dan lajur, dan itu kerana
Pangkalan data SQL adalah hubungan, hubungan dalam erti kata
bahawa mereka menyimpan data di segi jadual ini,
baris dan lajur.
Mereka adalah lebih tinggi berbayar daripada sesuatu seperti spreadsheet,
dan spreadsheet yang dimaksudkan untuk digunakan oleh manusia.
Pangkalan data adalah bertujuan untuk digunakan oleh pengaturcara
menulis kod terhadapnya, jadi penjelmaan pangkalan data
akan menjadi sama ada baris arahan.
>> Salah satu pangkalan data hubungan yang paling popular di luar sana adalah, sekali lagi, MySQL,
yang hebat percuma, berbayar yang sangat tinggi, dan ini adalah apa yang
Facebook digunakan sangat awal dan sedikit sebanyak masih hari ini
untuk menyimpan banyak data, dan kita akan melihat dalam seketika
bahawa menggunakan arahan agak mudah
kita boleh pilih data, memasukkan data, data update,
memadam data dan sebagainya, tetapi bersyukur, ada yang lebih mesra pengguna antara muka
daripada hanya menaip pada prompt hitam dan putih di sini.
Kami akan menggunakan untuk pset 7 dan luar alat percuma yang dipanggil phpMyAdmin.
Nama adalah kebetulan.
Alat ini berlaku untuk dilaksanakan dalam PHP,
tetapi itulah asasnya tidak relevan.
Apa yang berguna tentang phpMyAdmin adalah bahawa ia adalah satu utiliti yang berasaskan web.
Kami telah pra-dipasang dalam perkakas untuk anda,
dan dengan itu anda boleh membuat jadual dalam pangkalan data,
anda boleh memasukkan data, memadam data, dan umumnya melihat
data anda dalam persekitaran yang agak user-friendly.
Pengguna anda tidak akan menggunakan phpMyAdmin.
>> Ini adalah benar-benar hanya satu alat pentadbiran atau pemaju
dengan mana untuk melihat dan mencucuk sekeliling data anda dan memikirkan bagaimana untuk menstrukturkan,
banyak seperti anda sendiri mungkin menggunakan Excel atau Nombor
tetapi ia akan menjadi cara terbaik menggambarkan apa yang berlaku di bawah hood
supaya anda boleh fokus pada masalah yang menarik menyelesaikan dan tidak begitu banyak
atas arahan batin.
Mari kita lihat pada contoh data yang mungkin disimpan tabularly
dalam pangkalan data hubungan.
Berikut adalah salah satu contoh.
Sekarang, malangnya, phpMyAdmin silap di sebelah cara membuang terlalu banyak perkataan
dan grafik pada anda, tetapi jika anda mengasah di hanya di
Turus ID, ruangan nama pengguna, dan lajur hash,
ini adalah berkesan spreadsheet, tetapi ia berlaku untuk menjadi coretan
dalam jadual perkakas
menggunakan fail yang kami menyediakan anda dengan masalah dalam set 7.
>> Secara khususnya, kami memberikan anda satu fail yang mewakili
pengguna meja, jadi spreadsheet yang mengandungi pengguna dengan 3 tiang,
mana salah satu daripadanya adalah ID unik yang bermula pada 1 dan incremented selepas itu.
Lajur kedua ialah nama pengguna, dan orang-orang yang melakukan Hacker,
edisi Hacker untuk pset 2, mungkin mengenali beberapa nama-nama pengguna sekurang-kurangnya.
Pada sebelah kanan adalah kata laluan, tetapi mereka tidak kata laluan literal.
Mereka Hash daripadanya, jadi ternyata
yang menyimpan kata laluan dalam pangkalan data adalah idea yang benar-benar buruk.
Anda semua mungkin dibaca pada satu ketika beberapa laman web
atau pangkalan data beberapa syarikat yang terjejas, dan kemudian anda perlu
menukar kata laluan anda, anda perlu untuk mendapatkan bayaran balik kepada perkara-perkara
kerana beberapa lelaki yang buruk sebenarnya memecah masuk ke akaun anda akibat.
>> Menyimpan kata laluan dalam teks jelas, tak disulitkan dalam pangkalan data
benar-benar asinine, tetapi ia amat lucu
maka untuk membaca tentang beberapa syarikat yang sangat terkenal
kadang-kadang dalam akhbar pangkalan data yang terjejas,
dan bahagian itu tidak lucu, tetapi hakikat bahawa pangkalan data mengandungi tanpa enkrip
kata laluan adalah tidak masuk akal kerana literal dengan satu baris kod
anda boleh melindungi terhadap ancaman yang tertentu, dan itulah apa yang kita lakukan di sini.
Malah bagi palsu sedikit kami CS50 versi Kewangan
kita menyulitkan kata laluan hanya untuk langkah yang baik, dan hakikat bahawa
semua kata laluan ini bermula dengan $ 1 $ hanya konvensyen.
Itu hanya bermakna mereka disulitkan atau benar-benar dicincang,
yang adalah seperti fungsi penyulitan sehala
di mana anda tidak boleh menterbalikkan kesan dengan sesuatu yang dipanggil MD5.
>> Hakikat bahawa 50 adalah selepas itu bermakna bahawa nilai garam
50 tahun telah digunakan untuk hashing semua kata laluan ini kecuali satu.
Mine, sudah tentu, seperti yang anda boleh lihat di sana, HA,
menggunakan garam yang berbeza, jadi mereka yang mendapat sedikit tersandung sehingga
mungkin dalam 2 Hacker, yang mungkin telah hasil daripada digunakan setelah kita
hash yang berbeza daripada yang lain kerana password saya sebenarnya sama
sebagai pengguna lain di sana.
Malah, jika anda telah menunggu semua minggu ini untuk mengetahui
apa kata laluan itu di sini adalah kata laluan yang anda telah dicabar
retak dalam edisi Hacker set masalah 2, jadi tiada yang terlalu sukar.
Malah, Malan adalah sama seperti jharvard,
tetapi jika kita kembali mereka kelihatan berbeza.
>> Fokus pada jharvard dalam lembayung kerana mereka masin berbeza.
Algoritma telah dicemaskan dalam cara yang
hash nilai, nilai disulitkan kelihatan sedikit berbeza
kerana input yang sedikit berbeza, tetapi kata laluan bawah hood
masih akhirnya lembayung.
Sekarang, yang mengambil berat tentang perkara ini?
Nah, kita menyediakan anda dengan pengguna sampel, nama pengguna sampel
dan Hash kata laluan mereka supaya anda sebenarnya mempunyai beberapa
pelanggan untuk Kewangan CS50 apabila anda mula-mula mendapat dari tanah dengan kod anda.
Anda akan mempunyai untuk melaksanakan lebih jadual dalam MySQL, di dalam pangkalan data.
Anda akan mempunyai untuk mewujudkan lebih banyak spreadsheet, berkesan, tetapi kami memutuskan untuk memberikan anda satu ini
untuk mendapatkan anda bermula, dan anda akan melihat bahawa spesifikasi set masalah
berjalan anda melalui proses mengimport jadual ini
dan juga menjelaskan apa yang beberapa ciri-ciri,
dan anda juga akan melihat bahawa kami menyediakan anda dengan kod
untuk mengendalikan hashing atau penyulitan kata laluan ini,
jadi anda tidak perlu bimbang terlalu banyak tentang apa MD5 atau sebagainya sebenarnya adalah semua tentang.
>> Jadi, SQL, bahasa pertanyaan berstruktur.
Ini adalah, cukup mudah, bahasa yang kami kira-kira untuk mula menggunakan dalam pset 7
dan mungkin di luar untuk meminta data dari pangkalan data tertentu.
Data, sekali lagi, disimpan tabularly dalam jadual ini tiang, hubungan, dan baris,
tetapi menggunakan beberapa sintaks yang agak mudah seperti delete,
memasukkan, mengemaskini dan pilih yang boleh kita lakukan betul-betul itu.
Kita boleh memadam dari pangkalan data, memasukkan,
mengemaskini data, serta pilih, iaitu, mengambil data dari pangkalan data.
Bagaimana kita pergi tentang melakukan perkara ini?
Biar saya pergi ke hadapan ke dalam perkakas.
Biar saya tarik sehingga http://localhost,
yang, sekali lagi, adalah perkakas tempatan sendiri.
Itulah nama samaran lalai.
Dan biarlah saya pergi ke / phpMyAdmin.
Ini berlaku untuk menjadi sebuah URL khas bahawa perkakas dipratatarajahkan untuk memahami
yang segera meminta saya untuk nama pengguna dan kata laluan.
>> Seperti biasa, saya akan menaip jharvard dan lembayung,
tetapi menyedari bahawa akaun pentadbir pada komputer.
Ia hanya kebetulan bahawa terdapat juga satu jharvard didaftarkan untuk CS50 Kewangan.
Jharvard, lembayung, masukkan memberikan saya antara muka pengguna yang kita lihat
imbasan masa lalu, dan ia sedikit hangat pada mulanya,
tetapi yakinlah, anda tidak akan perlu klik kebanyakan link di alat ini.
Anda akan akhirnya menggunakan subset kecil yang super membantu,
di mana yang pertama adalah pangkalan data di sini.
Jika saya pergi ke pangkalan data, notis bahawa saya digesa untuk mewujudkan pangkalan data.
Ini adalah seperti mewujudkan satu fail Excel yang baru, berkesan.
Saya akan pergi ke hadapan dan memanggil kuliah ini, dan saya hanya akan mengabaikan medan sana, kolasi.
Ia mempunyai kaitan dengan perwakilan data di dalamnya,
dan saya akan klik mencipta, dan kini notis kerana saya membiarkan pergi mewujudkan
pada sebelah kiri di mana ia mengatakan tiada pangkalan data
Saya tidak lama lagi harus melihat pangkalan data kuliah.
>> Jika saya sekarang klik di sebelah kiri, pangkalan data kuliah,
notis tab saya menukar sedikit.
Saya telah mendapat struktur, SQL, eksport, import dan beberapa perkara lain.
Struktur adalah cukup banyak kosong.
Tiada jadual dijumpai dalam pangkalan data, kerana ia mengatakan di sini,
jadi mari kita buat jadual, dan mari kita pergi ke hadapan dan mencipta jadual
seperti pelajar, dan berapa banyak tiang yang kita mahu?
Rekod Mari kita menyimpan ini mudah, dan biarkan untuk setiap pelajar
nombor ID, nama, dan alamat e-mel.
>> Kami akan memastikan ia mudah seperti itu, jadi 3 kolum, pergi.
Bentuk yang anda lihat di sini kini sedikit berantakan dan hangat,
tetapi kita hanya perlu pergi melalui berturut-turut ia demi baris, jadi benar-benar cepat mari kita memberi
Lajur pertama dalam pangkalan data ini nama ID untuk pengecam unik.
Ia akan menjadi integer. Saya sebenarnya boleh mengabaikan panjang dan nilai-nilai.
Int akan menjadi 32 bit tidak kira apa yang anda taip di sana, jadi mari kita tinggalkan kosong.
Nilai lalai, saya boleh membuat ia batal, sebagaimana yang ditakrifkan.
Saya akan meninggalkan itu sahaja. Mari kita tidak bimbang tentang nilai-nilai lalai.
Mari kita tatal di sini sifat-sifat, kanan.
Ini adalah menarik.
Mari kita pergi ke hadapan dan agak sewenang-wenangnya mengatakan bahawa ID mestilah tidak bertanda.
Mari kita tidak membuang mana-mana nombor negatif.
>> Mari kita pergi 0-4000000000, memberikan atau mengambil,
dan kemudian mari kita tidak menyentuh mana-mana bidang ini sahaja lagi di sana,
tetapi kemudian biarlah saya menaip nama di sini,
dan kemudian yang lain adalah e-mel, jadi tangkapan adalah e-mel
dan nama, jelas tidak integer, jadi mari kita menukar kepada bidang yang berbeza.
Ia ternyata VARCHAR, pembolehubah panjang char,
adalah seperti rentetan dalam pangkalan data SQL
tetapi panjang berubah-ubah, dan anda sebenarnya perlu memberitahu terlebih dahulu
Panjang maksimum tali, jadi saya akan agak sewenang-wenangnya
mengikut jenis konvensyen 255 aksara.
Saya benar-benar boleh mengatakan 32. Saya boleh mengatakan 1,000.
Anda jenis keperluan untuk membuat keputusan untuk diri sendiri berdasarkan demografi anda apakah
pelajar terpanjang nama dan pergi dengan beberapa atau sedikit lebih besar,
tetapi apa yang baik tentang VARCHAR adalah ia tidak akan membazirkan
255 bait pada nama setiap pelajar.
Jika ia DAVID ia tidak akan menggunakan keseluruhan 255 bytes,
tetapi itulah terikat atas, jadi saya akan pergi dengan 255 hanya dengan konvensyen,
tetapi kita boleh berdebat bahawa untuk menjadi beberapa nilai yang lebih rendah, dan untuk alamat e-mel
hanya untuk menjadi konsisten 255, tetapi sekali lagi, kita boleh mempunyai perbahasan yang sama.
Tetapi saya akan untuk melakukan satu perkara lain di sini pada sebelah kanan.
>> Apa yang berkuasa tentang pangkalan data adalah bahawa ia boleh melakukan banyak mengangkat berat
atau kerja-kerja yang kompleks untuk anda.
Secara khususnya, saya benar-benar tidak peduli apa nombor ID pelajar saya.
Ia hanya bertujuan untuk menjadi pengecam unik dalam pangkalan data
jadi saya mempunyai perwakilan 32-bit ringkas pelajar itu
supaya saya mempunyai beberapa cara unik mengenal pasti mereka
kalau-kalau ada 2 Davids, misalnya, dalam sebuah kelas.
Malah, saya akan memeriksa kotak AI, kenaikan auto,
supaya pangkalan data, MySQL, angka keluar
apa ID setiap pelajar yang baru dimasukkan itu akan menjadi.
Saya tidak perlu mengambil berat tentang itu dalam kod saya,
dan saya juga akan memilih sesuatu di bawah menu indeks.
Indeks drop down di sini telah rendah, yang unik,
indeks dan teks penuh.
Anda mungkin boleh meneka apa beberapa perkara-perkara ini adalah,
tetapi ternyata di dalam pangkalan data hubungan
anda pengaturcara atau pentadbir pangkalan data dapat preemptively
memberi petunjuk kepada pangkalan data untuk apa bidang
dalam jadual khas sedikit.
>> Sebagai contoh, dalam kes ini saya akan mengatakan bahawa ID
akan menjadi indeks utama, atau dikenali sebagai kunci utama.
Apakah ini bermakna oleh definisi adalah ID yang seterusnya
unik akan mengenal pasti pelajar dalam jadual ini.
Tiada pelajar akan mempunyai ID yang sama kerana saya mengenakan kekangan ini atau indeks ini.
Selain itu, apa ini akan lakukan untuk saya adalah ia akan memberitahu
MySQL bahawa ID adalah istimewa.
Saya mengambil berat terutamanya mengenai ID, jadi pergi ke hadapan dan melakukan sihir struktur data mewah anda,
membina beberapa jenis pokok.
Biasanya ia sesuatu yang dipanggil B-pokok, yang kita tidak melihat pada minggu lalu,
tetapi ia adalah struktur data lain yang serupa dalam semangat kepada pokok binari
dan cuba yang kita melihat, tetapi ia akan berkata
kepada pangkalan data bidang ini begitu penting bahawa aku mungkin
mahu menjadi mampu untuk mencari ia, pergi ke hadapan dan membina beberapa mewah
struktur data dalam ingatan untuk mempercepatkan carian supaya ideal
mereka pemalar masa atau sekurang-kurangnya sebagai dekat yang mungkin
supaya ia tidak diturunkan ke dalam carian linear, yang tidak akan
yang paling berprestasi tinggi pendekatan.
Sebaliknya, alamat e-mel boleh menjadi kunci utama.
>> Dalam teori, alamat e-mel semua orang adalah unik, melainkan jika anda berkongsi beberapa akaun,
tetapi ia adalah umumnya tidak baik untuk menggunakan sesuatu seperti rentetan
sebagai kunci utama kerana jika tujuan dalam hidup adalah untuk secara unik mengenalpasti
baris dalam jadual anda tiada sebab untuk menggunakan 255 bytes maksima
untuk secara unik mengenalpasti seseorang jika anda boleh mendapatkan jauh dengan hanya 4 bait
atau int 32-bit.
Secara umum, kunci utama harus pendek dan ringkas
dan ideal sesuatu seperti integer atau int besar, yang berlaku kepada 64-bit.
Tetapi alamat e-mel harus unik, dan salah satu ciri-ciri pangkalan data juga
adalah untuk menguatkuasakan keunikan bagi saya.
Dengan memilih unik di sini seterusnya kepada e-mel, walaupun email sendiri
diskrolkan skrin, saya berkata kepada pangkalan data
tidak mempercayai saya.
Jangan biarkan saya masukkan ke dalam pangkalan data
alamat e-mel yang sama dua kali, walaupun saya bodoh dan tidak am
sangat baik dengan IFS saya dan IFS lain dan kod PHP yang sebenar
dan saya sengaja membiarkan pengguna mendaftar dengan alamat e-mel yang sedia ada
pangkalan data adalah satu lagi tahap pertahanan untuk ketepatan
untuk memastikan bahawa alamat e-mel yang pendua tidak berakhir dalam jadual.
>> Sekarang, sebaliknya, untuk nama anda mungkin tidak mahu membuat yang unik
kerana tidak pernah boleh menjadi 2 Davids atau 2 Smiths Mike, misalnya,
dalam pangkalan data anda, supaya seseorang kita hanya akan meninggalkan sahaja.
Saya akan pergi ke hadapan dan klik menjimatkan di sebelah kanan bawah,
dan segalanya kelihatan baik, tetapi notis di sini
ini adalah sebahagian bahawa sekarang kita tidak akan menghabiskan terlalu banyak masa pada
kerana sintaks adalah agak kompleks, dan kita tidak perlu untuk mencipta jadual
semua yang sering, tetapi SQL itu sendiri adalah bahasa,
sintaks yang betul di sini bahawa saya telah menekankan.
Apa phpMyAdmin benar-benar tidak adalah ia mewujudkan GUI berasaskan web untuk anda
yang anda boleh menjimatkan masa dan tidak perlu untuk manual menaip
query SQL yang agak lama seperti itu.
>> Dalam erti kata lain, jika anda mahu manual mewujudkan jadual ini,
sama ada di phpMyAdmin yang hitam dan putih prompt atau walaupun dalam
dengan menggunakan tab lain, tab ini SQL di mana anda boleh menaip sebarang pertanyaan SQL
anda mahu, terus-terang, ini akan mengambil saya satu minit
sebenarnya ingat sintaks keseluruhan, dan itupun saya mungkin akan mempunyai
membuat beberapa tipo, jadi alat ini adalah berguna untuk hal-hal seperti itu, dan ia juga nafikan.
Anda boleh mula untuk membuat kesimpulan apa sintaks
hanya dengan warna bagus pengekodan phpMyAdmin yang menambah
untuk keselesaan visual kami.
Tetapi sekarang mari kita buat ini bukan.
Biar saya pergi ke tab insert di atas, dan membiarkan saya pergi ke hadapan dan memasukkan misalnya
ID membolehkan katakan sebenarnya saya tidak peduli.
Ia akan auto kenaikan. Saya akan membiarkan perjanjian pangkalan data dengan ini.
Tetapi saya hendaklah Daud, dan e-mel saya harus malan@harvard.edu.
>> Mari kita pergi ke hadapan di sini dan dimasukkan ke dalam Mike Smith sebagai satu lagi.
Saya akan memberikan diri saya nama terakhir juga,
dan kami akan telah dia menjadi smith@example.com,
dan kemudian di mana saya pergi seterusnya?
Nah, ia kelihatan seperti pergi adalah butang untuk klik, dan Voilà.
Notis pada 2 baris atas yang dimasukkan.
Ini adalah pertanyaan SQL sebenar.
Itulah alat phpMyAdmin dilaksanakan bagi saya,
tetapi hasil akhir, notis, jika saya kini pergi ke tab browse,
adalah untuk melihat 2 baris dalam jadual ini, sangat mengingatkan estetik
jadual yang kita lihat sebelum ini untuk pengguna kami dari pset 7,
salah seorang daripadanya adalah Malan Daud, salah seorang daripada mereka sekarang Mike Smith.
Tetapi hanya perlu jelas, saya tidak perlu menggunakan phpMyAdmin,
dan sememangnya, anda akan tidak lama lagi akan menulis kod untuk pset 7
yang mengautomasikan proses menambah baris, memotong barisan, mengemaskini baris dan sebagainya,
jadi biarlah saya bukan pergi ke tab SQL di sini
dan jenis * pilih daripada pelajar di mana
email = "malan@harvard.edu."
>> Dalam erti kata lain rasa sekarang anda mempunyai
beberapa bentuk HTML, dan jenis pengguna dalam alamat e-mel mereka, antara bidang-bidang lain,
dan matlamat sekarang adalah dalam PHP pada akhir kembali kod
untuk benar-benar melihat butir-butir lain yang pengguna.
Apakah nama penuh anda? Apakah nombor ID anda?
Anda boleh menulis query SQL seperti ini, pilih * dari pelajar
mana e-mel = "malan@harvard.edu."
Dan jika saya kemudian klik pergi, notis bahawa saya perlu, dan sememangnya saya, dapatkan kembali hanya satu baris.
Mike ditinggalkan daripada set keputusan ini, sebagai koleksi baris
secara umumnya dipanggil, kerana dia tidak mempunyai alamat email yang sama seperti saya.
>> Kini, sekali lagi, di sini untuk pset 7 anda akan menggunakan phpMyAdmin sebagai alat pentadbiran
dan alat pedagogi untuk mempelajari cara anda
seluruh dunia SQL, tetapi pada akhir hari
anda akan menulis pertanyaan di dalam kod PHP sebenar,
dan sebagainya menantikan dalam Walkthrough Zamyla khususnya
di mana anda akan mendapat lawatan kod pengagihan untuk menetapkan masalah ini
di mana kita telah diberikan anda bukan sahaja estetika untuk halaman login
dan logo bagus seksi yang mengatakan CS50 Kewangan, tetapi kita juga telah diberikan anda
sekumpulan fungsi yang akan membuat hidup anda sedikit lebih mudah.
Kami juga telah ditulis sebahagian daripada pset untuk anda,
bahagian login khususnya, untuk memberi anda rasa reka bentuk wakil
yang sebenarnya menggunakan pengawal, untuk contoh, index.php,
Ubah Suai Pengatas dan sebagainya, dan kemudian anda akan melihat pset juga mempunyai direktori template
yang mempunyai semua pandangan anda, semua estetika.
Dan sebagainya aliran kerja keseluruhan di pset 7 akan menjadi bahawa
pengguna anda melawat pengawal melalui URL dalam pelayar.
Itu pengawal mengandungi kod PHP yang anda menulis, dan di dalam kod PHP anda
mungkin beberapa garis SQL bersarang di antara tanda petikan berganda
dan berlalu ke fungsi kita menulis pertanyaan dipanggil
yang akan membantu anda bercakap kepada pangkalan data tanpa menggunakan sesuatu seperti
alat pentadbiran seperti phpMyAdmin.
>> Anda akan dapat untuk menulis kenyataan SQL dalam PHP kod
dan mendapatkan kembali pelbagai PHP set hasil,
baris yang benar-benar sepadan dengan pertanyaan yang.
Dan begitu juga anda akan dapat melakukan memasukkan atau memadam
atau update atau sebagainya, sintaks yang agak serupa,
dan anda akan melihat daripada beberapa rujukan dalam talian, dari kod pengagihan
dan dari pset pek sendiri bagaimana untuk pergi tentang berbuat demikian.
Sedarlah akhirnya kita benar-benar hanya menggaru permukaan SQL
dan MySQL, tetapi kuasa ia benar-benar adalah bahawa ia membebaskan anda
memberi tumpuan kepada masalah-masalah yang anda mahu menyelesaikan, kes guna yang anda mahu untuk melaksanakan
tanpa perlu risau cukup sebagai banyak, sekurang-kurangnya pada awal,
tentang di mana dan bagaimana untuk menyimpan dan mencari pangkalan data anda,
dan ini adalah agak literal di mana Facebook sendiri mula mendapat
menggunakan MySQL dan kemudian menggunakan lebih pelayan MySQL dan kemudian lebih MySQL pelayan
sebelum lama sehingga mereka kemudian telah benar-benar mula berfikir keras tentang bagaimana untuk
menyimpan data, bagaimana untuk menyimpan perkara-perkara yang lebih cekap,
jadi walaupun kita akan mengambil untuk diberikan hakikat bahawa indeks dan kekangan unik
dan sebagainya hanya bekerja di sana adalah satu perbualan yang sangat menarik
bahawa ini boleh akhirnya membawa kepada, supaya sedar bahawa kita hanya menggaru permukaan
apa yang boleh akhirnya untuk anda atau projek anda menjadi agak sedikit data yang besar.
>> Dengan itu berkata, mari kita berakhir di sini, dan kita akan melihat anda minggu depan.
[CS50.TV]