Jumat, 16 Oktober 2009

PHP & MYSQL

This handout is based on the book “How to do Everything with PHP & MySQL” by Vikram Wasvani, from McGraw Hill/Osbourne publications and the online PHP&MySQL tutorial by Kevin Yank which is available at:
http://dev.mysql.com/tech-resources/articles/ddws/.
You can buy the book from Amazon or Barnes & Noble.

In the previous labs, we have seen how PHP and MySQL work separately. Now, it is time to use them together to build database driven web applications. In this lab, we will learn how PHP can be used to access MySQL server and perform queries.

First, we need to connect to the MySQL server and select a database. We use the mysql_connect() function for this purpose (If you use @mysql_connect() instead, PHP will not display error messages produced by the MySQL server). To select the database we want to work with, we use the function mysql_select_db():


$db_host = "localhost";
$db_username = "ie215";
$db_passwd = "password";
$db= @mysql_connect($db_host, $db_username, $db_passwd) or die ("Could not connect!\n");


echo "Connection established.\n";
$db_name = "ie215";


@mysql_select_db("$db_name") or die ("Could not select the database $dbname!\n");

echo "Database $db_name is selected.\n";


Save this file as connect.php and view the web page at: https://inst.decf.berkeley.edu/~ie215/connect.php

If the connection is established and the database is selected successfully you will see the message below in your web browser:

Connection established. Database ie215 is selected.

If one of the functions fails to execute PHP returns an error message, in this case “Could not connect!” or “Could not select the database ie215!”, and stops executing the rest of the code.

Note that you should use your own username instead of ie215. For instance, if your DECF username is ie215-23, then your MySQL username is ie215_23 (with an underscore not a hyphen) and the name of your database is ie215_23. Your DECF account password and MySQL password work independently, so even if you have changed your DECF password, your MySQL password stays the same.

So far, we established a connection with the MySQL server and chose a database to work with. Next, we can execute SQL commands to create tables, insert records and run queries. We use the mysql_query() function for this purpose. Let’s start with creating tables:

$sql = "CREATE TABLE Jokes ( " .
"ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " .
"JokeText TEXT, " .
"JokeDate DATE NOT NULL " .
")";
if ( mysql_query($sql) ) {
echo("

Jokes table successfully created!

");
} else {
echo("

Error creating Jokes table: " .
mysql_error() . "

");

First, we store the CREATE TABLE command in the variable $sql and then execute it using the mysql_query() function. This function also returns a Boolean result which can be used inside a conditional statement to display appropriate messages.

Before executing the code above, don’t forget that PHP needs to connect to the MySQL server and select a database. You should see the following message on your screen after executing the code above:

Connection established. Database ie215 selected.
Jokes table successfully created!

The use of DELETE, INSERT and UPDATE commands are similar:

$sql = "UPDATE Jokes SET JokeDate='1990-04-01' " .
"WHERE JokeText LIKE '%chicken%'";
if ( mysql_query($sql) ) {
echo("

Update affected " .
mysql_affected_rows() . " rows.

");
} else {
echo("

Error performing update: " .
mysql_error() . "

");
}

For DELETE, INSERT and UPDATE commands, MySQL also keeps track of the number of rows that are affected by the operation. The function mysql_affected_rows() is used to retrieve the number of rows affected.

The SELECT queries differ from the operations above since the SELECT queries usually return more complex results. As in most of the functions in PHP, if the processing of a SELECT query fails for some reason, the function mysql_query returns a ‘false’ value. This output can be used to display error messages:

$result = mysql_query("SELECT JokeText FROM Jokes");
if (!$result) {
echo("

Error performing query: " .
mysql_error() . "

");
exit();
}

If the query fails, $result will be equal to ‘false’, thus !$result will be true and the error message will be displayed. Notice that we used the function mysql_error() to retrieve the error message given by the MySQL server.

If the query is executed successfully, we can use the mysql_fetch_array() function to handle the result.

while ( $row = mysql_fetch_array($result) ) {
// process the row...
…………………………………………………………
…………………………………………………………
}

The function mysql_fetch_array() returns the rows in the result one at a time until the last row. Then it returns a ‘false’ value, so that the ‘while’ loop is terminated. Using this loop we can print the rows in the result inside a table:

Echo ‘’;
Echo ‘’;

while ( $row = mysql_fetch_array($result) ) {
echo ‘’;
echo ‘’;
}
Echo ‘
IDJoke TextDate
’ .$row[0]. ‘’;
echo ‘
’ .$row[1]. ‘’;
echo ‘
’ .$row[2]. ‘’;
echo ‘
’;

Here, $row[i] stands for the i-th column in the result.

We can also let the visitors insert records into the tables in the database. We can use the following form to get visitor input:


Type your joke here:






This form stores the visitor input in the variable $joketext and sends it to insert.php which looks like:


$db_host = "localhost";
$db_username = "ie215";
$db_passwd = "password";
$db= @mysql_connect($db_host, $db_username, $db_passwd) or die ("Could not connect!\n");


echo "Connection established.\n";
$db_name = "ie215";


@mysql_select_db("$db_name") or die ("Could not select the database.\n $dbname");

echo "Database $db_name selected.\n";


$sql = "INSERT INTO Jokes SET " .
"JokeText='$joketext', " .
"JokeDate=CURDATE()";
if (mysql_query($sql)) {
echo("

Your joke has been added.

");
} else {
echo("

Error adding submitted joke: " .
mysql_error() . "

"); }

?>

The html file containing the form will display the following web page:


Once the visitor submits a joke, it will be stored in the variable $joketext and insert.php will add this record to the table JOKES and display:

Connection established. Database ie215 selected.
Your joke has been added.



Useful Links:

• PHP’s MySQL support:
http://www.php.net/manual/en/ref.mysql.php
• More examples:
http://www.melonfire.com/community/columns/trog/article.php?id=18
• Kevin Yank’s online PHP & MySQL tutorial:
http://dev.mysql.com/tech-resources/articles/ddws

No Quiz!
• PHP and MySQL Project Demo: Select one or two of the relations from your Project and design a web-based interactive query using it. In MySQL, design the table(s) and insert 10 tuples of sample data. Design a web page with embedded PHP that will allow online visitors to enter data and execute a query on this data. For example, consider a 'Product' table with prices. Your page might allow a visitor to enter a maximum limit price in a form, and your solution would return all products with price under than that maximum. Write a short summary of your design, including the MySQL table description and the embedded PHP sections, and include the URL of the web page. Submit this in hardcopy on the due date.

Minggu, 07 September 2008

Slide Video

Rabu, 27 Agustus 2008

Pengertian Subnetting
Jumlah IP Address sangat terbatas, apalagi jika harus memberikan alamat semua host di Internet. Oleh karena itu, perlu dilakukan efisiensi dalam penggunaan IP Address supaya dapat mengalamati semaksimal mungkin host yang ada dalam satu jaringan. Konsep subnetting dari IP Address merupakan teknik yang umum digunakan di Internet untuk mengefisienkan alokasi IP Address dalam sebuah jaringan supaya bisa memaksimalkan penggunaan IP Address. Routing & konsekuensi logis lainnya akan terjadi dengan lebih effisien dengan metoda subnetting yang baik.

Tujuan Subnetting
• Untuk beberapa alasan yang menyangkut efisiensi IP Address, mengatasi masalah topologi network dan organisasi, network administrator biasanya melakukan subnetting.
• Esensi dari subnetting adalah “memindahkan” garis pemisah antara bagian network dan bagian host dari suatu IP Address. Beberapa bit dari bagian host dialokasikan menjadi bit tambahan pada bagian network. Address satu network menurut struktur baku dipecah menjadi beberapa subnetwork. Cara ini menciptakan sejumlah network tambahan dengan mengurangi jumlah maksimum host yang ada dalam tiap network tersebut.

Subnetting Fisik
Untuk menghindari terjadinya kongesti akibat terlalu banyak host dalam suatu physical network, dilakukan segmentasi jaringan

Subnet Mask
Subnet Mask ialah angka biner 32 bit yang digunakan untuk
a. Membedakan network ID dan Host Id
b. Menentukan letak suatu host, apakah berada di dalam atau di luar jaringan

Pada subnet mask, seluruh bit yang berhubungan dengan network ID diset 1.
Sedang bit yang berhubungan dengan host ID diset 0.IP Address kelas A misalnya secara default subnetmask 255.0.0.0 yang menunjukkan batas antara Network ID dan Host ID IP Address kelas A


SUBNETTING PADA IP ADDRESS CLASS C
Ok, sekarang mari langsung latihan saja. Subnetting seperti apa yang terjadi dengan sebuah NETWORK ADDRESS 192.168.1.0/26 ?
Analisa: 192.168.1.0 berarti kelas C dengan Subnet Mask /26 berarti 11111111.11111111.11111111.11000000 (255.255.255.192).
Penghitungan: Seperti sudah saya sebutkan sebelumnya semua pertanyaan tentang subnetting akan berpusat di 4 hal, jumlah subnet, jumlah host per subnet, blok subnet, alamat host dan broadcast yang valid. Jadi kita selesaikan dengan urutan seperti itu:
1.Jumlah Subnet = 2x-2, dimana x adalah banyaknya binari 1 pada oktet terakhir
subnet mask (2 oktet terakhir untuk kelas B, dan 3 oktet terakhir untuk kelas A).
Jadi Jumlah Subnet adalah 22-2 = 4-2 = 2 subnet
2.Jumlah Host per Subnet = 2y - 2, dimana y adalah adalah kebalikan dari x yaitu
banyaknya binari 0 pada oktet terakhir subnet. Jadi jumlah host per subnet adalah
26 - 2 = 62 host
3.Blok Subnet = 256 - 192 (nilai oktet terakhir subnet mask) = 64. Subnet berikutnya
adalah 64 + 64 = 128. Jadi subnet lengkapnya adalah 64, 128.
4.Bagaimana dengan alamat host dan broadcast yang valid? Kita langsung buat
tabelnya. Sebagai catatan, host pertama adalah 1 angka setelah subnet, dan
broadcast adalah 1 angka sebelum subnet berikutnya.

Subnet 192.168.1.64 192.168.1.128
Host Pertama 192.168.1.65 192.168.1.129
Host Terakhir 192.168.1.126 192.168.1.190
Broadcast 192.168.1.127 192.168.1.191

SUBNETTING PADA IP ADDRESS CLASS B
Subnetting untuk IP address class B. Pertama, subnet mask yang bisa digunakan untuk subnetting class B adalah seperti dibawah. Sengaja saya pisahkan jadi dua, blok sebelah kiri dan kanan karena masing-masing berbeda teknik terutama untuk oktet yang “dimainkan” berdasarkan blok subnetnya. CIDR /17 sampai /24 caranya sama persis dengan subnetting Class C, hanya blok subnetnya kita masukkan langsung ke oktet ketiga, bukan seperti Class C yang “dimainkan” di oktet keempat. Sedangkan CIDR /25 sampai /30 (kelipatan) blok subnet kita “mainkan” di oktet keempat, tapi setelah selesai oktet ketiga berjalan maju (coeunter) dari 0, 1, 2, 3, dst.

Subnet Mask Nilai CIDR
255.255.128.0 /17
255.255.192.0 /18
255.255.224.0 /19
255.255.240.0 /20
255.255.248.0 /21
255.255.252.0 /22
255.255.254.0 /23
255.255.255.0 /24

Subnet Mask Nilai CIDR
255.255.255.128 /25
255.255.255.192 /26
255.255.255.224 /27
255.255.255.240 /28
255.255.255.248 /29
255.255.255.252 /30
Ok, kita coba dua soal untuk kedua teknik subnetting untuk Class B. Kita mulai dari yang menggunakan subnetmask dengan CIDR /17 sampai /24. Contoh network address 172.16.0.0/18.
Analisa: 172.16.0.0 berarti kelas B, dengan Subnet Mask /18 berarti 11111111.11111111.11000000.00000000 (255.255.192.0).
Penghitungan:
1. Jumlah Subnet = 2x-2, dimana x adalah banyaknya binari 1 pada 2 oktet terakhir.
Jadi Jumlah Subnet adalah 22-2 = 4-2= 2 subnet
2. Jumlah Host per Subnet = 2y - 2, dimana y adalah adalah kebalikan dari x yaitu
banyaknya binari 0 pada 2 oktet terakhir. Jadi jumlah host per subnet adalah 214 - 2 = 16.382 host
3. Blok Subnet = 256 - 192 = 64. Subnet berikutnya adalah 64 + 64 = 128, dan 128+64=
192. Jadi subnet lengkapnya adalah 64, 128.
4. Alamat host dan broadcast yang valid?

Subnet 172.16.64.0 172.16.128.0
Host Pertama 172.16.64.1 172.16.128.1
Host Terakhir 172.16.127.254 172.16.191.254
Broadcast 172.16.127.255 172.16.191.255

Berikutnya kita coba satu lagi untuk Class B khususnya untuk yang menggunakan subnetmask CIDR /25 sampai /30. Contoh network address 172.16.0.0/25.
Analisa: 172.16.0.0 berarti kelas B, dengan Subnet Mask /25 berarti 11111111.11111111.11111111.10000000 (255.255.255.128).
Penghitungan:
1. Jumlah Subnet = 29-2 = 512 –2 = 510subnet
2. Jumlah Host per Subnet = 27 - 2 = 126 host
3. Blok Subnet = 256 - 128 = 128. Jadi lengkapnya adalah (0, 128)
4. Alamat host dan broadcast yang valid?

Subnet 172.16.0.128 172.16.1.0 …
Host Pertama 172.16.0.129 172.16.1.1 …
Host Terakhir 172.16.0.254 172.16.1.126 …
Broadcast 172.16.0.255 172.16.1.127 …

SUBNETTING PADA IP ADDRESS CLASS A
Kalau sudah mantab dan paham, kita lanjut ke Class A. Konsepnya semua sama saja. Perbedaannya adalah di OKTET mana kita mainkan blok subnet. Kalau Class C di oktet ke 4 (terakhir), kelas B di Oktet 3 dan 4 (2 oktet terakhir), kalau Class A di oktet 2, 3 dan 4 (3 oktet terakhir). Kemudian subnet mask yang bisa digunakan untuk subnetting class A adalah semua subnet mask dari CIDR /8 sampai /30.
Kita coba latihan untuk network address 10.0.0.0/16.
Analisa: 10.0.0.0 berarti kelas A, dengan Subnet Mask /16 berarti 11111111.11111111.00000000.00000000 (255.255.0.0).

Penghitungan:
1. Jumlah Subnet = 28-2 = 256 – 2 = 254 subnet
2. Jumlah Host per Subnet = 216 - 2 = 65534 host
3. Blok Subnet = 256 - 255 = 1. Jadi subnet lengkapnya: 0,1,2,3,4, etc.
4. Alamat host dan broadcast yang valid?

Subnet 10.1.0.0 … 10.254.0.0
Host Pertama 10.1.0.1 … 10.254.0.1
Host Terakhir 10.1.255.254 … 10.254.255.254
Broadcast 10.1.255.255 … 10.254.255.255

(Diambil dari beberapa sumber: Subnetting Siapa Takut By Romi Satria Wahono)
Mengenal Konsep Bilangan Biner dan Desimal
Perbedaan mendasar dari metoda biner dan desimal adalah berkenaan dengan basis. Jika desimal berbasis 10 (X10) berpangkatkan 10x, maka untuk bilangan biner berbasiskan 2 (X2) menggunakan perpangkatan 2x. Sederhananya perhatikan contoh di bawah ini!
Untuk Desimal:
14(10) = (1 x 101) + (4 x 100)
= 10 + 4
= 14
Untuk Biner:
1110(2) = (1 x 23) + (1 x 22) + (1 x 21) + (0 x 20)
= 8 + 4 + 2 + 0
= 14

Bentuk umum dari bilangan biner dan bilangan desimal adalah :
* Biner 1 1 1 1 1 1 1 1 11111111
* Desimal 128 64 32 16 8 4 2 1 255


Sekarang kita balik lagi ke contoh soal di atas! Darimana kita dapatkan angka desimal 14(10) menjadi angka biner 1110(2)? Mari kita lihat lagi pada bentuk umumnya!

* Biner 0 0 0 0 1 1 1 0 00001110
* Desimal 0 0 0 0 8 4 2 0 14

Mari kita telusuri perlahan-lahan!
• Pertama sekali, kita jumlahkan angka pada desimal sehingga menjadi 14. anda lihat angka-angka yang menghasilkan angka 14 adalah 8, 4, dan 2!
• Untuk angka-angka yang membentuk angka 14 (lihat angka yang diarsir), diberi sign biner “1”, sebaliknya diberi sign “0”.
• Sehingga kalau dibaca dari kanan, angka desimal 14 akan menjadi 00001110 (terkadang dibaca 1110) pada angka biner nya.


Mengubah Angka Biner ke Desimal
Saya akan berikan 4 soal, silahkan dipelajari sehingga anda benar-benar familiar dengan bentuk dan otomatis mampu untuk mempelajari tahapan berikutnya. Perhatikan contoh!

1. 11001101(2)

* Biner 1 1 0 0 1 1 0 1 11001101
* Desimal 128 64 0 0 8 4 0 1 205


Note:
• Angka desimal 205 didapat dari penjumlahan angka yang di arsir (128+64+8+4+1)
• Setiap biner yang bertanda “1” akan dihitung, sementara biner yang bertanda “0” tidak dihitung, alias “0” juga.


2. 00111100(2)

* Biner 0 0 1 1 1 1 0 0 00111100
* Desimal 0 0 32 16 8 4 0 0 60

3. 11111111(2)

* Biner 1 1 1 1 1 1 1 1 11111111
* Desimal 128 64 32 16 8 4 2 1 255

4. 11000000(2)

* Biner 1 1 0 0 0 0 0 0 11000000
* Desimal 128 64 0 0 0 0 0 0 192


Mengubah Angka Desimal ke Biner
Untuk mengubah angka desimal menjadi angka biner digunakan metode pembagian dengan angka 2 sambil memperhatikan sisanya. Mari kita perhatikan contohnya!
1. 205(10)
205 : 2 = 102 sisa 1
102 : 2 = 51 sisa 0
51 : 2 = 25 sisa 1
25 : 2 = 12 sisa 1
12 : 2 = 6 sisa 0
6 : 2 = 3 sisa 0
3 : 2 = 1 sisa 1
1 sebagai sisa akhir “1”

Selasa, 19 Agustus 2008

PATCHING CABLE

10 Langkah mudah untuk membuat patch cables
Jika kita hendak membuat hubungan spesifik pada jaringan, diperlukan jenis konfigurasi kabel yang tepat.
1. Pertama, ingatlah tabel di bawah ini untuk Skema Warna pengkabelan EIA/TIA 568-B
Skema pengkabelan EIA/TIA-568-B RJ-45
No. Kabel
A. Warna Kabel
a. White/Orange
b. Orange
c. White/Green
d. Blue
e. White/Blue
f. Green
g. White/Brown
h. Brown
2. Sekarang, tarik beberapa meter panjang kabel sesuai kebutuhan dan potonglah pada
ujungnya.
3. Pegang ujung-ujung kabel, kupas kedua ujung kabel (pastikan panjang kupasan jangan lebih
dari 2-3 cm).
4. Kemudian, pisahkan pilinan pair kabel menjadi sendiri-sendiri (sehingga seolah membentuk
kipas).
5. Urutkan warna kabel sesuai dengan jenis sambungan yang akan kita gunakan, sesuai skema warna kabel sebagai berikut :
Straight-Through Cables:
Untuk hubungan dari satu peralatan ke peralatan lain.
Cross Connect Cables:
Untuk menghubungkan dua hubs/switch
Roll Over Cables:
Untuk menghubungkan dari komputer ke router, kabel konsol.
6. Aturlah tiap-tiap utas kabel sesuai dengan urutan warna jenis kabel koneksi yang akan
digunakan dengan benar. Tentukan urutan kabel ujung A atau B. Urutkan dari kiri ke kanan
dengan ujung kabel diatas serapat mungkin.
7. Setelah salah satu ujung kabel UTP diatur sesuai skema jenis kabel yang akan digunakan.
Ratakan ujung-ujung kabel menggunakan tang potong atau knip yang ada pada tang
krimping. Jarak antara ujung kabel dengan jaket pelindung UTP ditentukan sekitar 10 – 13
mm. Pegang Jack konektor RJ-45 seperti gambar dibawah, masukkan ujung kabel ke
konektor RJ-45 sampai ujung-ujungnya rata dalam konektor RJ-45.
8. Berikutnya, kita lakukan krimping pada jack konektor RJ-45 menggunakan tang krimping.
Lakukan krimping sampai pin-pin tembaga konektor menancap kuat pada ujung-ujung kabel
tembaga yang terpasang. Kondisi akhir yang benar adalah jika jaket pelindung UTP ikut
terjepit pada plastik konektor RJ-45. Sehingga jika kabel ditarik tidak mudah terlepas dari
konektornya.
9. Ulangi langkah 1 sampai 8 untuk ujung kabel UTP yang lain.
10. Untuk memastikan bahwa kabel koneksi yang kita buat sudah benar dan berfungsi dengan
baik tes dengan menggunakan pengetes kabel (LAN cable tester

TUGASPRAKTIKUM

TUGAS :PEMBUATAN PATCHING CABLE STRAIGHT

1. Praktikum pengkabelan straight
2. Susun laporan praktikum dengan susunan sebagai berikut:
a. Cover (Judul, Anggota Kelompok, Kelas)
b. Tujuan Praktikum
c. Latar belakang masalah
d. Teori-Teori yang mendukung
e. Langkah-langkah pembuatan kabel straight yang telah dilakukan
3. Prosedur penilaian dilakukan dengan cara:
a. Hasil pembuatan kabel straight 70%
b. Laporan 30%