SMART WEB
06
Fakultas Ilmu Teknik Informatika W151700016 Wawan Gunawan, S.Kom., M.T.
Komputer
Abstract Kompetensi
Ketepatan memahami konsep XML Ketepatan memahami konsep XML
dalam pemrograman web dalam pemrograman web
XML dengan PHP dan MySQL
Karena tutorial ini merupakan kelanjutan dari tutorial sebelumnya, maka database dan table yang
digunakan adalah sama.
Membuat database baru yaitu : db_belajar. Kemudian buat table tb_anggota dengan perintah SQL:
1. CREATE TABLE IF NOT EXISTS `tb_anggota` (
2. `anggota_id` int(5) NOT NULL AUTO_INCREMENT,
3. `nama` varchar(50) NOT NULL,
4. `email` varchar(50) NOT NULL,
5. `alamat` varchar(50) NOT NULL,
6. `umur` int(2) NOT NULL,
7. PRIMARY KEY (`anggota_id`)
8. ) ENGINE=INNODB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
1. INSERT INTO `tb_anggota` (`nama`, `email`, `alamat`, `umur`) VALUES
2. ('Wayan', 'wayan@email.com', 'Badung', 21),
3. ('Made', 'made@email.com', 'Gianyar', 19),
4. ('Nyoman', 'nyoman@email.com', 'Klungkung', 30),
5. ('Ketut', 'ketut@email.com', 'Tabanan', 23),
6. ('Gede', 'gede@email.com', 'Karangasem', 27);
Maka akan tampak table yang kita miliki menjadi seperti di bawah ini
Buat file create_xml.php untuk, men-generate dokumen xml dari record yang ada di table tb_anggota.
1. <?php
2. Header('Content-type: text/xml');
3.
4. //koneksi ke database
5. $connection = mysqli_connect("localhost", "root", "", "db_belajar") or die("Error "
. mysqli_error($connection));
6. $xml = new SimpleXMLElement('<xml/>');
7.
8. //menampilkan data dari database, table tb_anggota
Jalankan script di atas maka akan didapatkan hasil seperti gambar di bawah ini
Misalnya kita memiliki dokumen XML dengan nama dataanggota.xml, seperti di bawah ini
1. <?xml version="1.0"?>
2. <kepanitiaan>
3. <anggota>
4. <nama>Toni</nama>
5. <email>toni@email.com</email>
6. <alamat>Bandung</alamat>
7. <umur>35</umur>
8. </anggota>
9. <anggota>
10. <nama>Asep</nama>
11. <email>asep@email.com</email>
12. <alamat>Bandung</alamat>
13. <umur>18</umur>
14. </anggota>
15. <anggota>
16. <nama>Ucok</nama>
17. <email>ucok@email.com</email>
18. <alamat>Medan</alamat>
19. <umur>23</umur>
20. </anggota>
21. </kepanitiaan>
Buat file parsing_xml_mysql.php untuk memparsing data pada dokumen xml tersebut sekaligus
menyimpan datanya ke dalam database.
1. <?php
2.
3. //koneksi ke database
4. $connection = mysqli_connect("localhost", "root", "", "db_belajar") or die("Error "
. mysqli_error($connection));
5. // membuka file XML
6. $file = simplexml_load_file("dataanggota.xml");
7.
8. $i = 1;
9. echo 'Data Anggota baru :<br />';
10. foreach ($file as $key => $value) {
11. echo $i . "<br />";
12. echo "nama : " . $value->nama . "<br />";
13. echo "email : " . $value->email . "<br />";
14. echo "alamat : " . $value->alamat . "<br />";
15. echo "umur : " . $value->umur . "<br /><br />";
16. $sql = "INSERT into tb_anggota(nama,email,alamat,umur) VALUES('" . $value->nama
. "','" . $value->email . "','" . $value->alamat . "','" . $value->umur . "')";
17. mysqli_query($connection, $sql) or die("Error " . mysqli_error($connection));
18. $i++;
19. }
20. //tutup koneksi ke database
21. mysqli_close($connection);
22. ?>
Lalu tampilan pada web yang kita buat seperti pada gambar di bawah ini
Mengapa demikian? Karena kita hanya sebatas menampilkan data dari file dataanggota.xml
selanjutnya baru dilakukan proses penyimpanan pada database.
Anda bisa mencoba tag bersarang pada dokumen XML, karena tutorial ini masih sederhana
Awal terlebih dahulu adalah pengecekan apakah class SimpleXML telah tersedia di versi
PHP kita atau belum. Karena SimpleXML ini support pada PHP versi 5.
Sekarang coba kita ambil salah satu contoh file xml dari alamat
https://www.w3schools.com/xml/plant_catalog.xml dengan hasil seperti berikut
1. <CATALOG>
2. <PLANT>
3. <COMMON>Bloodroot</COMMON>
4. <BOTANICAL>Sanguinaria canadensis</BOTANICAL>
5. <ZONE>4</ZONE>
6. <LIGHT>Mostly Shady</LIGHT>
7. <PRICE>$2.44</PRICE>
8. <AVAILABILITY>031599</AVAILABILITY>
9. </PLANT>
10. <PLANT>
11. <COMMON>Columbine</COMMON>
12. <BOTANICAL>Aquilegia canadensis</BOTANICAL>
13. <ZONE>3</ZONE>
14. <LIGHT>Mostly Shady</LIGHT>
15. <PRICE>$9.37</PRICE>
16. <AVAILABILITY>030699</AVAILABILITY>
17. </PLANT>
18. <PLANT>
19. <COMMON>Marsh Marigold</COMMON>
20. <BOTANICAL>Caltha palustris</BOTANICAL>
21. <ZONE>4</ZONE>
22. <LIGHT>Mostly Sunny</LIGHT>
23. <PRICE>$6.81</PRICE>
24. <AVAILABILITY>051799</AVAILABILITY>
25. </PLANT>
26. <PLANT>
27. <COMMON>Cowslip</COMMON>
28. <BOTANICAL>Caltha palustris</BOTANICAL>
29. <ZONE>4</ZONE>
30. <LIGHT>Mostly Shady</LIGHT>
31. <PRICE>$9.90</PRICE>
32. <AVAILABILITY>030699</AVAILABILITY>
33. </PLANT>
34. <PLANT>
35. <COMMON>Dutchman's-Breeches</COMMON>
36. <BOTANICAL>Dicentra cucullaria</BOTANICAL>
37. <ZONE>3</ZONE>
38. <LIGHT>Mostly Shady</LIGHT>
39. <PRICE>$6.44</PRICE>
40. <AVAILABILITY>012099</AVAILABILITY>
41. </PLANT>
Selanjutunya kita buat satu file untuk mencoba mengambil data pada file plant_catalog.xml
dengan nama xml_php.php (satukan dalam folder file plant_catalog.xml). Pada xml_php.php
kita tulis code seperti dibawah ini :
1. <?php
2. # pengecekan apakah ada file *.xml itu ?
3. if(file_exists('plant_catalog.xml')){
https://simplehtmldom.sourceforge.io/
https://simplehtmldom.sourceforge.io/manual.htm
https://simplehtmldom.sourceforge.io/manual_api.htm
https://stackoverflow.com/questions/14456621/simple-html-dom-getting-all-attributes-from-a-
tag
https://www.codementor.io/@wang90925/top-10-best-usage-examples-of-php-simple-html-
dom-parser-i8ik76e16
https://stackoverflow.com/questions/7124823/file-get-html-displays-fatal-error-call-to-
undefined-function