[Công nghệ Thông tin] -- [Web] -- [Công nghệ phần mềm] -- [PhoThong] -- [TỪ ĐIỂN] -- [Game] -- [Học viên cũ] -- [10.000 giờ]
--------------- <> -----------------
---  KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
---  Nhận làm website, web app, chạy quảng cáo, digital marketing --->>>  LIÊN HỆ...

Tìm kiếm trong Blog

Ngu ngơ học làm web (x2) - CakePHP2 - Tạo CSDL MVC

Tiếp theo của: Ngu ngơ học làm web (x1) - CakePHP2 – Cài đặt
-----

Phần x2. CakePHP2 – Tạo CSDL  MVC

Xem clip về phân tích, thiết kế cơ sở dữ liệu (clip số 4 – chickenrainshop):

Đây là đoạn mã để tạo các bảng của cơ sở dữ liệu, import vào cơ sở dữ liệu để làm các bước tiếp theo. Cách làm: nếu chưa tạo cơ sở dữ liệu cho dự án này, thì vào phpmyadmin, tạo cơ sở dữ liệu mới, đặt tên là chickenrainshop, chép (copy) toàn bộ đoạn mã dưới đây, mở một tập tin mới trong Sublime Text (hoặc một editor bất kì), dán (paste) vào đó, lưu lại với tên là database.sql, rồi import vào cơ sở dữ liệu chickenrainshop.

drop table if exists books;
drop table if exists books_writers;
drop table if exists categories;
drop table if exists comments;
drop table if exists coupons;
drop table if exists groups;
drop table if exists orders;
drop table if exists users;
drop table if exists writers;

/*--table books--*/
create table books
(
            id                                             int not null auto_increment,
            category_id                             int,
            title                                          varchar(100) not null,
            slug                                          varchar(255) not null,
            image                                      varchar(255),
            info                                          text not null,
            price                                        int not null,
            sale_price                                int not null,
            publisher                                 varchar(100) not null,
            publish_date                            date not null,
            link_download                         varchar(255) not null,
            published                                 bool default 0,
            created                                                datetime,
            modified                                  datetime,
            primary key (id)
);

/*--table books_writers--*/
create table books_writers
(
            book_id                                   int not null,
            writer_id                                  int not null,
            primary key (book_id, writer_id)
);

/*--table categories--*/
create table categories
(
            id                                             int not null auto_increment,
            name                                       varchar(100) not null,
            slug                                          varchar(255) not null,
            description                               text,
            created                                                datetime,
            primary key (id)
);

/*--table comments--*/
create table comments
(
            id                                             int not null auto_increment,
            user_id                                    int not null,
            book_id                                   int not null,
            content                                     text not null,
            created                                                datetime,
            primary key (id)
);

/*--table coupons--*/
create table coupons
(
            id                                             int not null auto_increment,
            code                                         varchar(255) not null,
            percent                                                float(3) not null,
            description                               text,
            time_start                                datetime not null,
            time_end                                  datetime not null,
            created                                                datetime,
            modified                                  datetime,
            primary key (id)
);

/*--table groups--*/
create table groups
(
            id                                             int not null auto_increment,
            name                                       varchar(100) not null,
            percent                                                float(3) not null,
            description                               text,
            created                                                datetime,
            primary key (id)
);

/*--table orders--*/
create table orders
(
            id                                             int not null auto_increment,
            user_id                                    int not null,
            customer_info                          text not null,
            orders_info                              text not null,
            payment_info                           text not null,
            status                                       int default 1,
            created                                                datetime,
            modified                                  datetime,
            primary key (id)
);

/*--table users--*/
create table users
(
            id                                             int not null auto_increment,
            group_id                                  int not null,
            username                                 varchar(100) not null,
            password                                 varchar(100) not null,
            email                                       varchar(100) not null,
            firstname                                 varchar(100) not null,
            lastname                                  varchar(100) not null,
            address                                    varchar(255),
            phone_number                                    char(13),
            created                                                datetime,
            modified                                  datetime,
            primary key (id)
);

/*--table writers--*/
create table writers
(
            id                                             int not null auto_increment,
            name                                       varchar(100) not null,
            slug                                          varchar(255) not null,
            biography                                text,
            created                                                datetime,
            primary key (id)
);

Sinh mã của dự án theo mô hình MVC.

Vì cơ sở dữ liệu đã được đặt tên theo quy ước của CakePHP, nên có thể sử dụng cake console để sinh mã tự động cho các chức năng cơ bản.

Mở cửa sổ dòng lệnh, chuyển tới thư mục của dự án, ví dụ: E:\webroot\chickenrainshop nhập lệnh sau: cake bake all

Màn hình sẽ hiển thị tên của các model mà hệ thống có thể sinh mã, ví dụ:

1. Book
2. BooksWriter
3. Category
4. Comments
5. Coupons
6. Groups
7. Orders
8. Users
9. Writers

Nhập từng số ở danh sách trên để sinh mã tự động. Lưu ý: xong mỗi model sẽ gõ lại cake bake all và nhập số kế tiếp, do books_writers là bảng phụ nên sẽ không cần sinh mã cho bảng này.

Sau khi chạy xong các lệnh cake bake all, Cake console sẽ tạo ra các model, view, controller tương ứng trong dự án chickenrainshop, vào Sublime Text, mở dự án ra để kiểm tra.

Cấu trúc thư mục của một dự án CakePHP, và quy ước đặt tên, đọc thêm tại đây: https://kysutho.com/cakephp-bai-3-cau-truc-thu-muc-va-cac-quy-uoc-chung/

Để ý các thư mục sẽ làm việc nhiều với nó là: Config, Controller, Model, View và webroot.


Nhập dữ liệu mẫu vào để lập trình các chức năng.

Hoặc có thể tải một ít dữ liệu mẫu tại đây:
Hình ảnh:

-----------
Cập nhật 22/4/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web

Ngu ngơ học làm web (x1) - CakePHP2/3 - Cài đặt

Tiếp theo của: Ngu ngơ học làm web (x) -
-----

Phần x1. CakePHP2/3 – Cài đặt


Đọc qua lý thuyết trước:


– Vào đường dẫn sau để tải nguồn về, lấy bản CakePHP2 (ví dụ 2.10.17), bấm vào chữ zip để tải file zip về:


– Giải nén tập tin cakephp-2.10.17.zip, rồi chép thư mục đã được giải nén vào webroot (ví dụ xampp\htdocs).

– Cấu hình để chạy Cake Console trên Windows:

Cake Console là một tiện ích chạy ở chế độ dòng lệnh, tiện ích này có sẵn trong framework CakePHP. Tiện ích này giúp tạo project dựa trên CakePHP được dễ dàng mà không cần phải copy toàn bộ framework CakePHP cho mỗi dự án khác nhau; giúp sinh mã tự động theo mô hình MVC, giúp người học dễ dàng tìm hiểu và học theo cách viết mã dựa trên CakePHP; giúp tạo template dựa trên Bootstrap.

Để chạy được tiện ích Cake Console cần thiết lập biến môi trường trên Windows.

Đọc thêm về biến môi trường trên Windows tại đây:


Hiểu nôm na:

– Biến môi trường được sử dụng để tham chiếu tới ứng dụng

– Giá trị của biến chính là đường dẫn tới tập tin thực thi (.exe) của ứng dụng, các giá trị của biến được ngăn cách nhau bằng dấu chấm phẩy (;)

– Trong cửa sổ dòng lệnh, gõ lệnh “set” để xem các biến môi trường và giá trị tương ứng

– Biến môi trường gồm hai loại: biến hệ thống và biến người dùng; biến hệ thống cho phép mọi người đều dùng được, admin mới được phép thay đổi biến này; biến người dùng chỉ cho một người cụ thể được thay đổi giá trị và sử dụng.

Cần thiết lập biến môi trường cho lệnh php.exe và cake.exe. Mục đích là: để khi vào cửa sổ dòng lệnh, gõ lệnh “cake” và “php” ở mọi vị trí thì Windows đều tìm được hai tập tin cake.exe và php.exe để thực thi.


Ví dụ, thiết lập biến môi trường trên cho lệnh php.exe, và cake.exe Windows 10,

– Nhấn phím window (biểu tượng cửa sổ) trên bàn phím

– Nhập chữ “system”, sẽ thấy xuất hiện mục System (control panel), bấm vào mục System

– Tại cửa sổ System, chọn mục Advanced system settings

– Trong cửa sổ System Properties, tab Advanced, chọn mục Environment Variables…

– Trong cửa sổ Environment Variables, mục User variables for…, chọn Path, chọn Edit

– Trong cửa sổ Edit environment variable, bấm nút New và nhập giá trị của biến môi trường, ví dụ: C:\xampp\php và D:\WEBROOT\myapp\app\Console (đây chính là thư mục Cakephp vừa tải về, vào thư mục app\Console, trong đó sẽ có tập tin cake.exe)

­– Bấm OK (một số lần) để hoàn thành việc thiết lập biến môi trường


– Để kiểm tra xem việc thiết lập thành công hay chưa, mở cửa sổ dòng lệnh (cmd), nhập lệnh “php –v”, hoặc cake, nếu các lệnh này chạy được, nghĩa việc thiết lập biến môi trường đã thành công


- Tạo dự án bằng Cake Console:

+ Mở cửa sổ dòng lệnh (Run > cmd).

+ Tại dấu nhắc lệnh: gõ lệnh cake bake

+ Hệ thống sẽ hiển thị câu hỏi: What is the path to the project you want to bake? (đường dẫn và tên dự án sẽ tạo), ví dụ sẽ nhập là: E:\webroot\chickenrainshop hoặc C:\xampp\htdocs\chickenrainshop

+ Hệ thống hỏi tiếp: What is the path to the directory layout you wish to copy? (đường dẫn của dự án mẫu (khung dự án) sẽ được nhân bản sang dự án của bạn), ví dụ, lấy luôn cái mẫu mặc định của CakePHP là […Console\Templates\skel], không cần nhập gì, chỉ việc gõ Enter.

+ Look okay? (kiểm tra lại thông tin vừa nhập xem được chưa): bấm Enter.

+ Sang tới phần cấu hình database.

Gồm các thông tin sau:
                        'datasource' => 'Database/Mysql',
                        'persistent' => false,
                        'host' => ,
                        'login' =>,
                        'password' => ,
                        'database' => ,
                        'prefix' => '',
                        'encoding' => 'utf8',

+ Name: tên của datasource, để mặc định, gõ Enter.

+ Persistent: để mặc định là false hay [n], gõ Enter.

+ Database host: để mặc định là localhost, gõ Enter.

+ Port: để mặc định, gõ Enter.

+ User: để mặc định là root, gõ Enter.

+ Password: để mặc định là trống, gõ Enter. Nó hỏi là có chắc là sử dụng mật khẩu trắng không? Gõ y (yes).

+ Database name: nhập tên của cơ sở dữ liệu, ví dụ: chickenrainshop, cứ nhập tên vào đây trước, tí nữa sẽ tạo database sau.

+ Table prefix: để mặc định, gõ Enter.

+ Table encoding: nhập utf8, gõ Enter.

+ Hệ thống sẽ xuất lại các thông tin đã cấu hinh, và hỏi thế đã được chưa (look ok?), bấm Enter.

+ Hệ thống hỏi có muốn cấu hình thêm database khác nữa không? Đủ rồi! bấm Enter.

+ Vào thư mục webroot\chickenrainshop hoặc htdocs\chickenrainshop để xem dự án kết quả đã được tạo ra.

Xem thêm clip này để rõ thêm (clip số 1 – chickenrainshop): https://www.youtube.com/watch?v=OTYeFyVxVCQ&list=PLCAoQYeCcECgTO5zuWfh5rHj7sqVMu73E

Cấu hình tên miền cho dự án là: local.chickenrainshop. Tham khảo cách tạo tên miền ảo tại đây: https://thachpham.com/thu-thuat/cach-them-ten-mien-ao-cho-localhost-voi-xampp.html

Mở trình duyệt lên để kiểm tra trang web.

Xem thêm hướng dẫn cài DebugKit, không cần làm, vì sau này sẽ tự debug (clip số 2 – chickenrainshop):

Xem clip về yêu cầu của dự án sẽ cài đặt (clip số 3 – chickenrainshop):

-----------
Cập nhật: 11/7/2019 (21/4/2017)
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web

Tiếng Anh chuyên ngành Công nghệ Thông tin (2) - The computer

Tiếp theo của: Tiếng Anh chuyên ngành Công nghệ Thông tin (1) - Cách học tiếng Anh chuyên ngành
-------

1      The computer

1.1        Đọc hiểu

1.1.1        Phương pháp dịch

Bằng chứng để biết chúng ta đã hiểu một tài liệu tiếng Anh là dịch được nó ra tiếng Việt. Ví dụ, cho một đoạn tiếng Anh sau:

“A computer is a machine with an intricate network of electronic circuits that operate switches or magnetize tiny metal cores. The switches, like the cores, are capable of being in one of two possible states, that is, on or off; magnetized or demagnetized. The machine is capable of storing and manipulating numbers, letters, and characters. The basic idea of a computer is that we can make the machine do what we want by inputting signals that turn certain switches on and turn others off, or that magnetize or do not magnetize the cores.”

Làm sao để hiểu được đoạn văn bản trên?

Chúng ta có thể chép cả đoạn này rồi nhờ https://translate.google.com dịch giúp, tuy nhiên về lâu dài cách này không tốt, nó làm triệt tiêu khả năng đọc hiểu. Nó là lựa chọn sau cùng khi mình không thể tự đọc hiểu được.

Cách hay nhất là dùng từ điển để tra nghĩa của từng từ, phải kiên trì thực hiện vì không có con đường tắt. Bạn có thể dùng từ điển giấy, phần mềm từ điển, từ điển trực tuyến, hoặc Google Translate; có thể kết hợp cả hai loại từ điển: từ điển thông thường và từ điển chuyên ngành Công nghệ Thông tin.

Bước đầu có thể dùng từ điển Anh – Việt (ví dụ: http://tratu.soha.vn), sau này sẽ kết hợp và chủ yếu là sử dụng từ điển Anh – Anh.

Bạn nên chuẩn bị giấy nháp và cây bút, viết lại từng từ ra và tra nghĩa của nó, viết một hai lần, không cần viết lại quá nhiều lần. Sau này nếu gặp lại từ mà mình đã từng tra nghĩa nhưng bạn vẫn chưa nhớ nghĩa, thì lại viết lại và tra nghĩa lại, cho tới khi nào thực sự nhớ được từ và nghĩa của nó thì thôi.

Qua việc viết, từ mới cùng với nghĩa của nó sẽ đi vào đầu mình lúc nào không hay!

Sau khi viết và biết nghĩa của nó rồi thì mở một chương trình từ điển có giọng đọc của người bản ngữ tốt tốt một chút, gõ chữ vào cho nó đọc rồi đọc theo. Ví dụ, https://www.ldoceonline.com/,  hoặc http://dictionary.cambridge.org/,  hoặc https://translate.google.com/

Bước đầu có thể đọc không giống họ hoàn toàn bởi có một số âm của tiếng Anh không có trong hệ thống âm của người Việt Nam. Các bạn sẽ củng cố khả năng phát âm khi học các khóa học về phát âm một cách bài bản.

Câu (sentence)

Để dịch hay đọc hiểu được tài liệu tiếng Anh, cần phải trang bị một chút ngữ pháp cơ bản. Phần này sẽ tìm hiểu về cấu tạo của một câu đơn giản trong tiếng Anh.

Câu là một tập hợp các từ, có thể tồn tại độc lập trong văn bản, để diễn đạt một ý trọn vẹn. Khi dịch sẽ dịch từng câu, để rút ra được ý nghĩa của câu đó muốn nói gì, tức là đã hiểu được ý của người viết. Câu thường kết thúc bằng dấu chấm (.), dấu hỏi (?), dấu chấm cảm (!); đây cũng là dấu hiệu để nhận diện câu.

Để dễ hiểu, hãy tìm hiểu cấu tạo của một câu đơn giản (câu đơn).

Trong tiếng Anh, câu đơn giản thường gồm các thành phần sau:

– Chủ ngữ: Subject, kí hiệu là S

– Động từ: Verb, kí hiệu là V

– Tân ngữ: Object, kí hiệu là O

– Bổ ngữ: Complement, kí hiệu là C

– Trạng ngữ: Adverb, kí hiệu là A

Một câu bắt buộc phải có hai thành phần là S và V, các thành phần còn lại có thể có hoặc không.

Một vài lưu ý:

– Tính từ bổ nghĩa cho danh từ, và đứng trước danh từ (red dress)

– Phân biệt tính từ và trạng từ (good-well, bad-badly, quick-quickly). Trạng từ bổ nghĩa cho động từ, đứng sau động từ được bổ nghĩa (I speak English well)

– Trong câu luôn phải có một động từ (hoặc là động từ thường–hiểm nôm na là các từ chỉ hành động, hoặc là động từ Tobe), câu nào không có động từ thường thì phải có động từ Tobe. Ví dụ, muốn nói “Tôi tự tin” không thể nói là “I confident” mà phải thêm động từ Tobe vào thành “I am confident”.

Vài mẫu câu đơn giản:

S + V (I + promise. Cats + meow)

S + V + O (I + read + a book)

S + V + C (I + am + confident)

S + V + O + C (I + consider + myself + as a responsible)

1.1.2        Từ vựng

Accumulator (n): Tổng

Addition (n): Phép cộng

Address (n): Địa chỉ

Appropriate (adj): Thích hợp

Arithmetic (n): Số học

Capability (n): Khả năng

Circuit (n): Mạch

Complex (adj): Phức tạp

Component (n): Thành phần

Computer (n): Máy tính

Computerize (v): Tin học hóa

Convert (v): Chuyển đổi

Data (n): Dữ liệu

Decision (n): Quyết định

Demagnetize (v): Khử từ

Device (n): Thiết bị

Disk (n): Đĩa

Division(n): Phép chia

Electronic (a): Điện tử

Equal (a): Bằng

Exponentiation (n): Lũy thừa, hàm mũ

External (adj): Ngoài, bên ngoài

Feature (n): Chức năng, đặc tính

Firmware (n): Phần sụn, vi chương trình

Function (n): hàm, chức năng

Fundamental (a): Cơ bản, cơ sở

Greater (adj): Lớn hơn

Handle (v): Xử lý, điểu khiển

Input (v,n): Nhập liệu, đầu vào

Instruction (n): Lệnh, chỉ dẫn

Internal (adj): Trong, bên trong

Intricate (adj): Phức tạp

Less (adj): Nhỏ hơn, ít hơn

Logical (adj): Hợp logic, hợp lý

Magnetic (adj): Có từ tính, (thuộc) nam châm

Magnetize (v): Từ hóa, nhiễm từ

Manipulate (n): Xử lý

Mathematical (adj): (thuộc) Toán học

Mechanical (adj): (thuộc) Cơ khí, Cơ học

Memory (n): Bộ nhớ

Microcomputer (n): Máy vi tính

Microprocessor (n): Bộ vi xử lý

Minicomputer (n) : Máy tính nhỏ

Numeric (adj) : Thuộc về số học

Operation (n): Sự vận hành, phép toán

Output (v,n) : Xuất kết quả, đầu ra

Perform (v): Thực hiện, thi hành

Process (v): Xử lý

Processor (n): Bộ xử lý

Pulse (n): Xung, mạch xung

Register (v,n): Đăng ký, thanh ghi

Signal (n): Tín hiệu

Solution (n): Giải pháp

Store (v, n): Lưu trữ, kho hàng

Subtraction (n): Phép trừ

Switch (n): Chuyển

Tape (v,n): ghi băng, băng

Terminal (n): Máy trạm

Transmit (v): Truyền

 

1.1.3        Các ý chính trong bài

– Computers are machines capable of processing and outputting data. Máy tính là các loại máy có khả năng xử lý và xuất ra dữ liệu.

– All computers accept and process information in the form instructions and characters.  Mọi máy tính đều nhận và xử lý thông tin dưới dạng các lệnh và ký tự.

– The information necessary for solving problems is found in the memory of the computer. Thông tin cần để giải quyết các “bài toán” được lấy trong bộ nhớ của máy tính.

– Computers can still be useful machines even if they can’t communicate with the user. Máy tính vẫn là công cụ có ích kể cả khi nó không thể giao tiếp với người dùng.

– There are many different devices used for feeding information into a computer. Có thể sử dụng nhiều thiết bị khác nhau để đưa thông tin vào cho máy tính.

– There aren’t many different types of devices used for giving results as there are for accepting information. Các thiết bị xuất kết quả không nhiều bằng các thiết bị nhập thông tin.

– Computers can work endlessly without having stop to rest unless there is a breakdown. Máy tính có thể làm việc liên tục không nghỉ trừ khi có trục trặc nào đó.

1.1.4        Bài đọc

1.      A computer is a machine with an intricate network of electronic circuits that operate switches or magnetize tiny metal cores. The switches, like the cores, are capable of being in one of two possible states, that is, on or off; magnetized or demagnetized. The machine is capable of storing and manipulating numbers, letters, and characters. The basic idea of a computer is that we can make the machine do what we want by inputting signals that turn certain switches on and turn others off, or that magnetize or do not magnetize the cores.

2.      The basic job of computers is the processing of information. For this reason, computer can be defined as devices which accept information in the form of instructions called a program and characters called data, perform mathematical and/or logical operations on the information, and then supply results of these operations. The program, or part of it, which tells the computers what to do and the data, which provide the information needed to solve the problem, are kept inside the computer in a place called memory.

3.      Computers are thought to have many remarkable powers. However, most computers, whether large or small have three basic capabilities. First, computers have circuits for performing arithmetic operations, such as: addition, subtraction, division, multiplication and exponentiation. Second, computers have a means of communicating with the user. After all, if we couldn't feed information in and get results back, these machines wouldn't be of much use. However, certain computers (commonly minicomputers and microcomputers) are used to control directly things such as robots, aircraft navigation systems, medical instruments, etc.

4.      Some of the most common methods of inputting information are to use punched cards, magnetic tape, disks, and terminals. The computer's input device (which might be a card reader, a tape drive or disk drive, depending on the medium used in inputting information) reads the information into the computer. For outputting information, two common devices used are a printer which prints the new information on paper, or a CRT display screen which shows the results on a TV-like screen.

5.      Third, computers have circuits which can make decisions. The kinds of decisions which computer circuits can make are not of the type: "Who would win a war between two countries?" or "Who is the richest person in the world?" Unfortunately, the computer can only decide three things, named: Is one number less than another? Are two numbers equal? and, Is one number greater than another?

6.      A computer can solve a series of problems and make hundreds, even thousands, of logical decisions without becoming tired or bored. It can find the solution to a problem in a fraction of the time it takes a human being to do the job. A computer can replace people in dull, routine tasks, but it has no originality; it works according to the instructions given to it and cannot exercise any value judgements. There are times when a computer seems to operate like a mechanical "brain", but its achievements are limited by the minds of human beings. A computer cannot do anything unless a person tells it what to do and gives it the appropriate information; but because electric pulses can move at the speed of light, a computer can carry out vast numbers of arithmetic logical operations almost instantaneously. A person can do everything a computer can do, but in many cases that person would be dead long before the job was finished.

Bài dịch tham khảo

1.      Máy tính là cỗ máy có một mạng các mạch điện tử phức tạp điều hành các công tắc hay từ hóa các lõi kim loại nhỏ tý. Công tắc cũng như lõi từ, có khả năng ở một trong hai trạng thái, tắt hoặc mở, từ hóa hay không bị từ hóa. Máy có khả năng lưu trữ và thao tác các con số, mẫu tự và ký tự. Ý niệm cơ bản về máy tính là ta có thể khiến máy thực hiện những điều mình muốn bằng cách đưa vào các tín hiệu để mở công tắc này, tắt công tắc kia, hoặc từ hóa hay khử từ các lõi từ.

2.      Công việc cơ bản của máy tính là xử lý thông tin. Vì lý do này máy tính có thể được định nghĩa như là thiết bị tiếp nhận thông tin dưới hình thức các chỉ thị được gọi là chương trình và các ký tự gọi là dữ liệu, thực hiện các phép tính logic và/hoặc toán học về thông tin rồi cho kết quả. Chương trình hay một phần chương trình ra lệnh cho máy những điều cần thực hiện, và dữ liệu vốn cung cấp thông tin cần để giải quyết “bài toán”, được lưu trong máy tính tại một nơi gọi là bộ nhớ.

3.      Người ta cho rằng máy tính có nhiều năng lực đáng kể. Tuy nhiên tất cả các máy tính dù lớn hay nhỏ đều có ba khả năng cơ bản. Một là máy tính có các mạch để thực hiện những phép tính số học như cộng trừ nhân chia và lũy thừa. Hai là máy tính có phương tiện giao tiếp với người sử dụng. Sau các tính toán, nếu ta không thể đưa thông tin vào và nhận lại kết quả, máy tính sẽ chẳng có tác dụng gì nhiều. Tuy nhiên một số máy tính nhất định (thông thường là máy mini và máy vi tính) được dùng để điều khiển trực tiếp những thứ như người máy, hệ thống điều hành không lưu, thiết bị y khoa…v.v.

4.      Một số phương pháp thông dụng nhất để nhập thông tin là sử dụng cạc đục lỗ, băng từ, đĩa và thiết bị đầu cuối. Thiết bị nhập của máy tính (có thể là bộ đọc cạc, ổ băng hay ổ đĩa, tùy thuộc vào phương tiện được dùng khi nhập thông tin ) đọc thông tin vào máy tính. Để xuất thông tin, hai thiết bị thường được sử dụng là máy in để in thông tin mới lên giấy, hoặc màn hình hiển thị CRT, hiển thị kết quả trên một màn hình giống như màn hình tivi.

5.      Ba là, máy tính có những mạch (logic) có thể đưa ra các quyết định. Các loại quyết định do mạch máy tính đưa ra không thuộc loại câu hỏi: Ai là người thắng trận giữa hai quốc gia? hay Ai là người giàu nhất thế giới? Tiếc thay máy tính chỉ quyết định được ba điều, đó là: có phải số này nhỏ hơn số kia? hai số có bằng nhau không? hay số này lớn hơn số kia?

6.      Máy tính có thể giải một loạt bài toán và làm hàng trăm thậm chí hàng ngàn quyết định logic mà không hề mệt mỏi hay buồn chán. Nó có thể tìm giải pháp cho một bài toán trong một thời gian rất ngắn so với con người cần có để thực hiện công việc. Máy tính có thể thay thế con người trong những công việc buồn tẻ, lặp lại hằng ngày, nhưng nó không có tính sáng tạo; nó làm việc theo những chỉ thị được cung cấp cho nó và không thể thực hiện bất cứ phán đoán có giá trị nào. Nhiều lúc máy tính dường như hoạt động giống như một “bộ não” cơ học, nhưng những thành tựu của nó bị giới hạn bởi bộ óc của con người. Máy tính không thể làm bất cứ điều gì trừ khi con người nói cho nó các việc cần làm và cung cấp cho nó thông tin thích hợp; nhưng vì các mạch điện tử có thể di chuyển với tốc độ ánh sáng, nên máy tính có thể thực hiện một lượng lớn các phép toán logic, số học gần như ngay lập tức. Một người có thể làm mọi thứ mà máy tính có thể làm được, nhưng trong nhiều trường hợp, người đó sẽ chết rất lâu trước khi hoàn thành công việc.

-----------
---------
Cập nhật [12/8/2021]
-----------
Xem thêm:
Tiếng Anh chuyên ngành Công nghệ Thông tin (0) - Danh mục các bài học

Ngu ngơ học làm web (93) - PDO – fetch_assoc

Tiếp theo của: Ngu ngơ học làm web (92) - PDO - thêm thực đơn
-----

Phần 93. PDO – fetch_assoc


Xem và làm theo clip số 19 của thầy Nguyễn Anh Tuấn:

Ở các bài trước sử dụng hàm fetchAll() với kiểu là FETCH_OBJ, khi đó kết quả trả về của hàm là một mảng các đối tượng. Ví dụ: $mon_an = $stmt->fetchAll(PDO::FETCH_OBJ);

Phần này sẽ sử dụng hàm fetchAll() với kiểu là FETCH_ASSOC, khi đó kết quả trả về của hàm là một mảng các mẩu tin. Khi đó sẽ truy cập tới các trường theo kiểu sau:  <?php echo $mon_an[$i][ten_mon]; ?> thay vì trước đây là <?php echo $mon_an[$i] -> ten_mon; ?>

Dùng một biến chẵn lẻ kết hợp với CSS để định dạng màu nền xen kẽ giữa các đối tượng. Ví dụ:

[PHP]
for($i = 0; $i < count($mon_an); $i++) {
                        $bg = $i % 2 != 0 ? "le":"";
            ?>

[HTML]
<div class="khung <?php echo $bg; ?>" >

Lưu lại đoạn mã để tham khảo:

[connection.php]

<?php
try
{
            //Khai báo đối tượng PDO
            $pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");
            //Xuất tiếng Việt
            $pdo->query("SET NAMES UTF8");
}
catch (PDOException $ex)
{
            die($ex->getMessage());
}
?>

[default.css]

body {  text-align: center;}
h1 { text-align: center; color: #F00;}
#main { width: 750px; border: #f00 solid 1px; background: #fff; display: inline-lock; margin: 0 auto;}
.khung { width: 200px; height: 300px; border: #999 solid 1px; padding: 10px; margin: 10px; float: left;
}
img.cangiua {  display: block; margin-left: auto; margin-right: auto; }
.khung img { width: 150px;}
.tenmon { text-align: center; font-weight: bold;}
.gia {    color: #D98A17;}
.le { background: #ccc; }

[danh_sach_mon_an.php]

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Danh sách món ăn</title>
            <link rel="stylesheet" href="default.css">
</head>
<?php
            include("connection.php");
            $sql = "SELECT ma_mon,ten_mon,noi_dung_tom_tat,don_gia,hinh FROM mon_an";
            $stmt = $pdo->prepare($sql);
            $stmt->execute();
            if($stmt->rowcount() > 0){
                        $mon_an = $stmt->fetchAll(PDO::FETCH_ASSOC);
            }
?>
<body>
<div id="main">
            <h1>Danh sách món ăn  </h1>
            <?php
            for($i = 0; $i < count($mon_an); $i++) {
                        $bg = $i % 2 != 0 ? "le":"";
            ?>
            <div class="khung <?php echo $bg; ?>" >
                        <img class="cangiua" src="<?php echo $mon_an[$i][hinh]; ?>" alt="Hình">
                        <p class="tenmon"><?php echo $mon_an[$i][ten_mon]; ?></p>
                        <p><?php echo $mon_an[$i][noi_dung_tom_tat]; ?></p>
                        <p class="gia">Giá:<?php echo number_format($mon_an[$i][don_gia]); ?> VNĐ</p>
            </div>
            <?php
            }
            ?>
</div>
<?php
            $pdo->NULL;
?>
</body>
</html>

Xem và làm theo clip số 20 của thầy Nguyễn Anh Tuấn:

Vì lúc thiết kế CSDL, trong bảng khach_hang chưa có cột giới tính (gioi_tinh), nên sẽ thêm vào để làm bài tập này.

Ghi lại đoạn mã để tham khảo.

[connection.php]

Giống các bài tập trước.

[default.css]

body {  text-align: center;}
h1 { text-align: center; color: #F00;}
#main { width: 750px; border: #f00 solid 1px; background: #fff; display: inline-lock; margin: 0 auto;}
.le { background: #ccc; }
.tieude { background: #FFA31B; font-weight: bold; }
tr:hover { background: #3879D9; }

[danh_sach_khach_hang.php]

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Danh sách món ăn</title>
            <link rel="stylesheet" href="default.css">
</head>
<?php
            include("connection.php");
            $sql = "SELECT * FROM khach_hang";
            $stmt = $pdo->prepare($sql);
            $stmt -> execute();
            if($stmt -> rowcount() > 0) {
                        $khach_hang = $stmt -> fetchAll(PDO::FETCH_ASSOC);
            }
?>
<body>
<div id="main">
<table width="700" border="0" cellspacing="5" align="center" style="border-collapse: collapse">
<caption>
            <h1>THÔNG TIN KHÁCH HÀNG</h1>
</caption>
<tr  class="tieude" height = "40px">
            <td>Mã khách</td>
            <td>Họ tên</td>
            <td>Phái</td>
            <td>Địa chỉ</td>
            <td>Điện thoại</td>
            <td>Email</td>
</tr>
<?php
            for($i = 0; $i < count($khach_hang); $i++)
            {
                        $hinh = $khach_hang[$i][gioi_tinh] == 1 ? "nam.png" : "nu.png";
                        $le = $i%2 != 1 ? "le" : "";
?>
            <tr class=<?php echo $le; ?> >
                        <td><?php echo $khach_hang[$i][ma_khach_hang]; ?></td>
                        <td><?php echo $khach_hang[$i][ten_khach_hang]; ?></td>
                        <td><img src="images/<?php echo $hinh; ?> " width="45" height="45"></td>
                        <td><?php echo $khach_hang[$i][dia_chi]; ?></td>
                        <td><?php echo $khach_hang[$i][dien_thoai]; ?></td>
                        <td><?php echo $khach_hang[$i][email]; ?></td>
            </tr>
<?php
}
?>
</table>
<?php
            $pdo->NULL;
?>
</body>

</html>
-----------
Cập nhật 3/3/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web

Ngu ngơ học làm web (92) - PDO – thêm thực đơn

Tiếp theo của: Ngu ngơ học làm web (91) - PDO - hiển thị dạng lưới
-----

Phần 92. PDO – thêm thực đơn


Để ý là mấy phần thực hành này đặt tên biến, tên tập tin, tên hàm, có vẻ lung tung quá. Tạm thời bỏ qua cái này để làm thực hành cho dễ, rồi sẽ chuẩn hóa lại khi làm việc chính thức. Vì thực tế không phải chỉ có một cách quy ước đặt tên.

Xem và làm theo clip số 18 của thầy Nguyễn Anh Tuấn:

Lưu lại các đoạn mã để tham khảo.

[thuvien.js]

function kiem_tra_thuc_don() {
            var ten_thuc_don = document.getElementById('th_ten_thuc_don');
            if(ten_thuc_don.value == ""){
                        alert('Nhập tên thực đơn');
                        ten_thuc_don.focus();
                        return false;
            }
            return true;
}

[default.css]

body { background: #ccc; }
h1 { text-align: center; color: #F00;  }
#main { width: 700px; margin: 0 auto; border: #f00 solid 1px; background: #fff; }
.khung { width: 680px; height: 200px; border-bottom: #999 solid 1px;  padding: 10px; }
.khung img { width: 250px; float: left; margin-right: 10px; }
[connection.php]
<?php
try
{
            //Khai báo đối tượng PDO
            $pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");
            //Xuất tiếng Việt
            $pdo->query("SET NAMES UTF8");
}
catch (PDOException $ex)
{
            die($ex->getMessage());
}
?>

[them_thuc_don.php]

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Thêm thực đơn</title>
            <link rel="stylesheet" href="default.css">
            <script src="thuvien.js"></script>
</head>
<?php
            include("connection.php");
            $err = '';
            if(isset($_POST['th_luu'])){
                        //Lấy thông tin từ form gán vào các biến
                        $ma_thuc_don = NULL;
                        $ten_thuc_don = $_POST['th_ten_thuc_don'];
                        $don_gia = $_POST['th_don_gia'];
                        $don_gia_khuyen_mai = $_POST['th_don_gia_khuyen_mai'];
                        $noi_dung = $_POST['th_noi_dung'];
                        $hinh = $_FILES['th_hinh']['error'] == 0 ? $_FILES['th_hinh']['name'] : '';
                        //Tạo lệnh thêm dữ liệu vào CSDL
                        $sql = 'INSERT INTO thuc_don VALUES(?,?,?,?,?,?)';
                        //Khai báo mảng tham số
                        $param = array($ma_thuc_don,$ten_thuc_don,$don_gia,$don_gia_khuyen_mai,$noi_dung,$hinh);
                        $stmt = $pdo -> prepare($sql);
                        $kq = $stmt -> execute($param);
                        if($kq){
                                    $err = 'Thêm dữ liệu thành công!';
                                    //Di chuyển hình về thư mục chứa hình
                                    if($hinh !=''){
                                                $kt = move_uploaded_file($_FILES['th_hinh']['tmp_name'], "images/$hinh");
                                                if($kt){
                                                            $err .= 'upload hình thành công';
                                                }else{
                                                            $err .= 'upload hình không thành công';
                                                }
                                    }
                        }else{
                                    $err = 'Quá trình thêm dữ liệu không thành công!';
                        }
            }
?>
<body>
<h3 style="color:red"><?php echo $err; ?></h3>
<div id="main">
            <h1>Thực đơn mới</h1>
            <form action="them_thuc_don.php" name="ManHinhThemThucDon" method="POST" enctype="multipart/form-data">
            <table cellpadding="2px">
                        <tr>
                                    <td width="150px" bgcolor="B0D1EA">Tên thực đơn</td>
                                    <td colspan="3"><input type="text" name="th_ten_thuc_don" id="th_ten_thuc_don" style="width:300px" value=""></td>
                        </tr>
                        <tr>
                                    <td bgcolor="B0D1EA">Đơn giá</td>
                                    <td><input type="text" name="th_don_gia" id="th_don_gia" style="width:100px" value=""></td>
                                    <td bgcolor="B0D1EA">Đơn giá khuyến mãi</td>
                                    <td><input type="text" name="th_don_gia_khuyen_mai" id="th_don_gia_khuyen_mai" value=""></td>
                        </tr>
            <tr>
                                    <td bgcolor="B0D1EA">Nội dung</td>
                                    <td colspan="3"> <textarea name="th_noi_dung" id="th_noi_dung" cols="40" rows="5"></textarea> </td>
                        </tr>
                        <tr>
                                    <td bgcolor="B0D1EA">Hình</td>
                                    <td colspan="3"><input type="file" name="th_hinh" id="th_hinh" value=""></td>
                        </tr>
                        <tr>
                                    <td colspan="4" align="center"><input type="submit" value="Lưu" name="th_luu" onclick="return kiem_tra_thuc_don()"></td>
                        </tr>
            </table>
            </form>
</div>
<?php
            $pdo->NULL;
?>
</body>

</html>
-----------
Cập nhật 1/3/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web