Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 103,250

HOME > บทความจากสมาชิก > PHP - Web Service กับ MySQL Database รับส่งค่า Result ผ่านเว็บเซอร์วิส (NuSoap)



 

PHP - Web Service กับ MySQL Database รับส่งค่า Result ผ่านเว็บเซอร์วิส (NuSoap)

PHP - Web Service กับ MySQL Database รับส่งค่า Result ผ่านเว็บเซอร์วิส (NuSoap) บทความนี้เป็นภาคต่อของ PHP กับ Web Service และการ Return ค่า Array และจำเป็นเลยที่ขาดไม่ได้สำหรับผู้ที่กำลังศึกษาการเขียนโปรแกรม PHP กับ Web Service เพราะจะเป็นการประยุกต์การใช้งานกับ MySQL Database โดยในตัวอย่างนี้ทาง Web Service ของ Server จะมีฐานข้อมูล MySQL Database ชื่อว่า customer ซึ่งประกอบด้วยฟิวด์ CustomerID, Name, Email, CountryCode, Budget, Used ตามตัวอย่างในรูป

PHP Web Service and MySQL Database

เปิดบริการให้ Client ทำการ Reqeust ข้อมูลเข้ามา โดยส่งรหัสประเทศ( CountryCode) ของลูกค้าเข้ามาใน Web Service และ Web Service จะทำการ Return ค่ารายชื่อลูกค้าทั้งหมดที่อยู่ในประเทศนั้น ๆ กลับไปยัง Client เช่น Client ทำการส่ง CountryCode = US

PHP Web Service and MySQL Database

ในตัวอย่างมีรหัสประเทศ CountryCode = US อยู่ 2 รายชื่อ

PHP Web Service and MySQL Database

นี่คือหน้าจอ Web Service ฝั่ง Client และข้อมูลที่ Web Service ฝั่ง Server ได้ส่งกลับมา โดยข้อมูลที่ได้จะอยู่ในรูปแบบของ Array มี 2 มิติ

รูปแบบข้อมูลที่ Server ส่งกลับมา

array(2) {
  [0]=>
  array(6) {
    ["CustomerID"]=>
    string(4) "C003"
    ["Name"]=>
    string(9) "Jame Born"
    ["Email"]=>
    string(24) "jame.born@thaicreate.com"
    ["CountryCode"]=>
    string(2) "US"
    ["Budget"]=>
    float(3000000)
    ["Used"]=>
    float(600000)
  }
  [1]=>
  array(6) {
    ["CustomerID"]=>
    string(4) "C004"
    ["Name"]=>
    string(12) "Chalee Angel"
    ["Email"]=>
    string(27) "chalee.angel@thaicreate.com"
    ["CountryCode"]=>
    string(2) "US"
    ["Budget"]=>
    float(4000000)
    ["Used"]=>
    float(100000)
  }
}


โครงสร้างข้อมูลที่ส่งกลับไปยัง Client ซึ่งทาง Client สามารถใช้คำสั่ง foreach ในการแสดงค่าจาก Array








ก่อนอ่านบทความนี้ควรอ่าน 3 บทความนี้ก่อน


ฐานข้อมูลฝั่ง Server
REATE TABLE `customer` (
  `CustomerID` varchar(4) NOT NULL,
  `Name` varchar(50) NOT NULL,
  `Email` varchar(50) NOT NULL,
  `CountryCode` varchar(2) NOT NULL,
  `Budget` double NOT NULL,
  `Used` double NOT NULL,
  PRIMARY KEY  (`CustomerID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- 
-- Dumping data for table `customer`
-- 

INSERT INTO `customer` VALUES ('C001', 'Win Weerachai', 'win.weerachai@thaicreate.com', 'TH', 1000000, 600000);
INSERT INTO `customer` VALUES ('C002', 'John  Smith', 'john.smith@thaicreate.com', 'EN', 2000000, 800000);
INSERT INTO `customer` VALUES ('C003', 'Jame Born', 'jame.born@thaicreate.com', 'US', 3000000, 600000);
INSERT INTO `customer` VALUES ('C004', 'Chalee Angel', 'chalee.angel@thaicreate.com', 'US', 4000000, 100000);


นำคำสั่ง SQL นี้ไปสร้าง Database ในฝั่งของ Web Server

PHP Web Service and MySQL Database

เมื่อสร้างเสร็จจะได้โครงสร้างและข้อมูลดังรูป


สำหรับบทความนี้ใช้ Library ของ NuSoap สามารถดาวน์โหลดได้ที่


หรือจะดาวน์โหลดได้จากในส่วนท้ายของบทความ

Code เต็ม ๆ

Web Service ฝั่ง Server

WebServiceServer.php
<?php
		require_once("lib/nusoap.php");
		 
		//Create a new soap server
		$server = new soap_server();
		 
		//Define our namespace
		$namespace = "http://localhost/nusoap/WebServiceServer.php";
		$server->wsdl->schemaTargetNamespace = $namespace;
		
		//Configure our WSDL
		$server->configureWSDL("getCustomer");
		
		//Add ComplexType
		$server->wsdl->addComplexType( 
			'DataList', 
			'complexType', 
			'struct', 
			'all', 
			'', 
			   array( 
					'CustomerID' => array('name' => 'CustomerID', 'type' => 'xsd:string'), 
					'Name'  => array('name' => 'Name', 'type'  => 'xsd:string'),
					'Email'  => array('name' => 'Email', 'type'  => 'xsd:string'),
					'CountryCode'  => array('name' => 'CountryCode', 'type'  => 'xsd:string'),
					'Budget'  => array('name' => 'Budget', 'type'  => 'xsd:float'),
					'Used'  => array('name' => 'Used', 'type'  => 'xsd:float')
		   ) 
		); 
		
		//Add ComplexType
		$server->wsdl->addComplexType( 
			'DataListResult', 
			'complexType', 
			'array', 
			'', 
			'SOAP-ENC:Array', 
			array(), 
			array( 
				array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:DataList[]') 
			), 
			'tns:DataList' 
		); 

		//Register our method and argument parameters
        $varname = array(
                   'strCountry' => "xsd:string"
        );
		
		// Register service and method
		$server->register('resultCustomer',    // method name 
			$varname, // input parameters 
			array('return' => 'tns:DataListResult')); 

		 
		function resultCustomer($strCountry)
		{
				$objConnect = mysql_connect("localhost","root","") or die(mysql_error());
				$objDB = mysql_select_db("mydatabase");
				$strSQL = "SELECT * FROM customer WHERE 1 AND CountryCode like '%".$strCountry."%' ";
				$objQuery = mysql_query($strSQL) or die (mysql_error());
				$intNumField = mysql_num_fields($objQuery);
				$resultArray = array();
				while($obResult = mysql_fetch_array($objQuery))
				{
					$arrCol = array();
					for($i=0;$i<$intNumField;$i++)
					{
						$arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i];
					}
					array_push($resultArray,$arrCol);
				}
				mysql_close($objConnect);
				return $resultArray;
		}
		 
		// Get our posted data if the service is being consumed
		// otherwise leave this data blank.
		$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
		 
		// pass our posted data (or nothing) to the soap service
		$server->service($POST_DATA);
		exit(); 
?>















Web Service ฝั่ง Client

สร้างไฟล์สำหรับ Client เพื่อทดสอบเรียก Web Sevice

WebServiceClient.php
<html>
<head>
<title>ThaiCreate.Com</title>
</head>
<body>

<form name="frmMain" method="post" action="">
	  <h2>Search Customer</h2>
	  Search by Country Code 
	  <input type="text" name="txtCountry" value="<?php echo $_POST["txtCountry"];?>">
	  <input type="submit" name="Submit" value="Submit">
</form>

<?php
			if($_POST["txtCountry"] != "")
			{
					include("lib/nusoap.php");
					$client = new nusoap_client("http://localhost/nusoap/WebServiceServer.php?wsdl",true); 
					$params = array(
							   'strCountry' => $_POST["txtCountry"]
					);
					$data = $client->call('resultCustomer', $params);

					//echo '<pre>';
					//var_dump($data);
					//echo '</pre><hr />';

					if(count($data) == 0)
					{
							echo "Not found data!";
					}
					else
					{
						?>
								<table width="500" border="1">
								  <tr>
									<td>CustomerID</td>
									<td>Name</td>
									<td>Email</td>
									<td>CountryCode</td>
									<td>Budget</td>
									<td>Used</td>
								  </tr>
								<?php
								foreach ($data as $result) {
								?>
									  <tr>
										<td><?php echo $result["CustomerID"];?></td>
										<td><?php echo $result["Name"];?></td>
										<td><?php echo $result["Email"];?></td>
										<td><?php echo $result["CountryCode"];?></td>
										<td><?php echo $result["Budget"];?></td>
										<td><?php echo $result["Used"];?></td>
									  </tr>
								<?php
								}
					}

			}
?>
</body>
</html>



Screenshot

PHP Web Service and MySQL Database

กรณีที่ไม่พบข้อมูล

PHP Web Service and MySQL Database

ข้อมูลที่พบข้อมูล

เพิ่มเติม

กรณีที่ใช้ var_dump($data) เพื่อแสดงข้อมูล ก็จะได้ result ที่อยู่ในรูปแบบของ array ดัวตัวอย่าง

					echo '<pre>';
					var_dump($data);
					echo '</pre><hr />';


Result ที่ Server ส่งกลับมา
array(2) {
  [0]=>
  array(6) {
    ["CustomerID"]=>
    string(4) "C003"
    ["Name"]=>
    string(9) "Jame Born"
    ["Email"]=>
    string(24) "jame.born@thaicreate.com"
    ["CountryCode"]=>
    string(2) "US"
    ["Budget"]=>
    float(3000000)
    ["Used"]=>
    float(600000)
  }
  [1]=>
  array(6) {
    ["CustomerID"]=>
    string(4) "C004"
    ["Name"]=>
    string(12) "Chalee Angel"
    ["Email"]=>
    string(27) "chalee.angel@thaicreate.com"
    ["CountryCode"]=>
    string(2) "US"
    ["Budget"]=>
    float(4000000)
    ["Used"]=>
    float(100000)
  }
}








ทดสอบกับ .NET ด้วย ASP.NET

สำหรับพื้นฐาน ASP.NET เรียก Web Service ของ PHP สามารถอ่านได้ที่นี่
Go to : PHP สร้าง Web Service และใช้ .NET เรียก Web Service ของ PHP (ASP.NET and Windows Form)

PHP Web Service and MySQL Database

สร้างหน้า WebPage เหมือนในรูป ประกอบด้วย Label , Textbox , Button และ GridView เหมือนในรูปประกอบ

PHP Web Service and MySQL Database

Add หน้า Web Service กรอก URL ให้ถูกต้อง

Code สำหรับภาษา VB.NET และ C#

- VB.NET

    Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSearch.Click
        Dim cls As New clsGetCustomer.getCustomer
        GridView1.DataSource = cls.resultCustomer(Me.txtCountry.Text)
        GridView1.DataBind()
    End Sub


- C#

        protected void btnSearch_Click(object sender, EventArgs e)
        {
            clsGetCustomer.getCustomer cls = new clsGetCustomer.getCustomer();
            GridView1.DataSource = cls.resultCustomer(this.txtCountry.Text);
            GridView1.DataBind();
        }


อธิบายเพิ่มเติม
จาก Code จะเห็นว่าสามารถรับค่าจาก Web Service และโยน DataSource ให้กับ GridView ได้เลย โดยไม่ต้องการประกาศตัวแปรหรือทำการ DirectCast แต่อย่างใด

หรือถ้าต้องการ Loop ข้อมูลจาก Web Service ให้อยู่ในรูปแบบของ DataTable ก็สามารถทำได้เช่นเดียวกัน

- VB.NET

    Protected Sub DataTableToGridView()
        Dim cls As New clsGetCustomer.getCustomer
        Dim myArr As Array = DirectCast(cls.resultCustomer(Me.txtCountry.Text), Array)

        Dim dt As DataTable
        Dim dr As DataRow

        dt = New DataTable()
        dt.Columns.Add("CustomerID")
        dt.Columns.Add("Name")
        dt.Columns.Add("Email")
        dt.Columns.Add("CountryCode")
        dt.Columns.Add("Budget")
        dt.Columns.Add("Used")

        For Each arr In myArr
            dr = dt.NewRow()
            dr("CustomerID") = DataBinder.Eval(arr, "CustomerID").ToString()
            dr("Name") = DataBinder.Eval(arr, "Name").ToString()
            dr("Email") = DataBinder.Eval(arr, "Email").ToString()
            dr("CountryCode") = DataBinder.Eval(arr, "CountryCode").ToString()
            dr("Budget") = DataBinder.Eval(arr, "Budget").ToString()
            dr("Used") = DataBinder.Eval(arr, "Used").ToString()
            dt.Rows.Add(dr)
        Next

        GridView1.DataSource = dt.DefaultView
        GridView1.DataBind()
    End Sub


- C#

        protected void DataTableToGridView()
        {
            clsGetCustomer.getCustomer cls = new clsGetCustomer.getCustomer();
            Array myArr = (Array)cls.resultCustomer(this.txtCountry.Text);

            DataTable dt = null;
            DataRow dr = null;

            dt = new DataTable();
            dt.Columns.Add("CustomerID");
            dt.Columns.Add("Name");
            dt.Columns.Add("Email");
            dt.Columns.Add("CountryCode");
            dt.Columns.Add("Budget");
            dt.Columns.Add("Used");

            foreach (object arr in myArr)
            {
                    dr = dt.NewRow();
                dr["CustomerID"] = DataBinder.Eval(arr, "CustomerID").ToString();
                dr["Name"] = DataBinder.Eval(arr, "Name").ToString();
                dr["Email"] = DataBinder.Eval(arr, "Email").ToString();
                dr["CountryCode"] = DataBinder.Eval(arr, "CountryCode").ToString();
                dr["Budget"] = DataBinder.Eval(arr, "Budget").ToString();
                dr["Used"] = DataBinder.Eval(arr, "Used").ToString();
                dt.Rows.Add(dr);
            }

            GridView1.DataSource = dt.DefaultView;
            GridView1.DataBind();
        }


Screenshot

PHP Web Service and MySQL Database


สำหรับ Code ทั้ง PHP Web Service รวมทั้ง ASP.NET by C# or VB.NET สามารถดาวน์โหลดได้จากที่นี่

Download Code !!


บทความอื่น ๆ ที่เกี่ยวข้อง
Go to : PHP Create - Call Web Service สร้างและเรียกเว็บเซอร์วิส ด้วย PHP (NuSoap and Soap)
Go to : PHP สร้าง Web Service และใช้ .NET เรียก Web Service ของ PHP (ASP.NET and Windows Form)
Go to : วิธีการสร้าง PHP กับ Web Service และ Return Array ไปยัง Client ด้วย NuSoap
Go to : php กับ web service ขอคำปรึกษาเรื่องการ return array ใน webservice ครับ


   
Share
Bookmark.   

  By : TC Admin
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2012-05-18
  Download : No files
Sponsored Links
jQuery กับ Checkbox เทคนิคเล็กๆ กับการใช้ jquery กับ checkbox แบบง่ายๆ
jQuery กับ Checkbox เทคนิคเล็กๆ กับการใช้ jquery กับ checkbox แบบง่ายๆ
เทคนิคการเขียน jQuery เพื่อใช้งานร่วมกับ Checkbox แบบง่ายๆ เช่น การ Selector , การตรวจสอบค่าของ Checkbox หรือการ Default ค่าต่างๆ
Rating : Update : 2017-03-24 17:35:50
Windows Form กับ ListView แสดงข้อมูลบน ListView ในรูปแบบ Table/Grid (VB.Net,C#)
Windows Form กับ ListView แสดงข้อมูลบน ListView ในรูปแบบ Table/Grid (VB.Net,C#)
บทความพื้นฐานเกี่ยวกับการใช้ ListView ซึ่งเป็น Control ที่ใช้สำหรับการแสดงข้อมูลในรูปแบบของ Table หรือ GridView โดยรองรับข้อมูลจากหลายๆ รูปแบบ เช่น Array, List หรือ Database
Rating : Update : 2017-03-24 17:36:53
สร้าง Entity Framework เพื่อติดต่อกับ Database การสร้าง Model Entities บน Visual Studio
สร้าง Entity Framework เพื่อติดต่อกับ Database การสร้าง Model Entities บน Visual Studio
สำหรับ Entity Framework ใช้งานได้กับ Application หลากหลายประเภท เช่น ASP.Net , Windows Form , Console App และอื่น ๆ รองรับภาษา VB.Net , C# และสามารถประยุกต์ใช้กับ Database ได้หลาย ๆ ประเภท ไม่ว่าจะเป็น SQL Server , MySQL, MS Access , Oracle
Rating : Update : 2015-12-02 22:43:15
อัพโหลดไฟล์รูป จัดเก็บชื่อในฐานข้อมูล โดย mysqli class จากนั้นนำภาพมาแสดงเป็นสไลด์ แบบ Responsive โดยใช้ Bxslider
อัพโหลดไฟล์รูป จัดเก็บชื่อในฐานข้อมูล โดย mysqli class จากนั้นนำภาพมาแสดงเป็นสไลด์ แบบ Responsive โดยใช้ Bxslider
ระบบอัพโหลดรูปภาพ ส่งข้อมูลไปบันทึกในฐานข้อมูล มีการเปิด-ปิดใช้งานรูปภาพ มีการจัดลำดับของสไลด์ ใช้ Bootstrap ส่งข้อมูลโดยใช้ jquery มีระบบล็อกอิน มีการใช้งานสไลด์ที่รองรับ responsive
Rating : Update : 2017-04-12 20:43:34
การสร้าง User บน SQL Server Database และการ Grant กำหนดสิทธิ์ เช่น การ SELECT ได้อย่างเดียว
การสร้าง User บน SQL Server Database และการ Grant กำหนดสิทธิ์ เช่น การ SELECT ได้อย่างเดียว
วิธีการจัดการกับ User บน SQL Server เช่นการสร้าง User และการ Grant สิทธิ์ให้กับ User สามารถที่จะ SELECT ได้อย่างเดียว ซึ่งเหมาะใช้สำหรับการจัดการกับ User ที่ต้องการ Access เข้ามาในระบบ Database
Rating : Update : 2017-03-30 17:01:00
การทำ AutoComplete  Ajax (php+mssql) อย่างง่าย และสามารถใช้ภาษาไทยได้ครับ
การทำ AutoComplete Ajax (php+mssql) อย่างง่าย และสามารถใช้ภาษาไทยได้ครับ
autocomplete AJAX PHP MSSQL และสามารถใช้ภาษาไทยได้ครับ ผมดัดแปลงจาก ajax php mysql autocomplete textbox ภาษาไทย
Rating : Update : 2017-03-25 13:06:51
Android Shared Preferences : Login Username/Password (PHP/MySQL)
Android Shared Preferences : Login Username/Password (PHP/MySQL)
บทความนี้จะเป็นการเขียน Android App ประยุกต์การใช้งาน Shared Preferences กับการ Login ผ่านระบบ Database ของ MySQL ซึ่งจะใช้ PHP ทำงานในฝั่ง Web Server โดยใน Application ของ Android จะส่งค่า Username/Password ไปตรวจสอบที่ Web Server
Rating : Update : 2015-11-19 13:09:46
ThaiCreate.Com Forum

Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน Struts การเขียนโปรแกรม Java Struts Framework
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน Yii  Framework การเขียนโปรแกรม ภาษา PHP กับ Yii
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว

สุดยอด Source Code V2.0
 

แจ้งชำระเงิน/โอนเงิน
 

Hit Link
   


Acc : thaicreate@hotmail.com






Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2017 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 084-715-5121 อัตราราคา คลิกที่นี่