[Powered by Google Translate] [Soal Walkthrough Set 7]
[Zamyla Chan] [Harvard University]
[Ini adalah CS50] [CS50.TV]
>> Halo semua, dan selamat datang Walkthrough 7, CS50 Keuangan.
Sekarang kita secara resmi dilakukan dengan semua psets di CS50,
dan kami hanya pergi dengan satu lagi yang akan menjadi implementasi menyenangkan
dari sebuah situs web di mana pengguna dapat masuk ke CS50 Keuangan
dan membeli dan menjual saham.
>> Hari ini, kita akan memiliki beberapa alat yang kita miliki.
Kita akan berbicara tentang perizinan.
Setiap kali Anda memiliki folder web,
Anda akan ingin untuk memungkinkan pengguna untuk mengeksekusi file tertentu
tetapi juga hanya membaca yang lain,
jadi kita akan melihat ke dalam perizinan dan bagaimana Anda dapat mengatur mereka.
Kemudian kita akan melihat ke dalam PHP, HTML, dan kode SQL.
>> Pertama, perizinan.
Ketika Anda berada di terminal dalam direktori tertentu,
maka apa yang ingin Anda lakukan adalah Anda ingin menjalankan perintah chmod.
Itu diikuti oleh salah satu huruf atau angka
sesuai dengan apa yang Anda pada dasarnya ingin dunia untuk melihat,
Anda sendiri untuk melihat, dll
Misalnya, setiap kali Anda memiliki folder,
maka Anda ingin folder yang akan dieksekusi oleh semua orang yang melihatnya,
jadi apa yang akan Anda lakukan adalah Anda bisa menjalankan perintah chmod + x
dan kemudian nama folder Anda.
Bila Anda memiliki file seperti file CSS atau file gambar -
seperti JPEG dan bitmap, hal-hal seperti itu, atau kode JavaScript -
Anda ingin hal itu dapat dibaca oleh semua orang,
jadi maka apa yang Anda lakukan adalah Anda bisa menggunakan wildcard -
yang merupakan tanda bintang -
pada dasarnya menunjukkan dalam folder CSS - segala sesuatu dalam folder itu -
Aku akan mengatakan bahwa itu akan dapat dibaca oleh semua orang.
Dengan izin, ketika kita menggunakan huruf,
kita juga bisa menggunakan nomor sebagai gantinya.
Jadi, Anda melihat bahwa pada akhirnya ketika Anda ingin sesuatu yang harus dieksekusi -
yang diwakili dengan jumlah 1 -
sesuatu yang harus dibaca adalah nomor 4 dan kemudian -
writable adalah nomor 2 -
dan sebagainya pada dasarnya ketika Anda ingin kombinasi dari mereka, maka Anda menambahkannya.
Jika Anda ingin sesuatu untuk dibaca, ditulis, dan dieksekusi,
maka Anda akan menambahkan 4, 2, dan 1 dan itu akan memberi Anda 7,
maka setiap kali Anda memiliki folder yang Anda inginkan bahwa untuk menjadi dieksekusi oleh semua orang -
serta dapat dibaca dan ditulis - maka Anda membuat 7, 1, 1.
Itu akan menjadi 7 untuk Anda, maka 1 untuk orang lain.
Bila Anda memiliki spec, itu benar-benar akan menentukan folder dan file mana
perlu chmod-ed khusus.
Misalnya, ketika Anda memiliki folder - yaitu 7-1-1 -
ketika Anda memiliki gambar, atau HTML, CSS, JavaScript,
maka mereka akan menjadi 6, 0, 4 - atau 6, 4, 4 -
dan kemudian file PHP akan menjadi 6, 0, 0.
Ide di balik itu adalah bahwa pengguna tidak harus benar-benar melihat kode PHP,
tetapi hanya dapat melihat output.
>> Great! Pindah ke PHP.
Cukup, setiap kali Anda ingin file PHP, akhiran file. Php.
Anda juga dapat mencampur HTML dengan kode PHP.
Jika Anda memiliki file HTML, misalnya,
maka Anda dapat melampirkan dengan sudut kiri, tanda tanya, php -
menempatkan kode php Anda - dan kemudian tutup dengan yang lain bahwa tanda tanya dan sudut yang tepat.
Variabel dalam PHP adalah jauh lebih mudah untuk menangani dari variabel di C.
Setiap variabel hanya dimulai dengan tanda dolar di depannya, dan mereka lemah diketik.
Itu berarti bahwa Anda tidak perlu khawatir tentang pengaturan sesuatu
sama dengan string atau integer.
Anda hanya dapat hanya mengatakan, ini adalah nama saya dari variabel
dan kemudian ini adalah nilainya,
sehingga akan lebih mudah untuk menangani sana.
>> Hal lain adalah bahwa PHP memungkinkan Anda untuk menggunakan array asosiatif.
Anda hanya dapat hanya mendefinisikan sebuah array seperti Anda akan di C
dengan mengatakan, tanda dolar-nama Anda array-sama,
dan kemudian dalam tanda kurung siku pada dasarnya hanya daftar nilai dari semua elemen dalam array.
Namun, di PHP apa yang Anda juga dapat lakukan adalah menentukan pada dasarnya -
itu jenis seperti fungsi hash.
Anda dapat menentukan indeks - apa yang akan Anda menyebutnya -
dan kemudian yang sesuai dengan nilai.
Jika Anda benar-benar lulus dalam, = 1 b = 2, c = 3,
maka array pada indeks akan memberi Anda 1.
Pset ini akan menghangatkan Anda dengan beberapa PHP dalam bagian pertanyaan,
dan kemudian kita menyelam ke CS50 Keuangan.
>> Kami memiliki beberapa - kami memiliki beberapa fungsi, pada dasarnya,
untuk menerapkan di website ini.
Kami ingin memungkinkan pengguna untuk mendaftar di website kami dengan nama pengguna dan password.
Kami ingin memungkinkan mereka untuk mencari penawaran,
dan kemudian kami akan mencetak nama kutipan itu serta harga saat ini bahwa itu sama.
Kami ingin memungkinkan mereka untuk melihat portofolio dari semua saham yang mereka beli sejauh ini.
Kami juga ingin untuk memungkinkan mereka untuk membeli saham serta menjualnya.
Dan akhirnya, kami ingin memungkinkan mereka untuk melihat sejarah
dari semua transaksi yang mereka buat.
Kemudian, akhirnya, setelah Anda telah menerapkan semua itu,
maka Anda bebas untuk menerapkan satu fitur tambahan.
Kami akan pergi ke orang.
Mereka dapat berupa memungkinkan pengguna untuk mendapatkan uang ekstra dengan mendepositokan uang ekstra,
atau Anda dapat memungkinkan mereka untuk mengubah password mereka, atau sesuatu seperti itu,
email mereka tanda terima ketika mereka membeli atau menjual saham.
Ada daftar fitur yang terbatas bahwa Anda bisa menerapkan sendiri,
jadi itulah yang terakhir di sana.
>> Karena ini adalah sebuah situs web, kalian juga memiliki banyak kebebasan untuk menyesuaikannya.
Kami menyediakan beberapa kode CSS, tapi kau pasti bebas untuk tweak,
membuatnya terlihat lebih bagus, tapi yang mendasari itu adalah fungsi dasar
jadi selalu mengacu pada spesifikasi tentang apa yang sebenarnya Anda butuhkan untuk memasukkan sana.
Setelah spec, kita akan menggunakan alat seperti juga server.
Ini akan menjadi tuan website kami untuk kami, pada server lokal.
Jika Anda mengikuti petunjuk ini dan unzip kode 7 distribusi pset
ke dalam virtual folder Anda host / host lokal,
maka Anda hanya dapat mengunjungi http://localhost/ di Google Chrome di alat,
dan kemudian Anda akan mencapai kode di mana Anda telah menulis pset 7.
>> Pset 7 datang dengan sekelompok kode distribusi,
dan mudah-mudahan we've - melalui semua psets sebelum ini -
terbiasa kita untuk membaca melalui kode distribusi,
memahami apa fungsi yang sudah disediakan, dan bagaimana kita mungkin dapat menggunakan
mereka dan fungsi lain yang kita akan melaksanakan.
Dalam kasus ini, kami memiliki 3 folder.
Kami memiliki folder HTML, yang meliputi folder, dan folder template.
Apa yang kita akan lakukan dengan pset ini adalah jenis memisahkan pemikiran -
pemikiran pemrograman - dari kode PHP dengan aspek visual yang sebenarnya.
Kami akan memiliki satu file PHP yang melakukan semua pemikiran, membaca ke dalam database,
print hal, memiliki jika pernyataan - hal-hal seperti itu -
dan kemudian yang akan lulus data ke file template kami - atau file template.php.
Apa yang akan lakukan adalah membaca data dan kemudian akan mencetaknya.
>> Kita dapat memperlakukan template sebagai "bodoh" dalam bahwa kita tidak benar-benar ingin mereka
untuk melakukan banyak pekerjaan dalam menghitung hal.
Kami ingin controller kita untuk melakukan itu.
Sedikit pada itu - mari kita lihat beberapa kode distribusi.
Di sini kita memiliki file index.html kita, dan itu cukup kosong.
Pada dasarnya apa yang dilakukannya - ia mengatakan, dengan baik, aku akan membutuhkan file configuration.php.
Kami tidak melihat bahwa di sana, tapi itu pada dasarnya memanggil file configuration.php,
dan melaksanakan itu.
Setelah melakukan itu, itu akan membuat portofolio.
Rendering adalah fungsi, sehingga setiap kali kita berada di controller,
kami akan menelepon render, kami akan memberikan file dan kemudian data yang kita melintas di,
sehingga akan memanggil portfolio.php jenis--lulus dalam data sehingga portofolio yang dapat menangani dengan itu.
>> Dan sekarang, di sini, kita memiliki bentuk login.php kami.
Ini adalah kontroler yang pada dasarnya mengurus penebangan masuk
Di sini, ia akan memeriksa apakah formulir diserahkan kepada file ini dan berhubungan dengan memvalidasi pengajuan.
Kita akan melihat ke dalam fungsi ini minta maaf.
Ketika kita ingin mencetak pesan kesalahan,
kita gunakan meminta maaf dan yang akan mengarahkan pengguna ke halaman tertentu
yang akan mencetak pesan kesalahan tertentu yang kita mengindikasikan.
Melanjutkan, maka akan query database - kami masuk ke lebih dari itu nanti.
Kemudian Anda melihat bahwa di sini jika formulir itu tidak diserahkan, maka membuat formulir.
Itu berarti bahwa ia pergi ke login_form.php, jadi mari kita lihat pada saat itu.
>> Login.php sebenarnya di mana kita melihat berurusan HTML dengan aspek visual yang sebenarnya.
Di sini kita memiliki tag masukan untuk nama pengguna, masukan password,
serta tombol kirim.
Itu sebenarnya di mana aspek visual dan bentuk HTML akan diadakan.
Di sini, ia mengatakan bahwa hal itu akan disampaikan dengan metode tertentu, yang disebut pos.
Kita akan masuk ke perbedaan antara metode -
posting vs dapatkan, ada juga sesuatu yang disebut menempatkan -
kita akan masuk ke dalam metode-metode kemudian, tetapi untuk kepentingan pset ini,
Saya akan sangat mendorong Anda untuk menggunakan pos.
>> Kita tahu bahwa pada dasarnya setelah formulir ini diajukan -
dari login_form.php--
maka ia akan pergi dengan tindakan - login.php--
pada dasarnya lulus dalam semua parameter dari bentuk-bentuk menjadi login.php.
Hasil dari formulir yang terkandung dalam array asosiatif posting.
Indeks dari elemen yang berbeda dalam array pos
persis apa yang Anda tetapkan di sini.
Anda mengatakan bahwa nama masukan ini adalah username. Nama yang satu ini adalah password.
Demikian pula, Anda melihat username sebagai indeks dari array asosiatif ada.
Jika kita pergi ke folder meliputi, kita memiliki file ini fungsi yang akan sangat berguna.
>> Semua fungsi-fungsi ini diterapkan untuk Anda.
Anda tidak perlu secara khusus menerapkan salah satu sendiri,
tetapi mereka akan sangat berguna.
Kami telah meminta maaf, yang seperti yang saya katakan sebelumnya, pada dasarnya akan mencetak pesan kesalahan
untuk Anda pada halaman tertentu - apology.php.
Lalu kami memiliki dump, jadi jika Anda hanya memanggil dump dan kemudian lulus dalam variabel,
maka akan membawa Anda ke halaman yang akan menampilkan variabel itu untuk Anda.
Kemudian kita telah logout, yang pada dasarnya akan mengakhiri sesi pengguna tertentu itu.
Lookup akan berguna.
Karena kita sedang berhadapan dengan kutipan dan saham, kita akan bisa -
dan itu pada dasarnya real time.
Kita perlu tahu apa nilai-nilai saham,
sehingga kita memiliki fungsi lookup yang berkaitan dengan dokumentasi Yahoo saham.
Setelah Anda mencari simbol tertentu saham, maka akan kembali kepada Anda simbol saham
serta nama dan harga saat saham itu.
Itulah fungsi lookup.
>> Kemudian kita sedang berhadapan dengan mySQL,
jadi kita akan ingin mengeksekusi query tertentu pada database SQL kami.
Kami memiliki permintaan untuk menangani - untuk jenis beberapa abstrak bahwa.
Kita akan lewat di seluruh string query SQL kita -
dan semua variabel yang masuk di dalamnya -
dan apa yang dilakukan adalah benar-benar melaksanakan itu bagi kita.
Daripada harus menulis semua ini keluar setiap kali Anda ingin query -
dengan mendapatkan semua hasil dari query yang -
maka Anda hanya dapat memanggil fungsi permintaan, dan itu akan kembali kepada Anda -
tergantung pada apa yang Anda gunakan untuk permintaan Anda -
mungkin deretan semua hasil yang sesuai dengan permintaan atau mirip.
Lebih pada nanti sekalipun.
>> Akhirnya, kami memiliki redirect yang, seperti namanya, mengarahkan Anda ke halaman yang berbeda.
Dan kemudian kita harus render, yang kita akan menelepon beberapa kali.
Ketika Anda berada di controller, Anda menelepon membuat ke halaman template
dan kemudian lulus dalam nilai-nilai yang template kemudian akan menangani.
Nilai-nilai tersebut mungkin akan berurusan dengan jenis output yang Anda inginkan
yang akan ditampilkan pada halaman template Anda.
Oke. Mereka adalah fungsi, dan ada lebih banyak untuk kode distribusi.
Saya mendorong Anda untuk pergi melalui ini dan mengeksplorasi sendiri.
Juga, spec mungkin akan memandu Anda melalui beberapa unsur-unsur lain dari kode distribusi.
Berikut ini adalah ringkasan dari fungsi yang ditemukan di functions.php.
>> Oke. Tugas pertama adalah untuk memungkinkan pengguna untuk mendaftar di situs web.
Saat ini, ada form login di website,
dan Anda disediakan dengan beberapa pengguna dengan password.
Anda dapat menggunakan username dan login,
tetapi Anda ingin mengizinkan orang untuk membuat username mereka sendiri
dan menambahkan diri ke situs web.
Tata letak untuk pendaftaran cukup mirip dengan form login,
kecuali username tidak sudah ada sebelumnya,
dan pengguna juga perlu memberikan password baru,
dan kemudian biasanya kita memiliki konfirmasi password.
Setelah input pengguna semua informasi itu,
kami ingin menambahkannya ke database kami pengguna.
Kita akan memiliki database - database SQL -
bahwa kita akan referensi.
Dalam database itu, kita akan memiliki sebuah meja dengan semua pengguna
mengandung nama pengguna, password mereka, dan juga berapa banyak uang tunai yang mereka miliki.
>> Di register, kami ingin memungkinkan mereka untuk memasukkan informasi tersebut.
Kami ingin menampilkan bentuk itu.
Kami ingin memastikan bahwa password mereka -
bahwa mereka masuk ke salah satu, dan kemudian juga bahwa password sesuai ketika mereka memasuki dua kali.
Setelah semua itu dilakukan - dengan asumsi bahwa kesalahan-kesalahan yang diperiksa -
maka kita ingin menambahkan para pengguna ke database kami.
Akhirnya, setelah Anda terdaftar, itu cukup nyaman jika Anda tidak perlu login lagi
setelah Anda terdaftar,
jadi kita akan login mereka ke situs web jika mereka sudah terdaftar di berhasil.
>> Tugas pertama adalah untuk menampilkan form, dan ini benar-benar akan menjadi -
ini proses pendaftaran seluruh akan dimodelkan cukup erat setelah login
kecuali bukan login.php Anda mungkin memiliki register.php.
Alih-alih login_form.php--yang merupakan template -
Anda akan telah mendaftar bentuk.
Anda akan ingin menambahkan satu bidang lagi - bidang konfirmasi password -
bukan hanya username dan satu password satu.
Selanjutnya, kita ingin memeriksa apakah password sesuai atau kosong.
Kami memiliki kontroler - register.php--yang akan mengurus melakukan pemeriksaan ini.
Bila formulir dikirimkan melalui metode pos,
maka semua variabel yang terkandung dalam array pos.
Anda ingin memastikan bahwa array posting nilai pada indeks sandi
cocok elemen konfirmasi.
Anda ingin memastikan bahwa mereka tidak kosong,
dan Anda ingin memastikan bahwa mereka sama.
>> Satu hal yang nyaman tentang PHP adalah bahwa kita tidak perlu menggunakan string membandingkan lagi.
Kita dapat menggunakan operator sama-sama
untuk memeriksa apakah string sama dengan satu sama lain.
Untuk penanganan error, Anda akan ingin minta maaf.
Untuk meminta maaf, Anda cukup memanggil fungsi
dan kemudian menentukan jenis pesan yang ingin Anda output.
Anda kemudian ingin menambahkan user ke database.
Sampai sekarang, semua kita sudah melakukan hanya berhubungan secara langsung dengan hasil formulir.
Sekarang, kita benar-benar ingin menambahkannya ke database kami.
Untuk ini, pertama-tama kita ingin memastikan bahwa username tidak kosong.
Memahami bahwa pada sebuah situs web, Anda tidak dapat memiliki beberapa pengguna dengan username yang sama,
sehingga Anda akan ingin memastikan bahwa ketika Anda memasukkan sesuatu ke dalam database Anda -
menyisipkan pengguna baru - maka Anda tidak mendapatkan tabrakan antara username yang sudah ada sebelumnya
dan username yang pengguna sedang mencoba untuk menyerahkan.
Untuk ini, setelah Anda mengeksekusi query -
memasukkan pengguna tertentu dengan password mereka dan jumlah awal uang tunai -
sekalinya Anda bahwa permintaan, maka mySQL benar-benar akan mengembalikan false jika gagal.
>> Struktur pengguna adalah sedemikian rupa sehingga username adalah nilai yang unik,
sehingga Anda tidak dapat memiliki lebih dari satu.
Ketika Anda mencoba dan menyisipkan baris baru dengan username yang sudah ada,
itu akan return false - seperti Boolean-nilai palsu.
Suatu hal yang sulit di sini adalah bahwa Anda akan ingin memeriksa apakah hasilnya adalah hasil query Anda.
Jika gagal, maka Anda akan ingin memeriksa dengan operator triple-sama.
Itu benar-benar akan memeriksa apakah ada kegagalan atau tidak,
sedangkan, hanya dalam sederhana sama-sama, itu akan benar jika baris kosong.
Hasil dari kegagalan jika ada tabrakan antara username
adalah nilai palsu yang sebenarnya.
>> Berikut adalah bagaimana Anda akan memasukkan ke dalam database.
Berikut adalah query yang Anda akan dijalankan secara ketat di SQL.
Satu hal adalah bahwa Anda benar-benar bisa pergi ke situs web yang mengelola database SQL Anda
dan bermain di sekitar sana dengan memasukkan secara manual baik nilai-nilai atau baris.
Ini akan menampilkan apa output SQL.
Anda juga dapat menjalankan perintah SQL dalam database Anda
dan kemudian melihat apa sintaks mungkin,
dan kemudian menerjemahkannya ke dalam fungsi permintaan yang kita miliki di pset 7,
yang akan sangat mirip dengan pertanyaan yang Anda benar-benar berjalan.
>> Jika saya ingin menyisipkan baris baru ke dalam tabel pengguna saya,
maka saya akan tentukan masukkan ke pengguna, yang merupakan nama dari meja saya.
Lalu aku akan menentukan nama kolom.
Lalu aku akan memberikan nilai-nilai bersama dengan password saya.
Password dalam tabel pengguna kami tidak hanya disimpan sebagai string.
Mereka disimpan sebagai versi dienkripsi,
sehingga Anda akan ingin menjalankan fungsi pada crypt password yang sebenarnya,
dan itu akan memberi Anda jenis yang tepat penyimpanan untuk array pengguna.
Menjalankan ini akan menyisipkan baris baru ke dalam tabel pengguna Anda.
>> Untuk menangani fungsi permintaan,
sebelumnya di C kita menggunakan tanda persen sebagai pengganti.
Demikian pula, konsep yang sama dari placeholder berlaku di sini.
Dengan permintaan, Anda menentukan seluruh permintaan,
kecuali bila Anda sedang berhadapan dengan variabel sebagai masukan Anda ke dalam query,
maka bukan benar-benar menempatkan mereka dalam - seperti ketika kita memiliki pernyataan printf di C.
Kami akan menempatkan string dan kemudian memiliki placeholder di sana, dan kemudian setelah masing-masing
koma, menentukan variabel kita punya.
Di sini, kita akan menggunakan tanda tanda tanya sebagai placeholder kami
dan kemudian lulus dalam setiap variabel, masing-masing dalam rangka, untuk placeholder -
di mana variabel-variabel tersebut harus pergi.
Jadi di sini, tanda tanya pertama akan digantikan oleh username sebenarnya
maka tanda kedua pertanyaan dengan password.
>> Lalu akhirnya, setelah Anda sudah terdaftar mereka dan menambahkan mereka ke database,
maka Anda ingin login mereka ke situs web.
Kami memiliki semacam sesi super global yang disebut variabel.
Sesi mengambil id tertentu,
dan id yang sesuai dengan pengguna yang sedang login
Apa yang akan Anda ingin lakukan adalah menemukan apa id pengguna mereka
dan kemudian menetapkan bahwa sesi id sebagai id bahwa pengguna tertentu.
Sebuah fungsi yang Anda akan ingin gunakan di sini adalah perintah SQL
yang akan mengambil nomor id terakhir yang dimasukkan dari meja Anda.
Kemudian baris akan memanggil - it'll sebut id - it'll memberikan nama ke nomor itu kembali.
Ini akan menelepon id itu.
Sekarang kita sudah selesai mendaftar, dan kita dapat melanjutkan untuk mengutip.
>> Kutipan memungkinkan pengguna untuk memasukkan nama dari suatu saham tertentu,
dan kemudian akan mengembalikan kualitas dari saham itu.
Apa yang akan Anda ingin lakukan di sini adalah memiliki controller dan beberapa template.
Dalam kasus ini, kita akan memiliki kontroler yang akan melakukan semua pemikiran bagi kita.
Ini akan mencari simbol dan kemudian lulus dalam nilai ke template yang akan mencetak.
Kita akan memiliki 2 template di sini.
Kita akan memiliki 1 template yang menyediakan bentuk di mana pengguna akan
masukan nama saham - nama saham.
Kemudian kita juga akan ingin template lain yang menampilkan nilai-nilai.
Anda dapat melihat ke dalam login untuk contoh bagaimana Anda akan memiliki bentuk yang menerima masukan,
kecuali di sini, kita hanya ingin 1 kolom.
Kami tidak ingin nama pengguna dan password.
Kami hanya ingin 1 kolom teks yang memungkinkan pengguna untuk memasukkan nama saham tertentu.
Kemudian Anda ingin mengirim data - sekali Anda telah mendongak saham itu -
untuk quote_form.php.
Lookup akan mengembalikan simbol saham, nama, dan harga.
Mereka yang terkandung dalam array asosiatif.
Carilah fungsi lookup dalam functions.php untuk informasi lebih lanjut
pada jenis kembalinya mereka.
>> Great! Jadi akhirnya, Anda akan ingin menampilkan informasi saham.
Anda akan mungkin ingin menampilkan - Anda ingin mengakses variabel tersebut.
Setelah Anda memiliki harga dalam variabel -
serta nama dan simbol -
maka Anda akan ingin menampilkan mereka di halaman template Anda.
Itu halaman template bisa disebut show_quote.php atau sesuatu.
Halaman quote.php Anda akan membuat kutipan pertunjukan dan kemudian lulus dalam semua nilai-nilai tersebut.
Kemudian di halaman php Anda, Anda benar-benar mencetak nilai-nilai pada aspek HTML halaman.
Anda hanya menggunakan fungsi cetak dan lulus dalam harga.
Ada 2 cara - Anda dapat menggabungkan dengan operator dot,
atau menggunakan placeholder.
>> Para pengguna akhirnya yang akan membeli dan menjual saham.
Kami ingin mengizinkan mereka beberapa cara melihat semua saham yang mereka miliki saat ini.
Kita akan menyebut bahwa portofolio mereka.
Portofolio akan, mungkin untuk setiap pengguna, mengandung sekelompok baris
daftar jenis saham yang mereka miliki dan kemudian berapa banyak dari mereka yang mereka miliki.
Tabel yang ada kita - sekarang kita memiliki tabel pengguna dalam database kami.
Yang berisi username pengguna serta password mereka dan berapa banyak uang tunai yang mereka miliki.
Tidak ada cara nyata untuk menyimpan semua saham mereka dalam hal itu.
Ini bukan seperti kita dapat menyisipkan kolom baru untuk saham setiap.
Itu akan menjadi barisan yang sangat, sangat lama karena kami memiliki jumlah yang tak terhingga
jenis saham yang mereka bisa.
Jadi, bukan apa yang akan kita lakukan adalah dalam database yang sama,
kita akan memiliki tabel pengguna, tapi kemudian kita juga akan memiliki tabel portofolio.
Tabel portofolio akan pasti terkait dengan tabel pengguna,
melainkan struktur tabel portofolio akan memiliki informasi saham,
berapa banyak saham yang memiliki saham pengguna,
serta khususnya pengguna id nomor.
Anda memiliki tabel pengguna yang memiliki id yang serta nama pengguna, hash -
yang merupakan password, password terenkripsi -
dan kemudian jumlah uang tunai yang mereka miliki.
Nomor id akan dihubungkan ke nomor id dari portofolio.
Portofolio hanya akan memiliki simbol saham serta saham -
jumlah saham yang saham bahwa pengguna memiliki.
Dalam tabel portofolio Anda akan memiliki dasarnya
seluruh saham yang dimiliki oleh semua pengguna di situs Anda.
Kemudian, untuk menentukan saham hanya pengguna tertentu - hanya portofolio mereka -
Anda akan mengambil nilai dari tabel portofolio Anda sedemikian rupa sehingga
nomor id khusus untuk pengguna tersebut.
>> Bila Anda menampilkan portofolio, Anda akan ingin untuk melaporkan setiap saham dalam portofolio pengguna.
Anda akan ingin melaporkan jumlah saham dan nilai saat ini dari saham tersebut.
Bahwa nilai saat saham tersebut tidak disimpan dalam tabel portofolio
karena itu akan memperbarui - minimal - setiap hari oleh Yahoo.
Untuk mendapatkan informasi tersebut, Anda tidak dapat referensi bahwa dari query SQL Anda.
Apa fungsi menetapkan bahwa untuk kita? Apa fungsi akan mendapatkan harga?
Itu lookup, sehingga menggunakan lookup pada simbol tertentu akan memberikan banyak informasi.
Ini akan memberi Anda 3 potong informasi - nama, simbol, serta harga.
Setelah Anda lookup simbol tertentu, maka Anda bisa mendapatkan harga,
dan kemudian Anda dapat menggunakan harga yang akan ditampilkan dalam portofolio Anda.
>> Portofolio juga harus menampilkan saldo kas saat pengguna.
Lapangan yang disimpan dalam tabel pengguna Anda.
Jadi mengingat bagaimana kita pada dasarnya harus -
kami memiliki berbagai jenis file PHP.
Kita akan memiliki controller yang pada dasarnya tidak semua pemikiran untuk Anda.
Dan kemudian kita memiliki template di mana template berurusan dengan data yang keluaran.
Anda harus berpikir tentang apa variabel controller akan perlu mengambil masuk
Jika kita sedang berhadapan dengan portofolio yang output setiap nama, simbol, dan nomor saham,
serta saat ini harga saham,
maka Anda akan ingin menemukan beberapa cara dasarnya lewat di -
Anda dapat lulus dalam sebuah array nilai yang cocok itu.
>> Mari kita masuk ke contoh bagaimana Anda dapat mengambil semua saham
dimiliki oleh pengguna tertentu.
Hal ini tidak berhubungan - namun - dengan harga saham.
Apa ini akan lakukan adalah menjalankan query.
Ini akan mendapatkan simbol serta saham dari -
Aku menelepon meja ini, tetapi dalam kasus ini apakah itu?
Apa nama dari tabel yang kita sedang berhadapan dengan yang memiliki simbol dan saham
untuk pengguna tertentu?
Ini baik pengguna atau portofolio.
Portofolio.
Apa ini akan lakukan adalah portofolio permintaan untuk simbol dan saham
untuk pengguna tertentu.
Di sini, saya katakan, (simbol SELECT, FROM tbl saham -
tapi bukannya meja, Anda akan menggantikan dengan portofolio.
'Dimana' pada dasarnya adalah kondisi saya.
Saya katakan saya hanya ingin mendapatkan orang array asosiatif yang sesuai
kondisi ini berikut - id sama.
Lalu aku meletakkan placeholder di sana dan kemudian id sesi.
Apa ini akan lakukan adalah mengatakan untuk setiap baris dalam baris.
Ini adalah cara yang rapi bukan benar-benar harus melakukan set up untuk loop
yang iterates atas semua indeks, kemudian di PHP Anda dapat memiliki untuk masing-masing loop.
>> Jika Anda memiliki array yang diberikan, maka Anda dapat mengatakan aku akan menelepon setiap elemen berturut -
Saya akan menelepon setiap elemen nama ini.
Jadi, untuk setiap satu dari unsur-unsur, aku akan memanggil mereka ini,
maka saya bisa melakukan ini.
Dalam hal ini untuk masing-masing, Anda memiliki baris sebagai array yang sebenarnya Anda, dan setiap baris Anda akan menelepon baris.
Setiap kali dijalankan tubuh,
akan naik dan akan memperbarui baris ke elemen berikutnya dalam baris.
>> Sekarang, dalam hal membeli saham,
apa yang ingin kita lakukan adalah mendapatkan saham yang pengguna ingin membeli
dan jumlah saham yang pengguna ingin membeli, dan kemudian - jika mereka ingin -
menambah stok bahwa untuk portofolio mereka.
Jelas, jika mereka membeli sesuatu, maka itu akan menurunkan
jumlah uang yang mereka miliki, sehingga akan mengurangi uang mereka.
Kita akan berurusan dengan memperbarui portofolio serta tabel pengguna,
yang berisi uang tunai.
Tapi pertama-tama, Anda perlu untuk mendapatkan saham aktual dan jumlah saham yang diinginkan pengguna.
Untuk itu, Anda harus bentuk HTML yang akan meminta simbol saham
bahwa Anda ingin membeli serta jumlah saham.
Kemudian Anda akan ingin menambahkan.
Anda akan ingin memilih nilai-nilai tertentu.
Kami sudah melalui ini sedikit sudah, tapi ketika Anda mencoba untuk mendapatkan baris tertentu -
mengambil baris tertentu dari tabel SQL,
ini adalah sintaks berikut.
Anda telah pilih, dan kemudian jika Anda tentukan bintang,
yang pada dasarnya akan kembali baris, seluruh seluruh untuk Anda.
Kemudian lagi, Anda memiliki kondisi di mana, dan kemudian Anda tentukan -
Saya hanya ingin username untuk menjadi sama dengan mail-in,
sehingga hanya akan mengambil baris pada pengguna yang sesuai dengan mail-in.
>> Ketika seorang pengguna ingin menambah saham untuk portofolio,
Anda perlu memeriksa beberapa kesalahan.
Anda ingin memastikan bahwa pengguna sebenarnya mampu saham,
sehingga Anda akan ingin memeriksa uang mereka.
Sebelumnya, kami menggunakan bintang untuk mengambil seluruh baris dari tabel SQL.
Tapi di sini, kita benar-benar bisa hanya menentukan bahwa saya hanya ingin 1 value -
Saya hanya ingin uang tunai.
Jadi di sini, itu akan kembali uang tunai untuk pengguna dengan nomor id 1.
Jika pengguna telah membeli saham tertentu tapi kemudian membeli lebih banyak saham itu,
maka dalam portofolio Anda - Anda tidak ingin baris terpisah,
baris lain yang berisi bahwa transaksi baru.
Anda benar-benar ingin memperbarui jumlah.
Semua yang benar-benar mengubah jumlah saham yang pengguna yang memiliki.
Jika Anda menggunakan insert ke dalam query - jadi itu hanya memasukkan ke dalam portofolio Anda semua nilai -
pengguna id jumlah serta simbol saham yang mereka beli
dan saham, maka Anda juga akan ingin menentukan, baik, jika saya berjalan ke dalam sebuah kunci duplikat -
dalam hal ini, kunci duplikat tidak hanya id pengguna tetapi juga simbol saham -
karena Anda hanya dapat memiliki - premis kami adalah bahwa Anda hanya dapat memiliki 1 baris
yang sesuai dengan 1 simbol tertentu.
Jadi, pada kunci duplikat - jika Anda mengalami tabrakan ada -
Anda hanya akan memperbarui saham ke nilai baru.
Saham sama dengan apa pun yang kita miliki sebelum ditambah jumlah saham yang pengguna membeli.
>> Sekarang kami telah memperbarui tabel portofolio,
kita akan ingin memperbarui kas pengguna.
Itu dalam tabel pengguna, jadi kita akan mengurangkan jumlah tertentu dari kas.
Agaknya, itu akan menjadi sama dengan kas dikurangi kas - dan kemudian jumlah tertentu.
Untuk memperbarui uang tunai, Anda akan -
jika saya ingin untuk mengambil uang dari mail-in, maka saya akan menjalankan query ini -
'Update pengguna dan kemudian mengatur kolom kas ke kas -
>> Aku akan menghapus dolar 9.999 hanya jika username sama dengan mail-in.
Namun, dalam kasus ini, kita tidak ingin mengurangi 9.999 khusus.
Kami ingin menentukan, baik, kami ingin mengurangi harga saham saat ini
dikalikan dengan jumlah saham yang mereka beli.
>> Sekarang kita telah memungkinkan mereka untuk melihat semua saham yang mereka miliki,
serta membeli lebih banyak saham.
Kami juga sebelumnya memungkinkan mereka untuk mencari harga saat saham.
Di sini kita ingin mengizinkan mereka untuk menjualnya.
Pertama kita ingin menampilkan dasarnya -
kami ingin memungkinkan mereka untuk melihat semua saham yang mereka miliki,
jadi di sini kita ingin menampilkan semua baris dari portofolio.
Jika mereka memilih untuk menjual saham tertentu,
maka kita akan berasumsi bahwa mereka ingin menjual semua itu.
Mereka tidak hanya akan menjual 50% saham mereka, mereka akan menjual 100% dari itu.
Kami hanya dapat menghapus seluruh baris dari portofolio.
Kita dapat menghapus saham pengguna diberikan terhadap simbol tertentu.
Ada sintaks untuk itu.
>> Kemudian kita ingin memperbarui uang tunai.
Kita akan menambahkan dalam kas sama dengan jumlah saham yang mereka jual
dikalikan dengan harga saham saat ini -
bukan harga di mana mereka membelinya, melainkan harga di mana mereka berada -
harga saat ketika mereka menjualnya.
Untuk referensi harga saat saham,
Anda akan ingin menggunakan lookup, yang akan memberi Anda harga saham
pada waktu saat ini.
>> Sekarang kita yang tersisa dengan sejarah,
yang Anda ingin mengizinkan pengguna untuk melacak semua transaksi mereka -
ingin melihat setiap kali mereka menjual sesuatu, setiap kali mereka membeli saham.
Kami ingin menentukan waktu di mana mereka melakukan itu serta berapa banyak mereka membeli
dan apa saham itu.
Apakah kita memiliki struktur, saat ini sudah ada yang menentukan itu?
Nah, kita memiliki portofolio saham yang menampilkan nomor bahwa pengguna memiliki
untuk berbagi diberikan.
Tapi kami penataan portofolio dalam cara yang update ketika kita membeli beberapa,
sedangkan sejarah harus - jika Anda membeli Apple, 10 saham itu, dan kemudian di menjual 5,
maka Anda akan ingin melihat mereka secara terpisah sebagai tindakan terpisah, baris terpisah.
Sedangkan tindakan yang memvisualisasikan dalam tabel portofolio kami
hanya akan update dengan baris tertentu,
jadi kita mungkin akan ingin meja lain.
Dalam database kami, kita memiliki tabel pengguna kami, kami memiliki meja portofolio kami,
dan sekarang kita mungkin akan ingin tabel sejarah.
Itu tabel sejarah dapat melacak tanggal saat ini,
serta simbol tertentu saham, serta berapa banyak saham,
dan kemudian tindakan apa itu -
apakah Anda membeli saham tersebut atau apakah Anda menjual mereka.
>> Untuk mengatasi dengan tanggal, ada beberapa cara yang dapat Anda lakukan ini.
PHP memiliki cara melacak tanggal, yang Anda dapat melihat sendiri.
Dalam SQL Anda juga dapat menggunakan baik sekarang atau timestamp saat ini. Itu terserah Anda.
Pastikan bahwa setiap kali pengguna membeli atau menjual, Anda akan memperbarui uang mereka
dalam tabel pengguna, Anda akan memperbarui baris dalam tabel portofolio,
maka Anda juga akan memperbarui sejarah,
jadi ada akan menjadi 3 query SQL yang terpisah bahwa Anda akan menelepon sana.
Kami memiliki banyak fungsi sekarang.
>> Hanya beberapa pengingat bahwa dalam file indeks Anda, Anda akan ingin link ke setidaknya Anda -
tetapi Anda akan ingin untuk memungkinkan pengguna untuk menghubungkan ke halaman buy.php.
Itu akan memungkinkan pengguna - buy.php adalah controller, sehingga akan baik
mengirim Anda ke - yang akan mengirim Anda ke bentuk yang memungkinkan Anda untuk melihat hal-hal.
Kami memiliki sejarah. Kami telah keluar log, mendapatkan kutipan dan kemudian menjual.
Mereka adalah minimal apa yang ingin Anda tampilkan.
Dalam hal portofolio, portofolio sebenarnya ditampilkan dalam halaman indeks.
Jika kita pergi ke indeks, di sini kita melihat bahwa itu membuat portfolio.php
dan lewat di array asosiatif - pada dasarnya judul sama dengan portofolio.
Jadi, ini adalah controller.
Jika kita pergi ke template portfolio.php,
maka semua itu adalah - pada dasarnya menampilkan gambar yang mengatakan, oh, situs ini masih dalam pembangunan.
Kemudian, setelah Anda lulus dalam - Anda akan melewati informasi pada dasarnya lebih spesifik.
Bukan hanya judul, Anda mungkin akan lewat di banyak hal.
Setelah Anda memiliki nilai-nilai tersebut, maka portfolio.php dapat menangani nilai-nilai
dan mencetaknya dalam segala macam pesanan.
>> Setelah Anda telah menerapkan semua itu, anda juga perlu untuk mengimplementasikan fitur 1 lebih.
Hal ini juga dapat memungkinkan pengguna untuk mengubah password mereka,
untuk me-reset password mereka jika mereka lupa itu - sehingga untuk reset password, kemudian
Anda mungkin akan juga ingin mengedit mendaftar sehingga memungkinkan mereka untuk menentukan email,
jadi jika mereka lupa password mereka, maka mereka bisa mendapatkan itu.
Mereka mungkin dapat memasukkan username mereka, dan kemudian email akan dikirimkan kepada mereka
dengan link untuk dapat me-reset password mereka.
Anda dapat memiliki sesuatu yang memungkinkan pengguna untuk mendapatkan penerimaan
setiap kali mereka membeli atau menjual sesuatu,
dan akhirnya, memungkinkan mereka untuk menambah uang tunai untuk situs web mereka.
Hanya untuk kembali ke konsep pengendali dan template sedikit.
Anda akan memiliki sesuatu seperti - sehingga Anda akan memiliki controller di sini.
Saat ini, kita sedang melihat contoh login.php.
Ketika kita memiliki controller, pada dasarnya itu akan mengambil 2 kasus.
Ketika kita memiliki kontroler, kita berada di bagian ini bahwa kita juga jenis berurusan dengan
ketika kita memiliki bentuk juga.
Controller pada dasarnya akan memiliki tindakan yang terpisah -
satu jika formulir sudah diserahkan, dan kemudian dua jika pengguna datang ke halaman tersebut
untuk pertama kalinya dan masih perlu masukan yang membentuk.
>> Aku akan melompat ke kasus yang pertama sebelum naik ke kasus pertama memiliki bentuk masuk
Di sini kita katakan, jika formulir telah disampaikan dengan metode pasca -
jangan khawatir tentang itu sedikit.
Jangan khawatir tentang itu terlalu banyak tapi memahami bahwa pada dasarnya fungsi ini berhubungan dengan
apakah formulir sudah diserahkan atau tidak.
Kondisi ini berlaku jika pengguna mengirimkan formulir.
Jika tidak, maka kita akan ingin menelepon login_form.php render, dan kemudian lulus dalam judul.
Gelar ini hanya pada dasarnya akan muncul di header.
Apa yang dilakukan adalah pada dasarnya mengatakan, oke - baik, jika pengguna pergi ke login.php
dan belum benar-benar login, maka saya ingin mengirim mereka ke halaman yang memiliki bentuk yang
yang memungkinkan mereka untuk memasukkan username dan password.
Lalu aku pergi ke login_form, dan kemudian yang memiliki bentuk yang sebenarnya.
Kemudian, setelah pengguna menyerahkan formulir itu, mereka akan mengirimkannya ke login.php
dengan metode pos.
Lalu aku benar-benar akan masuk ke bagian ini jika-lain loop saya.
Kemudian itu di sini bahwa kita berurusan dengan nilai-nilai dimasukkan ke dalam formulir.
Ini di sini bahwa kita berurusan dengan mereka.
>> Kemudian setelah Anda berhubungan dengan nilai-nilai - jika Anda sedang berhadapan dengan -
mengatakan bahwa kita sedang berhadapan dengan halaman quote.php mana seseorang dapat memasukkan saham yang
mereka ingin mencari, dan kemudian melihat tampilan yang -
yang agak serupa di sini.
Di sini kita memiliki form login - kau akan mungkin memiliki bentuk kutipan -
namun kemudian setelah pengguna telah benar-benar disampaikan bahwa informasi,
maka Anda akan ingin controller untuk masuk ke template lain
yang akan menunjukkan kepada mereka bahwa informasi yang sebenarnya.
Jadi tepat di sini, maka Anda mungkin akan -
sekitar akhir kondisi Anda di sini - jika metode sama pasca -
maka Anda mungkin ingin membuat halaman lain - kutipan show -
yang akan mengirimkan Anda ke halaman tersebut - show_quote.php--
dan kemudian di file yang akan referensi nilai-nilai.
Apakah itu masuk akal?
>> Kami memiliki kontroler yang pada dasarnya berhubungan dengan 2 kasus -
apakah Anda telah memasukkan formulir dalam atau tidak.
Jika Anda belum memasukkan formulir,
maka akan mengarahkan Anda ke bentuk yang, yang kemudian akan menempatkan Anda kembali ke halaman tersebut.
Kemudian, setelah Anda memiliki informasi dalam controller, tubuh yang akan berurusan dengan itu
informasi yang diperlukan - baik mencari nilai untuk saham,
dan kemudian setelah itu mendongak nilai-nilai dan memiliki mereka dalam array diformat dengan baik,
kemudian dapat melewati array ke dalam halaman template
yang berhubungan dengan keluaran informasi tersebut.
>> Sekali lagi, karena web itu, itu akan menyenangkan.
Kami di luar C jadi kita tidak terbatas pada ASCII dan bahwa output terminal,
sehingga bersenang-senang dengan hal ini.
Anda dapat membuatnya sebagai visual yang Anda inginkan.
Anda dapat memungkinkan pengguna untuk jutaan dolar masukan pada satu waktu,
atau membatasi mereka dan akan benar-benar berarti dan memungkinkan mereka hanya masuk 1 sen pada suatu waktu
atau sesuatu seperti itu.
Pasti pastikan untuk bersenang-senang dengan hal ini.
>> PHP kode sedikit lebih sederhana dalam bahwa itu sedikit lebih mudah untuk memetakan pseudocode Anda
ke dalam implementasi aktual.
Jadi, pasti bersenang-senang dengan hal ini karena sebenarnya bagian terakhir kami di CS50.
Dengan itu, ini adalah Walkthrough 7.
Setelah Anda selesai menonton walkthrough dan selesai pset Anda,
maka ini juga psets, dan sekarang kita berada pada produk akhir -
setelah kita melewati kuis 1.
Kemudian mudah-mudahan Anda dapat menggunakan alat-alat yang telah Anda pelajari dari psets -
tidak hanya sintaks, tetapi lebih gagasan abstrak tentang bagaimana untuk mengambil tertentu -
seperti, saya ingin melakukan ini dan kemudian benar-benar menerapkan itu.
Belajar bagaimana untuk berjuang melalui sintaks dan kode distribusi.
Membaca kode orang lain, dan kemudian menafsirkan bahwa menggunakan yang sudah ada fungsi.
>> Jadi, semoga sukses dengan pset terakhir.
Ini merupakan kesenangan untuk memimpin penelusuran.
Saya berharap mereka sudah membantu anda.
Ini adalah Walkthroughs, dan terima kasih banyak.
[CS50.TV]