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

Registered : 105,336

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


 
VPS  250 ҷ͹

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
วิธีแทรก Youtube Videos ลงหน้าเว็บ HTML และ การใช้ BBCode เพื่อรับและแสดงผลหน้าเว็บ
วิธีแทรก Youtube Videos ลงหน้าเว็บ HTML และ การใช้ BBCode เพื่อรับและแสดงผลหน้าเว็บ
บทความนี้จะเป็นวิธีการเอา Youtube ลงในหน้าเว็บ แม้ว่าจะเป็นแค่พื้นฐานที่เราคุ้นเคย แต่เชื่อว่าหลายๆ คนยังเอา Youtube Videos มาลงในหน้าเว็บยังไม่เป็น
Rating : Update : 2017-04-09 23:20:06
jQuery วิธี Save State Form เมื่อกด Refresh หรือ Back แล้วข้อมูลบน Form ไม่หาย
jQuery วิธี Save State Form เมื่อกด Refresh หรือ Back แล้วข้อมูลบน Form ไม่หาย
เทคนิคการ save state ของ form เมื่อกด refresh หรือ back แล้วข้อมูลไม่หาย เหมาะสำหรับเป็น form ในการ input ข้อมูล เช่น สมัครสมาชิก ลงทะเบียน
Rating : Update : 2017-03-24 17:32:17
การค้นหาค่า Binary ใน Image Data ของ SQL Server
การค้นหาค่า Binary ใน Image Data ของ SQL Server
เนื่องจากการค้นหาใน Image Data หรือ Binary เป็นเรื่องที่ยุ่งยากมาก ๆ สำหรับมือใหม่ในหลาย ๆ คน ซึ่งผมก็ได้ลองผิดลองถูกต่าง ๆ จนสามารถคิดค้นวิธีการค้นหา / อัพเดท Image Binary ได้ครับ จึงอยากนำมาแชร์ให้เพื่อน ๆ ได้ศึกษาเป็นแนวทางกันครับ
Rating : Update : 2016-08-29 00:04:38
ฐานข้อมูล MySql ชื่อประเทศ ไทย+อังกฤษ
ฐานข้อมูล MySql ชื่อประเทศ ไทย+อังกฤษ
ฐานข้อมูล MySql ชื่อประเทศ ไทย+อังกฤษ (แปะไว้เตือนตัวเอง เวลาลืมว่าเคยทำไว้) พร้อมการใช้กับ PHP
Rating : Update : 2018-03-23 20:57:43
Windows Form กับ OpenFileDialog : การเปิด Browse และอัพโหลด Save ไฟล์ (VB.Net,C#)
Windows Form กับ OpenFileDialog : การเปิด Browse และอัพโหลด Save ไฟล์ (VB.Net,C#)
ตัวอย่างการใช้ Windows Form กับ OpenFileDialog เพื่อเปิด Browse และอัพโหลด Save ไฟล์ลงในโฟเดอร์ของ Application
Rating : Update : 2017-03-24 17:36:22
การสร้าง Event Scheduler  หรือ Job Schedule บน MySQL/MariaDB ตั้งเวลาทำงาน
การสร้าง Event Scheduler หรือ Job Schedule บน MySQL/MariaDB ตั้งเวลาทำงาน
การเขียน event หรือ job schedule บน mysql และ mariadb เพื่อให้ทำงานตามระยะเวลาที่กำหนด เหมาะสำหรับใช้ในการสร้าง job งงานต่างๆ เช่น backup รายการ clear ข้อมูลต่างๆ
Rating : Update : 2017-03-24 17:35:11
Query ข้อมูลจาก SQL Server เป็น JSON และการ Deserialize (Decode) ข้อมูล (VB.Net,C#)
Query ข้อมูลจาก SQL Server เป็น JSON และการ Deserialize (Decode) ข้อมูล (VB.Net,C#)
การ Select ข้อมูลจาก SQL Server ให้อยู่ในรูปแบบของ JSON และการส่งค่าผ่าน Stored Procedure รวมทั้งวิธีการถอดรหัส (Decode) ข้อความจาก JSON
Rating : Update : 2017-03-18 23:06:43
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
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .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 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2018 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่