Học làm web (x4) - PHP: crash course 4

Bài trước: Học làm web (x3) - PHP: crash course 3
-----

Repeating actions through iteration (p46)


while loops (p47)

The basic structure of a while loop is:

while (condition) expression;

Example, the following while loop will display the numbers from 1 to 5:

$num = 1;
while($num  <= 5) {
            echo $num. "<br>";
            $num++;
}

At the beginning of each iteration, the condition is tested. If the condition is false, the block will not be executed and the loop will end. The next statement after the loop will then be executed.

Lab 6. Iteration

Make the freight (transport goods) table to resemble (show) in following picture:



The HTML of freight table (freight.html):

<!DOCTYPE html>
<html>

<head>
    <title>Bob's Auto Parts - Freight Costs</title>
</head>

<body>
    <table style="border: 0px; padding: 3px">
        <tr>
            <td style="background: #cccccc; text-align: center;">Distance</td>
            <td style="background: #cccccc; text-align: center;">Cost</td>
        </tr>
        <tr>
            <td style="text-align: right;">50</td>
            <td style="text-align: right;">5</td>
        </tr>
        <tr>
            <td style="text-align: right;">100</td>
            <td style="text-align: right;">10</td>
        </tr>
        <tr>
            <td style="text-align: right;">150</td>
            <td style="text-align: right;">15</td>
        </tr>
        <tr>
            <td style="text-align: right;">200</td>
            <td style="text-align: right;">20</td>
        </tr>
        <tr>
            <td style="text-align: right;">250</td>
            <td style="text-align: right;">25</td>
        </tr>
    </table>
</body>
</html>

Now, we use a while loop to generate the freight table.

[freight.php]

<!DOCTYPE html>
<html>

<head>
    <title>Bob's Auto Parts - Freight Costs</title>
</head>

<body>
    <table style="border: 0px; padding: 3px">
        <tr>
            <td style="background: #cccccc; text-align: center;">Distance</td>
            <td style="background: #cccccc; text-align: center;">Cost</td>
        </tr>
        <?php
             $distance = 50;
            while($distance <= 250){
                echo '<tr>';
                echo '<td style="text-align: right">'.$distance.'</td>';
                echo '<td style="text-align: right">'.($distance/10).'</td>';
                echo "</tr>\n";
                $distance +=50;
            }
        ?>
    </table>
</body>

</html>

To make the HTML generated by the script readable, you need to include newlines and spaces. As already mentioned, browsers ignore the whitespace, but it is important for human readers. You often need to look at the HTML if your output is not what you were seeking. \n inside some of the strings to make a new line.

Saving the freight.php, refesh browser to see the result.

for and foreach loop (p49)

The basic structure of a for loop is:

for( expressions1; condition; expression2)
expression3

expression1 is executed once at th start. Here, you usually set the initial value of a counter.

– the condition expression is tested before each iteration. If the expression returns false, iteration stops. Here, you usually test the counter against a limit.

expression2 is executed at the end of each iteration. Here, you usually adjust the value of the counter

expression3 is executed once per iteration. This expression is usually a block of code and contains the bulk of the loop code.

You can rewrite the while loop in Lab 6 as a for loop. In this case, the PHP code becomes

<?php
            for($distance = 50; $distance <= 250; $distance += 50){
                echo '<tr>';
                echo '<td style="text-align: right">'.$distance.'</td>';
                echo '<td style="text-align: right">'.($distance/10).'</td>';
                echo "</tr>\n";
            }
        ?>

You can combine variable variables with a for loop to iterate through a series of repetitive form fields. If, for example, you have form fields with names such as name1, name2, name3, and so on, you can process them like this:

for ($i = 1; $i <= $numnames; $i++){
            $temp = “name$i”;
            echo htmlspecialchars($$temp).’<br>’;
}

do…while Loops (p50)

do
            expression;
while( condition );

The statement or block within the loop is always executed at least once. Even if you consider this example in which the condition will be false at the start and can never become true, the loop will be executed once before checking the condition and ending:

$num = 100;
do{
            echo $num.“<br>”;
}while ($num < 1);

Breaking out of a control structure or script (p50)


If you want to stop executing a piece of code, you can choose from three approaches, depending on the effect you are trying to achieve.

break statement: to stop executing a loop, execution of the script will continue at the next line of the script after the loop

continue statement: to jump to the next loop iteration

exit statement: to finish executing the entire PHP script, it is useful when you are performing error checking. Example:

if ($totalqty == 0){
            echo “You dit not order anything on the previous page! <br>”;
            exit;
}

Employing alternative control structure syntax (p51)


You can use a colon (:) replace the opening brace ({), and use endif, endswitch, endfor, endwhile or endforeach replace the close brace (}) depending on which control structure is being used. No alternative systax is available for do…while loops.

For example, the code

if ($totalqty == 0) {
            echo “You did not order anything on the previous page!<br>”;
            exit;
}

could be converted to this code,

if ($totalqty == 0) :
            echo “You did not order anything on the previous page!<br>”;
            exit;
endif;

Using declare (p51)


Lab 7. Get your constellation with Vietnamese version.

User interface:



Requirements:

– User input the birthday (date and month)


– If the birthday is valid, then click on button “Lấy chòm sao” to show the result, include: image, constellation, and date of constellation. 

Put the lab on the your free hosting, test to make sure it run well

– Push the lab up the your remote repository (Github, or Gitlab)


List of constellations:

– ARIES – DƯƠNG CƯU birthday is 21/3 – 20/4

– TAURUS – KIM NGƯU birthday is 21/4 – 21/5

– GEMINI – SONG TỬ birthday is 22/5 – 21/6

– CANCER – CỰ GIẢI birthday is 22/6-23/7

– LEO – HẢI SƯ birthday is 24/7 – 23/8

– VIRGO – XỬ NỬ birthday is 24/8 – 23/9

– LIBRA – THIÊN XỨNG birthday is 24/9 – 23/10

– SCORPIO – HỔ CÁP birthday is 24/10 – 22/11

– SAGITTARIUS – NHÂN MÃ birthday is 23/11 – 21/12

– CAPRICORNUS – MA KẾT birthday is 22/12 – 20/1

– AQUARIUS – BẢO BÌNH birthday is 21/1 – 19/2


– PISCES – SONG NGƯ birthday is 20/2 – 20/3

Lab 8. Make program named “In tam giac” by using for, while, do while iteration.

Program’s snapshot:



Requirements:

– Program allows user choose one of iterations by using radio button, then input number of triangle’s line, default is 6.

– When user click on one of the rectangles (with shape of triangle), triangle will be drawed underneath respectively.

Lab 9. Make a simulation ATM.

Simulation ATM’s snapshot:



Requirements:

– First user input amount of money that they want to drawth, validating to make sure amount of money is over 1000 VND and multipling of 1000.


– When user click on “Rut tien” button, “Menh gia”, “So luong” and “Thanh tien” will be displayed then, with amount of bills is minimum. 
-----------
Cập nhật [23/4/2019]
-----------
Xem thêm: Tổng hợp các bài viết về  Học làm web
Xem thêm: Học làm web (x5) - PHP: crash course 5 (file)

Một góc nhìn từ “Khảo sát của Stack Overflow năm 2019”


(Tài liệu tham khảo cho các bạn sinh viên giúp định hướng việc học nghề CNTT năm 2019)


1         Về Stack Overflow


– Là một mạng xã hội lớn, uy tín của các lập trình viên trên thế giới

– Giúp các lập trình viên tìm kiếm giải pháp cho các vấn đề gặp phải trong công việc hàng ngày; là nơi mỗi cá nhân thể hiện trình độ của mình thông qua việc giúp đỡ các đồng nghiệp khác; tuyển người làm & tìm việc làm

– Jeff Atwood và Joel Spolsky (người Mỹ) sáng lập Stack Overflow năm 2008

– Hơn 50M lượt người truy cập mỗi tháng, trên 14M câu hỏi, trên 19M trả lời

­– Thực hiện các khảo sát hàng năm, năm nay là lần thứ 9, với hơn 90.000 lập trình viên đang làm việc tại nhiều quốc gia và vùng lãnh thổ tham gia khảo sát

­– Nội dung khảo sát liên quan đến ngành lập trình[1][2][3][4][5]


2         Nên chọn công việc nào để theo học


Bảng sau là một số công việc phổ biến của nghề lập trình, đồng thời cho biết tỉ lệ của mỗi công việc dựa trên số người được khảo sát. Tham khảo để chọn sẽ theo học cái gì? Thông thường, nên chọn công việc có nhiều người đang làm, tức thị trường đang cần nhiều. Hoặc có người đang làm nghĩa là có nhu cầu tuyển dụng, vì vậy học cái gì cũng được, nếu thực sự đam mê, miễn là phải học bài bản. Tuy nhiên, nếu chưa thử hết các công việc làm sao biết mình thích cái nào hơn cái nào? Vì vậy, các bạn cần có người tư vấn hoặc tự trải nghiệm.

Loại công việc
Tỉ lệ
Loại công việc
Tỉ lệ
Full-stack developer
51.9%
QA or test developer
7.8%
Back-end developer
50.0%
Data or business analyst
7.7%
Front-end developer
32.8%
Academic researcher

7.3%

Desktop or enterprise applications developer
21.3%
Engineer, data
7.2%
Mobile developer
18.1%
Educator
5.5%
Student
14.7%
Game or graphics
5.5%
Database administrator
11.7%
Engineering manager
5.2%
Designer
11.3%
Product manager
5.0%
System administrator
11.0%
Scientist
4.4%
DevOps specialist
10.9%
Site reliability
3.6%
Embedded applications or devices developer
8.9%
Senior executive/VP
2.6%
Data scientist or machine learning specialist
7.9%
Marketing or sales professional
1.2%


3         Mức lương của mỗi công việc


Ngoài yếu tố dễ xin việc, hợp với đam mê của bản thân, cũng nên quan tâm tới mức lương của mỗi công việc. Tất nhiên, lương cao thì đòi hỏi trình độ, kinh nghiệm, áp lực công việc cũng cao. (lưu ý, dưới đây là lương của các công ty toàn cầu, không phải tại Việt Nam)

Loại công việc
Mức lương
Loại công việc
Mức lương
Engineering manager
$95,000
Scientist
$55,000
Site reliability
$85,000
System administrator
$55,000
DevOps specialist
$71,000
Database administrator
$55,000
Engineer, data
$66,000
QA or test developer
$54,000
Data scientist or machine learning specialist
$61,000
Front-end developer
$52,000
Data or business analyst
$59,000
Designer
$51,000
Embedded applications or devices developer
$57,000
Educator
$50,000
Full-stack developer
$57,000
Game or graphics developer
$48,000
Desktop or enterprise applications developer
$56,000
Mobile developer
$45,000
Back-end developer
$56,000
Academic researcher
$38,000


4         Chọn công nghệ nào để theo


Với mỗi công việc có thể lựa chọn nhiều công nghệ khác nhau, bao gồm: ngôn ngữ lập trình, cơ sở dữ liệu, mã nguồn mở hay đóng, trình viết mã, framework, thư viện.


4.1       Ngôn ngữ


Bảng dưới đây là danh sách các ngôn ngữ phổ biến đang được mọi người sử dụng,

Ngôn ngữ
Tỉ lệ
Ngôn ngữ
Tỉ lệ
JavaScript
67.8%
Assembly
6.7%
HTML/CSS
63.5%
Swift
6.6%
SQL
54.4%
Kotlin
6.4%
Python
41.7%
R
5.8%
Java
41.1%
VBA
5.5%
Bash/Shell
40.4%
Objective-C
4.8%
C#
31.0%
Scala
3.8%
PHP
26.4%
Rust
3.2%
C++
23.5%
Dart
1.9%
TypeScript
21.2%
Elixir
1.4%
C
20.6%
Clojure
1.4%
Ruby
8.4%
WebAssembly
1.2%
Go
8.2%



4.2       Cơ sở dữ liệu


Bảng dưới đây là danh sách các cơ sở dữ liệu phổ biến đang được mọi người sử dụng,

Cơ sở dữ liệu
Tỉ lệ
Cơ sở dữ liệu
Tỉ lệ
MySQL
54.0%
Oracle
16.5%
PostgreSQL
34.3%
Elasticsearch
14.3%
SQL Server
32.8%
Firebase
12.8%
SQLite
31.6%
DynamoDB
6.2%
MongoDB
25.5%
Cassandra
3.5%
Redis
18.6%
Couchbase
2.0%
MariaDB
16.5%



4.3       Web framewok


Bảng dưới đây là danh sách các framework, CMS, thư viện, công cụ đang được mọi người sử dụng nhiều trong lĩnh vực làm web,

Framework/Library
Tỉ lệ
Framework/Library
Tỉ lệ
jQuery
48.7%
Vue.js
15.2%
React.js
31.3%
Django
13.0%
Angular/Angular.js
30.7%
Flask
12.1%
ASP.NET
26.3%
Laravel
10.5%
Express
19.7%
Ruby on Rails
8.2%
Spring
16.2%
Prupal
3.5%


4.4       Framework, thư viện, công cụ


Bảng dưới đây là danh sách các framework, thư viện, công cụ phổ biến đang được mọi người sử dụng,

Framework, thư viện, công cụ
Tỉ lệ
Framework, thư viện, công cụ
Tỉ lệ
Node.js (JS)
49.9%
Xamarin (mobile app)
6.5%
.NET
37.4%
Apache Spark
5.8%
.NET Core
23.7%
Hadoop (big data, distributed data)
4.9%
Pandas
12.7%
Unreal Engine
3.5%
Unity 3D
11.3%
Flutter
3.4%
React Native
10.5%
Torch/PyTorch (deep learning – python)
3.3%
TensorFlow (Machine Learning)
10.3%
Puppet
2.7%
Ansible
9.4%
Chef
2.5%
Cordova (JS mobile)
7.1%
CryEngine
0.6%


4.5       Trình viết mã


Bảng dưới đây là danh sách trình soạn thảo mã nguồn (IDE, code editor) đang được mọi người sử dụng,

IDE/code editor
Tỉ lệ
IDE/code editor
Tỉ lệ
Visual Studio Code
50.7%
Xcode
9.4%
Visual Studio
31.5%
PHPStorm
7.6%
Notepad++
30.5%
NetBeans
5.9%
IntelliJ
25.4%
Emacs
4.5%
Vim
25.4%
Rstudio
3.4%
Sublime Text
23.4%
RubyMine
1.4%
Android Studio
16.9%
TextMate
0.9%
Eclipse
14.4%
Coda
0.7%
PyCharm
13.4%
Komodo
0.4%
Atom
13.3%
Zend
0.4%
IPython / Jupyter
9.5%
Light Table
0.2%


4.6       Các nhóm công nghệ liên quan


Hình sau là các nhóm công nghệ liên quan,



5         Tài liệu tham khảo