หน้า: 1 [2] 3
 
ผู้เขียน หัวข้อ: flash กับ database ในการทำการสั่งซื้อสินค้า  (อ่าน 34883 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
สอนคร่าวๆได้มั้ยครับ

ผมเคยเห็นนานแล้ว แต่ไม่มีโอกาสได้ใช้เลย

เผื่ออ่านคร่าวๆแล้ว get จะได้ลองเอามาเล่นครับ ไหว้
บันทึกการเข้า

คร่าว ๆ amfphp จะประกอบด้วย 3 ส่วนนะครับ

1. action script + lib ของ amfphp ซึ่งเป็น flash remoting เอาไว้ call method ที่เขียนไว้บน server ที่เป็น php
2. ส่วนของ server ในการจัดการ service ที่เขียนไว้เป็น php
3. code ของ php ที่เราเขียนขึ้นมาเอง ซึี่่งจะถูกเรียกใช้ในส่วนที่ 2


1 + 2 เราสามารถ download ได้จาก web site เค้าได้เลย
1. เป็น include file สามารถใช้ได้เลย
2. เป็น package เราต้องเอามา install เอง ถ้าใช้ server ที่เป็น linux ก็ unzip + tar ก็ใช้ได้เลย (ไม่เคยลองบน windows นะ แต่ิคิดว่าใช้ได้เหมือนกัน)

เมื่อเรา install package ใน ข้อ 2 แล้วมันจะมี tool เป็น web application ให้เรา สามารถ test function ที่เราเขียนขึ้นได้ง่าย ๆ ก่อนที่เราจะเอาไปเรียกใช้จริง ๆ จาก ข้อ 1 เช่น พวก hello world (ลองเอามา install แล้วลองเปิด tool มันดูถ้าเขียน php เป็นเห็นแล้วจะเข้าใจทันที)

การทำงานก็อย่างที่บอกมี 3 ส่วน

[ Flash ] ----> [ Service Manager ] ----> [ php code ] <--> [ DB ]

ทีนี้มันง่ายตรงไหนถ้าใช้ flash remoting

มันง่ายตรงการรับส่งค่าระหว่าง Flash <---> php จากเดิมที่เราใช้ loadVar หรืออะไรก็แล้วแต่ php หรือ server script ต้อง return ออกมาเป็น pair value เช่น a=123&b=345 อะไรทำนองนี้ แต่ถ้าเราใช้ lib ที่บอก เราสามารถ return result set จากการ query ออกมาได้เลย เช่น

/* syntax ไม่รู้ถูกเปล่านะเขียนสด ๆ เลย >< */
$rows = mysql_fetch_rows($rs);
return $rows

ตัว service manager จะทำการ serialize ออกเป็น string ยาว ๆ คล้าย ๆ กลับการใช้ ajax แล้วก็ส่งกับไปทาง flash โดย flash ก็จะ unserialize กลับเป็น object สามารถใช้งานได้ทันที

ใน flash ก็จะอ้างเป็น $rows["fieldname"] ..... อะไรก็ว่าไป

ประมาณนี้แหละครับ
บันทึกการเข้า
return ออกมาเป็นอาร์เรย์ธรรมดาๆ ก็ได้ใช่มั้ยครับ
น่าสนแฮะ  หื่น

ป.ล. จะเอาวิธีแบบ manual อยู่มั้ยครับ? เดี๋ยวผมทำ Tutorial ให้
« แก้ไขครั้งสุดท้าย: 28 ก.ย. 2007, 15:23 น. โดย korstudioXD » บันทึกการเข้า

เอาครับ  กรี๊ดดดดด
บันทึกการเข้า

50 levels avaliable, 22 secrets levels avaliable :P
มาด้วยความรวดเร็ว  ฮิ้ววว

Code ต่อไปนี้ทำเพื่อสอนเป็นตัวอย่างครับ ไม่ได้เสร็จสมบูรณ์ทั้งหมด (การเช็คตัวอักษร, ความถูกต้อง ฯลฯ)
แต่สามารถนำไป Apply และเพิ่มเติมได้เองครับผม

=========================
ไฟล์ทั้งหมด
- test_query.php (เอาไปไว้ใน Appserv\www\.... ครับ)
- fl_db.fla (ผมทำใน Flash CS3 ครับ แต่ Save เป็น Flash 8 ให้)
- fl_db.swf

โปรแกรมที่ใช้
- Flash MX ขึ้นไป (แนะนำ Flash 8 ขึ้นไปครับ จะได้โหลดไฟล์ของผมไปดูได้)
- Text Editor เช่น Editplus, Notepad หรือจะ Dreamweaver สำหรับทำ PHP
- Appserv สำหรับจำลองเครื่องเพื่อทดสอบ PHP
-------------------------------------
PHP
ทำส่วนของ PHP ก่อนนะครับ จะได้ไม่งง ^^
**อ่านก่อน**
1. ให้สร้าง Database พร้อมตารางและข้อมูลครับ หรือถ้ามีอยู่แล้วก็เลือกไว้ในใจเลยนะครับ
2. ใช้ code ด้านล่าง ปรับแต่งให้ตรงกับ Username/Password และฐานข้อมูล รวมถึงตารางและ Attribute ของตารางที่ใช้อยู่ด้วยนะครับ
**********
สำหรับฐานข้อมูลของผม มีโครงสร้างตามนี้ครับ
ฐานข้อมูล: test
ตาราง: highscore
มี 3 Fields (Attributes) ครับคือ id, user, และ score
>>id เป็น Primary key, Auto increment ชนิด INT(2)
>>user ชนิด VARCHAR(20)
>>score ชนิด INT(6)

SQL ทั้งหมด (ตั้งแต่สร้างตารางและเพิ่มข้อมูลลงในตาราง)
โค้ด:
CREATE DATABASE `test` DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci;
USE `test`;

--
-- Table structure for table `highscore`
--
CREATE TABLE `highscore` (
  `id` int(2) NOT NULL auto_increment,
  `user` varchar(20) NOT NULL,
  `score` int(6) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

INSERT INTO `test`.`highscore` (`id` ,`user` ,`score`)
VALUES (NULL , 'korstudio', '152075'), (NULL , 'aloha', '78520');
**หมายเหตุ**
โดยปกติแล้ว เมื่อลง Appserv จะมีฐานข้อมูลที่ชื่อ test ให้อัตโนมัติครับ

ใน PHP ครับ
โค้ด:
<?
$conn_sv = "localhost"; //Host โดยปกติจะเป็น localhost
$conn_user = "root"; //Username สำหรับเชื่อมต่อไปยัง SQL
$conn_pw = "1234"; //Password
$conn_db = "test"; //Database name

@mysql_connect($conn_sv,$conn_user,$conn_pw)or die("Cannot connect to database");
@mysql_select_db($conn_db)or die("Cannot select database");
@mysql_db_query($conn_db,"SET NAMES tis620"); //เนื่องจาก MySQL 5ขึ้นไปจะใช้ Encoding แบบ UTF8 แต่เผื่อมีการติดต่อโดยใช้ encoding เป็น TIS-620 และเพื่อไม่ให้เกิดปัญหากับภาษาไทยในฐานข้อมูล โดยที่ข้อมูลเป็น TIS-620ครับ

//เริ่ม Query ข้อมูล
$sql = "select * from `highscore` where `id` = 1"; //เอาข้อมูลที่ id เป็น 1 ออกมา
$rs = mysql_query($sql) or die("Cannot query"); //สั่งทำ SQL
$rt = mysql_fetch_array($rs); //รับข้อมูลที่ Query ออกมาในรูปแบบ Array
$data_id = $rt["id"]; //รับข้อมูลที่คอลัมน์ id
$data_user = $rt["user"]; //รับข้อมูลที่คอลัมน์ user
$data_score = $rt["score"]; //รับข้อมูลที่คอลัมน์ score

//ส่งค่าออกไปให้ Flash
echo "score_id=".$data_id."&user=".$data_user."&scores=".$data_score;
?>


ถ้าไม่เกิดปัญหาอะไร เมื่อทดสอบรัน PHP แล้วจะได้ผลลัพธ์ออกมาตามนี้ครับ
แอบอ้าง
score_id=1&user=korstudio&scores=152075


ไปลุยใน Flash ต่อเลยครับ
-----------------------------
FLASH
**อ่านก่อน**
1. สร้างไฟล์ กว้าง-ยาวเท่าไหร่ก็ได้ครับ (ในตอนนี้จะให้ trace ออกมาทาง Output อย่างเดียว)
2. สำหรับ Flash CS3 เวลาสร้างไฟล์ใหม่ ให้เลือก Flash File (ActionScript 2.0) ครับ
**********
AS หลักๆ ที่ใช้
- LoadVars class -> สำหรับการติดต่อกับไฟล์ PHP ครับผม (จริงๆ แล้วติดต่อกับไฟล์ได้หลายชนิดครับ เช่น ASP, JSP, TXT, ...)

**ไว้ผมจะอธิบาย LoadVars class ทีหลังนะครับ (ThaiFlashDev ก็ไม่เปิดซะที - -")

ลุย Script ครับ

Flash AS (Frame 1)
โค้ด:
stop();			//กันไหลไปเฟรมอื่น

var test_lv = new LoadVars(); //สร้างตัวแปร LoadVars
/////สร้าง function ที่จัดการเมื่อทำการติดต่อ+ดึงข้อมูลกับ PHP เสร็จแล้ว
test_lv.onLoad = function(done){
if(done){
//เมื่อการดึงข้อมูลเสร็จสมบูรณ์ไร้ปัญหา
trace("*****ข้อมูลที่อ่านได้จากฐานข้อมูล 'test' ตาราง 'highscore' ที่ 'id' = 1*****");
trace("id: "+this.score_id); //trace ตัวแปร score_id ที่มาจาก PHP
trace("user: "+this.user); //trace ตัวแปร user ที่มาจาก PHP
trace("scores: "+this.scores); //trace ตัวแปร scores ที่มาจาก PHP
trace("**********************************************************************");
}else{
//ถ้าไม่สำเร็จ ก็ว่ากันไป -..-
}
}
/////สั่งดึงข้อมูลจากไฟล์ PHP
test_lv.load("http://localhost/kstests/test_query.php");


เมื่อรันแล้วจะได้ผลตามด้านล่างครับ
แอบอ้าง
*****ข้อมูลที่อ่านได้จากฐานข้อมูล 'test' ตาราง 'highscore' ที่ 'id' = 1*****
id:            1
user:         korstudio
scores:      152075
**********************************************************************


เสร็จแล้ว ^^
==============================
จุดสังเกต
1. ที่ PHP บรรทัดที่มีการ echo จะต้อง echo ออกมาในรูปแบบ pair value ครับ คือ ตัวแปร1=ค่าตัวแปร1&ตัวแปร2=ค่าตัวแปร2
2. ถ้าใน PHP เราจัดการ echo ในชื่อตัวแปรอะไร ใน Flash ก็ต้องเรียกใช้ชื่อนั้นครับ เช่น จากโค้ดที่ผมทำ
echo "score_id=".$data_id."&user=".$data_user."&scores=".$data_score;

ใน Flash ผมก็เรียกใช้ตัวแปรพวกนั้นตามนี้ครับ
trace("id:            "+this.score_id);
trace("user:         "+this.user);
trace("scores:      "+this.scores);

3. อย่าลืมแก้ Path ของไฟล์ PHP ที่จะดึงด้วยนะครับ
==========================
สำหรับข้อมูลที่ส่งมาหลายๆ ตัว ต้อง Serialize หรือนำข้อมูลที่มีมาต่อๆ กันโดยใช้ตัวคั่นด้วยครับ เช่น
โค้ด:
echo "score_id=1||2||3||4&user=korstudio||aloha||testuser||aaaa&scores=150725||70528||112635||125000";
แล้วใน Flash ค่อยทำการ Split ค่าที่ได้อีกทีครับ  ฮิ้ววว

ดาวน์โหลดไฟล์ตัวอย่าง
loadvars.zip
« แก้ไขครั้งสุดท้าย: 28 ก.ย. 2007, 17:33 น. โดย korstudioXD » บันทึกการเข้า

อ๊ากกกกก ++
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
โอเค ขอบคุณมากครับ    เจ๋ง
บันทึกการเข้า

ล้ำลึกคนึงหาในดวงจิต ใจเคยคิดตัดสวาทมิอาจสิ้น
ดั่งก้านบัวหักกลางชลาสินธุ์ ผิว่าสิ้นไร้เยื่อยังเหลือใย
return ออกมาเป็นอาร์เรย์ธรรมดาๆ ก็ได้ใช่มั้ยครับ
น่าสนแฮะ  หื่น

ป.ล. จะเอาวิธีแบบ manual อยู่มั้ยครับ? เดี๋ยวผมทำ Tutorial ให้


ใช่แล้วครับ เพราะ เดี๋ยวมันก็ถูกแปลงเป็น object ใน flash เอง จริง ๆ แล้ว array ใน flash ก็ เป็น object แบบนึงนะ
บันทึกการเข้า
 ไหว้ มากราบขออภัยที่บอกไว้ว่าจะมาทำ Tutorial ให้ แต่ไม่ได้เข้ามาทำให้สักที
จริงๆ ทำไว้ครึ่งๆ กลางๆ แล้วพอดีไม่สบายมาเดือนนึงแล้วครับ ช่วงนี้หมอไม่ให้ทำงานหน้าคอมนานๆ
แต่วิธีหลักๆ พื้นฐานที่ไม่ต้องลงอะไรเพิ่มเลย การรับ/ส่งก็แบบที่ KorStudioXD เขียนครับ
กรณีที่เราต้องการส่ง record มากกว่า 1 record หลายคนจะใช้วิธีสร้างตัวแปรต่อๆกันไป แบ่งด้วย ; เป็นต้น
แล้วเข้ามาแยกใน Flash เป็นต้น

หลังๆ วิธีที่นิยมใช้คือใช้ XML เข้าร่วม เพราะจัดข้อมูลให้อยู่ในรูป record อยู่แล้ว
คล้ายๆ กับที่ทำให้ดูตัวอย่าง XML ที่อ่าน RSS อันก่อนครับ

อีกวิธีที่ไม่ต้องลงอะไรเพิ่มคือการใช้ serialize ส่งข้อมูลจาก PHP เข้า Flash เป็น Array ก็จะได้ record ทั้งหมดได้เหมือนกัน
แต่วิธีนี้ผมเคยใช้แล้ว มันไม่ work กับภาษาไทยครับ อาจจะต้องมีการแก้ไขเพิ่มเติมเพื่อให้ใช้ได้

วิธีที่สะดวกสุด คือ เอา record ทั้งหมดที่ query มาใช้ใน Flash ทำให้ Flash สามารถเลือก record มาใช้ได้
เหมือนมองเห็น DB ก็คือใช้ตัว amfphp เพิ่มเข้าไปให้สามารถจัดการตรงนั้นได้แบบที่คุณ Wutty แนะนำครับ
ซึ่งก็จะเหมาะกับคนที่สามารถเพิ่มส่วนนี้ในการใช้งานได้

กรณีที่ไม่สามารถเพิ่มส่วนต่อเติมเข้าไปได้ ผมใช้แบบ XML ในการส่งเข้า Flash ครับ  ไหว้
บันทึกการเข้า
อีกวิธีที่ไม่ต้องลงอะไรเพิ่มคือการใช้ serialize ส่งข้อมูลจาก PHP เข้า Flash เป็น Array ก็จะได้ record ทั้งหมดได้เหมือนกัน
แต่วิธีนี้ผมเคยใช้แล้ว มันไม่ work กับภาษาไทยครับ อาจจะต้องมีการแก้ไขเพิ่มเติมเพื่อให้ใช้ได้

check encoding ก่อนเป็นอย่างแรกเลยครับ
ถ้าจำไม่ผิดนะครับ ภาษาไทยใน flash จะต้องใช้ UTF8 ดังนั้น web server ยกตัวอย่าง apache นะครับ (iis ผมใช้ไม่เป็น  แบร่) ถ้าไม่อยากมีปัญหาให้ set default charset เป็น UTF8 ด้วย

ในส่วนของ DB เช่น mysql
1. check ก่อนว่า DB และ Table ที่สร้างขึ้น collation เป็น UTF8 หรือเปล่า ถ้าไม่ใช่ ต้องแก้ให้เป็น UTF8 นะครับ
2. check input เข้า DB เป็น UTF8 หรือเปล่า (ถ้าใช้ php ให้ดูใน php.ini)
3. query ออกมา เป็น UTF8 หรือเปล่า mysql ใช้ function "Set Name UTF8" ก่อน query  (name มี s หรือเปล่าไม่น่าใจ UTF-8 หรือ UTF8 เฉย ๆ ลองเองนะขออภัยที่จำแบบแน่ ๆ ไม่ได้)

วิธี check ฝั่ง DB
1. check ว่า data ที่อยู่ใน database เป็น UTF8 หรือเปล่าให้ใช้ คำสั่ง ที่ command line "mysqldump" จะมี option set-defaul-charset กำหนดให้เป็น UTF8 นะครับ จะได้ UTF8 ออกมาชัวร์ ๆ จากนั้นลองเอาเข้า text editor ที่สามารถอ่าน UTF8 ได้ใช่ notepad++ (notepad++ ไม่มี font ภาษาไทยก็จริงแต่ถ้าเป็นภาษาไทยจะเห็นเป็น character แบบที่ไม่ font ไม่ใช่เห็นเป็นขยะแปลก ๆ)
2. check ว่าขาเข้าถูกต้องก็ลองเขียน php insert ข้อมูลที่เป็นภาษาไทยดู แล้วลองทำตามข้อ 1

การ test ในข้อ 1 ไม่ควรใช้ tool เช่น phpmyadmin dump ออกมา เพราะว่าเราต้องไป check ว่า phpmyadmin มัน set collation ที่ติดต่อกับ mysql เป็นอะไร (จริง ๆ ก็ check ได้จาก config ของ phpmyadmin นั่นแหละ) บางที ใน DB เป็น UTF8 ถูกแล้วแต่ว่าใน phpmyadmin connect ด้วย TIS620 มัน dump ออกมาก็ผิดอยู่ดี ใช้ mysqldump ชัวร์กว่า

บันทึกการเข้า
อ่า... คือ serialize ที่บอกมันไม่ได้มีปัญหาเรื่องการแสดงผลภาษาหน่ะครับ คือแสดงได้ถูกต้องเพราะเป็น UTF8
แต่คำสั่ง serialize ของ PHP มันจะเป็นการสร้างรูปแบบตัวแปรต่างๆ ให้อยู่ในรูป String แล้วส่งให้ Flash ซึ่งพอเป็นภาษาไทยมันมีการ count ผิดหน่ะครับ อันนี้คือพูดถึงอีกตัวนะครับ ไม่ใช่พูดถึงตัว amfphp ตัวนั้นครับ
บันทึกการเข้า
ok ครับ มาแก้ตัวให้ จะทำให้ดูทุกแบบเลยนะครับ ถ้าต้องการ...
ผมทำแบบที่ไม่ต้องลงอะไรเพิ่มก่อน เรียก record เข้ามาได้หลายๆ record ในรูปของ XML นะครับ
ใช้ฟังก์ชั่นเดิมสั้นๆ ที่เคยเขียนไว้ตอนทำ rssReader ในตัวอย่างที่แล้ว
ผมจะแยกไฟล์เป็น 2 ส่วน คือ ส่วนแสดงผล และส่วนเพิ่มค่าลงใน DB เพื่อให้เข้าใจง่าย
ด้านซ้ายจะเป็นส่วนเพิ่มเข้าไป comment insert และด้านขวาจะเป็นส่วนแสดงผล comment display ครับ

<a href="http://www.x-sense.com/project/asExam/xmlDB/cmtInsert.swf" target="_blank">http://www.x-sense.com/project/asExam/xmlDB/cmtInsert.swf</a><a href="http://www.x-sense.com/project/asExam/xmlDB/cmtDisplay.swf" target="_blank">http://www.x-sense.com/project/asExam/xmlDB/cmtDisplay.swf</a>
บันทึกการเข้า
ในส่วนของการใส่ค่าเข้า DB ก่อนทางด้านซ้าย
ส่วน Flash
โค้ด:
var urlRead:String = "http://www.x-sense.com/project/asExam/xmlDB/cmtInsert.php";
var lvComment:LoadVars = new LoadVars();
var error:Boolean=false;

lvComment.onLoad = function(success:Boolean) {
if(success) {
inpName.text="";
inpComment.text="";
} else {
inpName.text="";
inpComment.text="error";
}
};

btnSent.onPress = function() {
if(inpName.text==""||inpName.text=="Enter Name"){
inpName.text="Enter Name";
error=true;
}
if(inpComment.text==""||inpComment.text=="Enter Comment"){
inpComment.text="Enter Comment";
error=true;
}
if(!error) {
lvComment.inpName = inpName.text;
lvComment.inpComment = inpComment.text;
lvComment.sendAndLoad(urlRead,lvComment,"POST");
} else {
error=false;
}
}

ส่วนนี้จะเห็นว่าไม่มีอะไรมาก ปกติการเพิ่มค่า เราเพิ่มทีละ record อยู่แล้ว ก็ส่งตัวแปรผ่านทางออปเจ็ค loadVars ไปให้กับ php ได้เลย
ในส่วนของปุ่ม btnSent นั้น แค่มีการเช็คว่ามีการใส่ค่าให้กับ textField หรือยัง ถ้ามีค่าแล้วก็ส่งเข้าไปทางเมธอด sendAndLoad ซึ่งเป็นการส่ง และรับค่ากลับ ในที่นี้เรารับค่ากลับจาก php ว่าการบันทึกข้อมูลสำเร็จหรือไม่

ถ้าสำเร็จจะไปทำงานที่ lvComment.onLoad ส่วน success เพื่อเคลียร์ค่าใน Text Field สำหรับเตรียมรอรับค่าใหม่ต่อไป

ส่วน PHP
โค้ด:
<?
//CONNECT DB
require("connection.inc.php");

$name = $_POST['inpName'];
$comment = $_POST['inpComment'];
$qstring = "INSERT INTO testComment (name,comment) VALUES ('$name','$comment')";
$query = mysql_query($qstring) or die ("pass=0");
print "pass=1";
?>

ในส่วนของ php จะเห็นว่าไม่มีอะไร โดยปกติผมจะพยายามสร้างภาระไว้ที่ Flash ใน PHP จะทำงานน้อยๆ เฉพาะที่จำเป็น
จุดนี้ก็คือให้เอาค่าเขียนลงไปใน DB ตรงๆ แล้วส่งค่า pass กลับเพื่อบอกว่าสำเร็จหรือไม่
« แก้ไขครั้งสุดท้าย: 30 ก.ย. 2007, 16:57 น. โดย X Saint » บันทึกการเข้า
ส่วนการแสดงผล

ส่วน Flash

โค้ด:
var urlRead:String = "http://www.x-sense.com/project/asExam/xmlDB/cmtRead.php";
var lvComment:LoadVars = new LoadVars();
var xmlComment:XML = new XML();
xmlComment.ignoreWhite = true;

function getNodeText(inNode:XMLNode, tagName:String):String {
if (inNode.nodeName == tagName) {
return inNode.firstChild.toString();
} else if (inNode.nextSibling != null) {
return getNodeText(inNode.nextSibling, tagName);
}
}

function dispData(xmlData:XMLNode):Void {
var aItem:Array = xmlData.childNodes;
for(var j:Number=0;j<aItem.length;j++) {
var sName:String = getNodeText(aItem[j].firstChild, "name");
var sComment:String = getNodeText(aItem[j].firstChild, "comment");
dispComment.htmlText += "<b>Name</b> : "+ sName+"\n";
dispComment.htmlText += "<b>Comment</b> : "+ sComment+"\n\n";
}
}

lvComment.onLoad = function(success:Boolean) {
if(success) {
dispComment.text="";
xmlComment.parseXML(this.flashVar);
dispData(xmlComment.firstChild);
} else {
dispComment.text="error";
}
};

btnReload.onPress = function() {
lvComment.load(urlRead);
}

lvComent.load(urlRead);

ในส่วนนี้นอกจากใช้ออปเจ็ค loadVars แล้ว จะเห็นว่าผมสร้างออปเจ็ค XML ขึ้นมาด้วย เพื่อใช้รับค่าที่ได้กลับมาจาก PHP ครับ
การทำงานจริงๆ จะอยู่ที่ส่วนฟังก์ชั่น dispData ที่ถูกเรียกใช้เมื่อได้มีการโหลดค่าจาก PHP กลับเข้ามายัง onLoad ของ lvComment แล้ว แล้วก็เอาค่า XML มากระจายเข้าให้อยู่ในรูป Array แล้วแสดงผลออกไปบน Text Field ที่วางไว้

กลไกตรงนี้เอาฟังก์ชั่นสั้นๆ getNodeText จากตัวอย่างก่อนกลับมาใช้ตรงๆ โดยไม่ต้องแก้อะไรเลย ฟังก์ชั่นนี้ทำมาให้เพื่อสะดวกในการดึงค่าของ TAG ที่ระบุชื่อเข้าไปออกมาให้กับตัวแปรชั่วคราวเพื่อแสดงผลครับ

ส่วน PHP
โค้ด:
<?
//CONNECT DB
require("connection.inc.php");

$qstring = "SELECT * FROM testComment ORDER BY id";
$query = mysql_query($qstring) or die ("flashVar=error");

$record="<?xml version=\"1.0\"?>";
$record.="<recordSet>";
while($rec = mysql_fetch_array($query)) {
$record.="<record>";
$record.="<name>".$rec['name']."</name>";
$record.="<comment>".$rec['comment']."</comment>";
$record.="</record>";
}
$record.="</recordSet>";

print "flashVar=".urlencode($record);
?>

ส่วน PHP นี่ก็จะ query ค่าทั้งหมดใน table นั้นออกมา แล้วมาจัดเรียงค่าให้อยู่ในรูป XML แบบง่ายๆ แล้วก็ส่งกลับให้อยู่ภายในตัวแปร flashVar ซึ่ง Flash จะมองเห็นเป็น String แล้วเราก็เอาไป parseXML เพื่อเปลี่ยนให้อยู่ในรูป XML ภายใน Flash ครับ
« แก้ไขครั้งสุดท้าย: 01 ต.ค. 2007, 01:59 น. โดย X Saint » บันทึกการเข้า
ตัว amfphp นั้นติดไว้ก่อนครับ เครื่องผมมีแต่ flash cs3 ซึ่ง adobe เอา flash remoting ออกไปแล้ว
จริงๆ เหมือนว่าจะเอา class lib จาก flash 8 มาใส่ได้ แต่เครื่องผมก็ไม่มี flash 8 แล้วเช่นกัน เลยยังไม่ได้ทำครับ
ถ้าใครมีก็ขอไฟล์หน่อยนะครับ  ไหว้
บันทึกการเข้า
หน้า: 1 [2] 3
 
 
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines | Thai language by ThaiSMF Valid XHTML 1.0! Valid CSS!