การดึงข้อมูล จากฐานข้อมูล สร้าง xml ไฟล์ ด้วย php
เขียนเมื่อ 13 ปีก่อน โดย Ninenik Narkdeeฐานข้อมูล php xml ดึงข้อมูล
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ ฐานข้อมูล php xml ดึงข้อมูล
ดูแล้ว 33,770 ครั้ง
UPDATE! อัพเดทล่าสุด 20-11-2017
เนื้อหาเริ่มต้นของบทความนี้ เป็นเนื้อหาเก่า แต่มีการอัพเดทเนื้อหาเพิ่มเติม ต่อท้ายจากเนื้อหาเดิม
โปรดเลื่อนดูรายละเอียดการอัพเดทด้านล่างของบทความ
เนื้อหาเริ่มต้นของบทความนี้ เป็นเนื้อหาเก่า แต่มีการอัพเดทเนื้อหาเพิ่มเติม ต่อท้ายจากเนื้อหาเดิม
โปรดเลื่อนดูรายละเอียดการอัพเดทด้านล่างของบทความ
- ใช้งาน json ไฟล์ แทน xml ไฟล์
ไปที่ Copy
ตัวอย่างต่อไปนี้ เป็นแนวทางเบื้องต้น ในการดึงข้อมูลจากฐานข้อมูล เพื่อสร้างเป็น xml ไฟล์ไว้ใช้งาน โดยสามารถปรับเปลี่ยน โครงสร้างของ xml ได้ ตามต้องการ
ในตัวอย่างโค้ด จะเป็นการดึงข้อมูลชื่อจังหวัด พิกัด latitude และ longitude ของแต่ละจังหวัด ในประเทศไทย มาสร้างเป็น xml ของตัว marker ใน google ซึ่งจะได้นำไปใช้ ในการสร้างหมุด หรือตัว marker ระบุตำแหน่ง ใน google map ต่อไป
ตัวอย่าง xml ไฟล์ที่ได้ บางส่วน
https://www.ninenik.com/demo/google_map/simple_3.xml
ตัวอย่างโค้ด
<?php header("Content-type:text/xml; charset=UTF-8"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); mysql_connect("localhost","root","test") or die("Cannot connect the Server"); mysql_select_db("test") or die("Cannot select database"); mysql_query("set character set utf8"); echo '<?xml version="1.0" encoding="utf-8"?>'; ?> <markers> <?php $q="SELECT * FROM province_latlng WHERE 1 ORDER BY province_id LIMIT 30 "; $qr=mysql_query($q); while($rs=mysql_fetch_array($qr)){ ?> <marker id="<?=$rs['province_id']?>"> <name><?=$rs['province_name']?></name> <latitude><?=$rs['province_lat']?></latitude> <longitude><?=$rs['province_lon']?></longitude> </marker> <?php } ?> </markers>
หรือสามารถใช้เทคนิคของ คุณสมบัติ คำสั่ง mysql สร้าง xml ไฟล์ก็ได้
ตัวอย่างโค้ด
<?php header("Content-type:text/xml; charset=UTF-8"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); mysql_connect("localhost","root","test") or die("Cannot connect the Server"); mysql_select_db("thailocation") or die("Cannot select database"); mysql_query("set character set utf8"); mysql_query("SET SESSION group_concat_max_len = 8192;"); $q="SELECT CONCAT('<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n' ,'<markers>n', GROUP_CONCAT( '\t<marker id=\"',province_id, '\">\n' ,'\t\t<id>', `province_id`, '</id>\n' ,'\t\t<name>' ,`province_name` ,'</name>\n' ,'\t</marker>\n' SEPARATOR '') ,'</markers>') AS xmlDoc FROM province WHERE 1 "; echo mysql_result(mysql_query($q),0,0); ?>
เพิ่มเติมเนื้อหา ครั้งที่ 1 วันที่ 20-11-2017
เนื่องจากปัจจุบัน (20/11/2017 อัพเดทล่าสุด) นิยมใช้งาน json ไฟล์ แทน xml ไฟล์ จึงข้ออัพเดทข้อมูล
และนำเนื้อหาเป้น json ไฟล์แทน
ตัวอย่างตารางฐานข้อมูลประกอบการอธิบาย
-- -------------------------------------------------------- -- -- Table structure for table `tbl_provinces_map` -- CREATE TABLE `tbl_provinces_map` ( `province_id` int(11) NOT NULL, `province_name` varchar(255) NOT NULL, `province_lat` varchar(255) NOT NULL, `province_lon` varchar(255) NOT NULL, `province_zoom` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Dumping data for table `tbl_provinces_map` -- INSERT INTO `tbl_provinces_map` (`province_id`, `province_name`, `province_lat`, `province_lon`, `province_zoom`) VALUES (1, 'กรุงเทพมหานคร', '13.7278956', '100.52412349999997', 13), (2, 'กระบี่', '8.0862997', '98.90628349999997', 13), (3, 'กาญจนบุรี', '14.0227797', '99.53281149999998', 13), (4, 'กาฬสินธุ์', '16.4314078', '103.5058755', 13), (5, 'กำแพงเพชร', '16.4827798', '99.52266179999992', 13), (6, 'ขอนแก่น', '16.4419355', '102.8359921', 13), (7, 'จันทบุรี', '12.61134', '102.10385459999998', 13), (8, 'ฉะเชิงเทรา', '13.6904194', '101.07795959999999', 13), (9, 'ชลบุรี', '13.3611431', '100.98467170000004', 13), (10, 'ชัยนาท', '15.1851971', '100.12512500000003', 13), (11, 'ชัยภูมิ', '15.8068173', '102.03150270000003', 13), (12, 'ชุมพร', '10.4930496', '99.18001989999993', 13), (13, 'เชียงราย', '19.9071656', '99.83095500000002', 13), (14, 'เชียงใหม่', '18.7877477', '98.99313110000003', 13), (15, 'ตรัง', '7.5593851', '99.61100650000003', 13), (16, 'ตราด', '12.2427563', '102.51747339999997', 13), (17, 'ตาก', '16.8839901', '99.12584979999997', 13), (18, 'นครนายก', '14.2069466', '101.21305110000003', 13), (19, 'นครปฐม', '13.8199206', '100.06216760000007', 13), (20, 'นครพนม', '17.392039', '104.76955079999993', 13), (21, 'นคราชสีมา', '14.9798997', '102.09776929999998', 13), (22, 'นครศรีธรรมราช', '8.4303975', '99.96312190000003', 13), (23, 'นครสวรรค์', '15.6930072', '100.12255949999997', 13), (24, 'นนทบุรี', '13.8621125', '100.51435279999998', 13), (25, 'นราธิวาส', '6.4254607', '101.82531429999995', 13), (26, 'น่าน', '18.7756318', '100.77304170000002', 13), (27, 'บุรีรัมย์', '14.9930017', '103.10291910000001', 13), (28, 'ปทุมธานี', '14.0208391', '100.52502759999993', 13), (29, 'ประจวบคีรีขันธ์', '11.812367', '99.79732709999996', 13), (30, 'ปราจีนบุรี', '14.0509704', '101.37274389999993', 13), (31, 'ปัตตานี', '6.869484399999999', '101.25048259999994', 13), (32, 'พระนครศรีอยุธยา', '14.3532128', '100.56895989999998', 13), (33, 'พะเยา', '19.1664789', '99.9019419', 13), (34, 'พังงา', '8.4407456', '98.51930319999997', 13), (35, 'พัทลุง', '7.6166823', '100.07402309999998', 13), (36, 'พิจิตร', '16.4429516', '100.34823289999997', 13), (37, 'พิษณุโลก', '16.8298048', '100.26149150000003', 13), (38, 'เพชรบุรี', '13.1111601', '99.93913069999996', 13), (39, 'เพชรบูรณ์', '16.4189807', '101.15509259999999', 13), (40, 'แพร่', '18.1445774', '100.14028310000003', 13), (41, 'ภูเก็ต', '7.9810496', '98.36388239999997', 13), (42, 'มหาสารคาม', '16.1850896', '103.30264609999995', 13), (43, 'มุกดาหาร', '16.542443', '104.72091509999996', 13), (44, 'แม่ฮ่องสอน', '19.2990643', '97.96562259999996', 13), (45, 'ยโสธร', '15.792641', '104.14528270000005', 13), (46, 'ยะลา', '6.541147', '101.28039469999999', 13), (47, 'ร้อยเอ็ด', '16.0538196', '103.65200359999994', 13), (48, 'ระนอง', '9.9528702', '98.60846409999999', 13), (49, 'ระยอง', '12.6833115', '101.23742949999996', 13), (50, 'ราชบุรี', '13.5282893', '99.81342110000003', 13), (51, 'ลพบุรี', '14.7995081', '100.65337060000002', 13), (52, 'ลำปาง', '18.2888404', '99.49087399999996', 13), (53, 'ลำพูน', '18.5744606', '99.0087221', 13), (54, 'เลย', '17.4860232', '101.72230020000006', 13), (55, 'ศรีสะเกษ', '15.1186009', '104.32200949999992', 13), (56, 'สกลนคร', '17.1545995', '104.1348365', 13), (57, 'สงขลา', '7.1756004', '100.61434699999995', 13), (58, 'สตูล', '6.6238158', '100.06737440000006', 13), (59, 'สมุทรปราการ', '13.5990961', '100.59983190000003', 13), (60, 'สมุทรสงคราม', '13.4098217', '100.00226450000002', 13), (61, 'สมุทรสาคร', '13.5475216', '100.27439559999993', 13), (62, 'สระแก้ว', '13.824038', '102.0645839', 13), (63, 'สระบุรี', '14.5289154', '100.91014210000003', 13), (64, 'สิงห์บุรี', '14.8936253', '100.39673140000002', 13), (65, 'สุโขทัย', '17.0055573', '99.82637120000004', 13), (66, 'สุพรรณบุรี', '14.4744892', '100.11771279999994', 13), (67, 'สุราษฎร์ธานี', '9.1382389', '99.32174829999997', 13), (68, 'สุรินทร์', '14.882905', '103.49371070000007', 13), (69, 'หนองคาย', '17.8782803', '102.74126380000007', 13), (70, 'หนองบัวลำภู', '17.2218247', '102.42603680000002', 13), (71, 'อ่างทอง', '14.5896054', '100.45505200000002', 13), (72, 'อำนาจเจริญ', '15.8656783', '104.62577740000006', 13), (73, 'อุดรธานี', '17.4138413', '102.78723250000007', 13), (74, 'อุตรดิตถ์', '17.6200886', '100.09929420000003', 13), (75, 'อุทัยธานี', '15.3835001', '100.02455269999996', 13), (76, 'อุบลราชธานี', '15.2286861', '104.85642170000006', 13), (77, 'บึงกาฬ', '18.3609104', '103.64644629999998', 13); -- -- Indexes for dumped tables -- -- -- Indexes for table `tbl_provinces_map` -- ALTER TABLE `tbl_provinces_map` ADD PRIMARY KEY (`province_id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tbl_provinces_map` -- ALTER TABLE `tbl_provinces_map` MODIFY `province_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=78;
ไฟล์ dbconnect.php สำหรับเชื่อมต่อกับฐานข้อมูล ใช้งาน mysqli
<?php $mysqli = new mysqli("localhost", "root","","test"); /* check connection */ if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } if(!$mysqli->set_charset("utf8")) { printf("Error loading character set utf8: %s\n", $mysqli->error); exit(); }
ไฟล์ genMarker.php
<?php header("Content-type:application/json; charset=UTF-8"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); require_once("dbconnect.php"); $json_data = array(); $sql = " SELECT * FROM tbl_provinces_map WHERE 1 ORDER BY province_id "; $result = $mysqli->query($sql); if($result && $result->num_rows > 0){ while($row = $result->fetch_assoc()){ $json_data[] = array( "province_id" => $row['province_id'], "province_name" => $row['province_name'], "province_lat" => $row['province_lat'], "province_lon" => $row['province_lon'] ); } } // แปลง array เป็นรูปแบบ json string if(isset($json_data)){ $json= json_encode($json_data); if(isset($_GET['callback']) && $_GET['callback']!=""){ echo $_GET['callback']."(".$json.");"; }else{ echo $json; } } ?>
ดูรายละเอียดเกี่ยวกับการสร้างไฟล์ json เพิ่มเติมได้ที่บทความ
สร้างไฟล์ json จากฐานข้อมูล รองรับการใช้งาน jsonp callback http://niik.in/523
https://www.ninenik.com/content.php?arti_id=523 via @ninenik
กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ
อ่านต่อที่บทความ
-
15 Sep2010สร้าง ตัว marker ระบุตำแหน่ง ใน google map จำนวนมาก จาก xml ไฟล์ อ่าน 41,675
ตัวอย่างโค้ดต่อไปนี้ เป็นการสร้าง ตัว marker ระบุตำแหน่ง ใน google map จำนวนมากๆ
เนื้อหาที่เกี่ยวข้อง
-
กำลังอ่านเนื้อหานี้อยู่14 Sep2010การดึงข้อมูล จากฐานข้อมูล สร้าง xml ไฟล์ ด้วย php อ่าน 33,770
ตัวอย่างต่อไปนี้ เป็นแนวทางเบื้องต้น ในการดึงข้อมูลจากฐานข้อมูล เพื่อสร้างเป็น x
-
15 Sep2010สร้าง ตัว marker ระบุตำแหน่ง ใน google map จำนวนมาก จาก xml ไฟล์ อ่าน 41,675
ตัวอย่างโค้ดต่อไปนี้ เป็นการสร้าง ตัว marker ระบุตำแหน่ง ใน google map จำนวนมากๆ
-
17 Sep2010กำหนด infowindow ให้กับตัว marker จำนวนมาก ใน google map อ่าน 22,729
เนื้อหานี้เป็นส่วนต่อเนื่องจาก สร้าง ตัว marker ระบุตำแหน่ง ใน google map จำนวน
-
03 Oct2010แสดงข้อมูลตัวเลือก ด้านข้าง google map กับการใช้งาน event.trigger อ่าน 13,817
เนื้อหาต่อไปนี้ เป็นส่วนต่อเนื้องจาก หัวข้อ https://www.ninenik.com/กำหนด_infow
-
19 Aug2014สร้างไฟล์ json จากฐานข้อมูล รองรับการใช้งาน jsonp callback อ่าน 20,026
จากเนื้อหาเดิม เราเคยรูจักวิธีการสร้างไฟล์ json สำหรับใช้งาน ภายใน server ของ
URL สำหรับอ้างอิง
Top
Copy
ขอบคุณทุกการสนับสนุน