GORAGOD.com

freelance, web developer, web designer, hosting, domain name

ผมจะทำยังไงเพื่อแปลงค่าตัวแปรจาก javascript เป็น PHP

ผมจะทำยังไงเพื่อแปลงค่าตัวแปรจาก javascript เป็น PHP


เป็นโค้ดคำนวณอายุครับ ซึ่งโค้ดหน้านี้ จะถูกดึงไปใช้ในหน้าหลัก ซึ่งตัวแปร วันเดือนปีเกิด จะถูก select จากฐานข้อมูลแล้วทำการแปลงค่า เพื่อใช้ในการคำนวณ

 



<script>

var offset = new Date();

/*---------------- กรณีที่ไม่มีกำหนดตัวตั้ง จะใช้วันที่ปัจจุบันเป็นตัวตั้งแทน (ไม่ต้องลบ)---------*/

var nowDate =offset.getDate();

var nowMonth =offset.getMonth();

var nowYear = offset.getFullYear()+543;

/*---------------- ----------------------------------------------------------------------------------*/

function getAge(){  

var Age = document.getElementById('Age').value=years

var bDate = document.getElementById('bDate');    

var valDate = bDate.value;    

var bMonth = document.getElementById('bMonth');    

var valMonth = bMonth.value;    

var bYear = document.getElementById('bYears');    

var valYear = bYear.value;    

if(valDate!='null' && valMonth!='null' && valYear!='null'){         

offset.setFullYear(nowYear-valYear);         

offset.setMonth(nowMonth-valMonth);        

offset.setDate(nowDate-valDate);        

var years =offset.getFullYear();   

var month =offset.getMonth();        

var day=offset.getDate();  



var Age = document.getElementById('Age').value=years





document.getElementById('Age').value=years+"  ปี  "+ month+" เดือน "+day+" วัน"<< ค่าตัวนี้สามารถแปลงเป็น PHPได้ด้วยวิธ๊ใดครับ

document.getElementById('Age1').value=years   // แสดงแค่ ปี

}else{        

document.getElementById('Age').value='';    

}

}

 </script>

<input type="hidden" name="bDate"  id="bDate" value="<? echo $bd ?> ">

<input type="hidden" name="bMonth" id="bMonth" value="<? echo $bm - 1 ?>" >

<input type="hidden" name="bYears" id="bYears" value="<? echo $by  ?>" >





<input type="text" name="Age" id="Age">

<script>getAge();</script>





***จากการหาข้อมูลในเบื้องต้นพบว่าหากการส่งค่าผ่าน Form สามารถ echo ค่าเป็นตัวแปร PHP ได้เลย

แต่ในกรณีนี้ เป็นการรับค่าและแสดงผลในหน้าเดียว มีวิธีการใดบ้างครับ รบกวนดูด้วย

 


12 ก.พ. 2554 7 12,195


งงกับคำถาม..



อย่างแรก เลย ไม่ลองใช้ PHP ดูละครับ ถ้ามันต้องมาจากฐานข้อมูล จากตัวอย่าง ก็ทำเหมือนกับ input ทั้ง 3 ตัวครับ bDate,bMonth,bYears



อย่างที่ 2 ถ้าต้องการใช้ Javascript และ Javascript ด้านบนทำงานได้ถูกต้อง ลองเรียกฟังก์ชั่นหลังจากโหลดเสร็จดูครับ



<body onload="getAge()">



ถ้าผมเข้าใจไม่ถูก อธิบายให้ชัดเจนกว่านี้หน่อยครับ....


#1


ขอตอบนะครับว่า ที่ไม่ใช้ PHP เพราะว่า   Javascript ตัวนี้ สามารถแสดงผลทันทีหลังจากรับค่าไปแล้ว

ส่วนโค้ดนี้ แต่เดิมจะทำงานหลังจากที่ผุู้ใช้ได้ทำการเลือก วัน เดือน ปี ครบ แต่ผมได้ทำการดัดแปลง

ให้เข้ากับการทำงาน ที่ต้องดึงข้อมูลจากฐานข้อมูล  โดยค่าวันเดือนปี จะถูกเก็บไว้ในตัวแปร $bdate_m

และทำการแยกออกมาดังนี้ครับ



$rows1['birth_date'] ="$bdate_m";       

$birth_date = explode('-', $rows1['birth_date']);       

$bd = $birth_date[2];       

$bm = $birth_date[1];        

$by = $birth_date[0];



การทำงานนี้อยู่ในหน้าหลักครับ แล้วจะ include หน้าที่ใช้คำนวณเข้าไป ผลที่ได้ก็จะแสดงทันที

ส่วนที่ผมต้องการทราบคำตอบก็คือ จะเป็นไปได้ไหม  ที่ผมจะแปลงค่าตัวแปร java ให้เป็น PHP

ในบรรทัดนี้ น่ะครับ  document.getElementById('Age').value=years+"  ปี  "+ month+" เดือน "+day+"วัน"

เพราะที่ผมศึกษามา จะพบแต่การส่ง ผ่านฟอร์ม ข้ามหน้าครับ ถึงจะecho ค่าที่เป็น PHPออกมา ยังไงรบกวนตอบด้วยนะครับ

โปรเจคผมเหลือเรื่องนี้เรื่องเดียวครับ อีกอย่างผมไม่เคยเรียน java เลยครับ เลยไม่มีความรู้ ด้านการทำงานเท่าใดนั รบกวนด้วยนะครับ

 


#2

ก็ยังไม่เข้าใจเหมือนเดิมว่าจะทำอะไร...



ทำความเข้าใจก่อนว่า PHP และ Javascript ทำงานกันคนละที โดยที่ PHP ทำงานก่อน (บน Server) แล้วกลับมายัง Browser ซึ่ง Browser จะ แสดงผล แล้วถึงจะเริ่มทำงาน Javascript



ดังนั้นในขั้นตอนปกติ จะเห็นได้ว่า เราไม่สามารถส่งค่าจาก Javascript กลับไปยัง PHP ได้เลย (เพราะมันทำงานกันคนละที)



ทีนี้ถ้าจะเป็นต้องส่งค่ากลับไปยัง PHP (ผมก้ไม่รู้ว่าจะส่งไปเพื่ออะไร...)



1.ถ้าต้องการนำอายุที่ได้ ไปคำนวณต่อ และแสดงผลในส่วนอื่นๆ ผมแนะนำให้คำนวณอายุด้วย PHP ซึ่งแน่นอน หลังจากนั้น PHP จะนำไปใช้ต่อได้ทันที (ไม่แนะนำให้ใช้ Javascript)



2.Javascript จะมีประโยชน์ หาก มีการเปลี่ยนวันเดือนปีเกิด บนหน้าเว็บ แน่นอน มันสามารถคำนวณได้ทันที และหากต้องนำอายุไปใช้ต่อ ก็แนะนำให้ทำทุกอย่างที่ต้องทำด้วย Javascript ทั้งหมด



3.หาเราจำเป็นต้องส่งค่าอายุกลับไปบันทึกลงฐานข้อมูล หรือคำนวณอื่นไดด้วย PHP อันนี้ต้องพึ่ง Ajax แล้ว (ห้ามถามต่อ...อ่านบทความบนเว็บได้)



ในทางปฏิบัติ เพื่อให้โค้ดสมบูรณ์ เราอาจจำต้องคำนวณทั้งในฝั่งของ PHP และ Javascript อย่าได้ขี้เกียจ
#3


สวัสดีครับ.... ขอร่วมแชร์นะครับ

ผมเข้าใจคำถามนี้ดี แต่....



จากที่ดูคิดว่าอยากให้คำนวนผลออกมาทันที่ใช่มั้ยครับ จากคำที่ว่า "สามารถแสดงผลทันทีหลังจากรับค่าไปแล้ว" (คำพูดนี้หมายถึงรับค่าจากหน้าจอ) แต่คำถามนี้เริ่มต้นจากคำที่ว่า "วันเดือนปีเกิด จะถูก select จากฐานข้อมูล" (คำพูดนี้เป็นการรับค่ามาจาก server)



จากโจทย์นี้เลยตีความว่า birth_date จะมาจากฐานข้อมูล พอเปิดหน้านี้แล้วนำมาแยกใส่ Input ที่ Hidden ไว้ แล้วคุณ "catbank" ก็ต้องการคำนวนอายุมาตอนที่แสดงหน้านี้ใช่มั้ยครับ

ถ้าใช่ ผมมีคำแนะนำสองแบบ

 



1. คำนวนอายุได้เลยตั้งแต่ Query ซึ่งจะง่ายมากแล้วก็นำมาใช้ได้เลยตอนเปิดหน้านี้

2. Query เพื่อให้ได้ฟิลดิ์ birth_date มาหน้านี้ก่อน แล้วเขียน function (PHP) เพื่อคำนวนอายุ แล้วนำมาแสดงที่หน้านี้เลยได้เหมือนกัน

 



เหตุผลนะครับ สองข้อที่แนะนำเป็นการทำงานที่ระดับ server เท่านั้น เนื่องจากหน้าหลัก select วันเดือนปีเกิดมาเพื่อคำนวน  เพราะฉะนั้นก็ควรที่จะคำนวนมาตั้งแต่ตอนอยู่ที่ server เลย

 



แต่ที่ยังสงสัยอยู่ก็คือ ดูเหมือนคุณ  "catbank" อยากจะคำนวนมันหลังจากโหลดหน้าหลักขึ้นมาเสร็จแล้ว ผมยกตัวอย่างงานที่จะต้องคำนวนทันที่ในหน้าปัจจุบันให้ลองดูนะครับ

 



เช่น ผมต้องการคำนวนอายุหลังจากที่ผมกรอกข้อมูล วันเดือนปีเกิด ลงใน Text box ตัวหนึ่ง ซึ่งโจทย์ของผมคือ

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

 



ส่วนคำถามเรื่องการแปลงค่าตัวแปร Java เป็น PHP ในบันทัด document.getElementById('Age').value=years+"  ปี  "+ month+" เดือน "+day+"วัน"



ตรงนี้ค่าที่ได้มันจะไปปรากฏใน Input ที่มีไอดี Age อยู่แล้ว ซึ่งสามารถนำค่าที่ได้ไปใช้ได้เลย .... แต่ถ้าต้องการใช้ value นี้ในหน้าปัจจุบันเลยก็ต้องใช้ Javascript เรียกอยู่ดีครับ

 



แนะนำว่าให้เรียบเรียงลำดับเหตุการณ์ของการทำงานให้ถูกต้องก่อน เพื่อจะใช้ Javascript หรือ PHP ให้เหมาะสมกับสถานการณ์


#4


ขอบคุณ คำตอบของ คุณ goragod และคุณ BlueEye นะครับ

ขอบตอบคุณ goragod ก่อนนะครับ ว่า ขอบคุณทujให้ความรู้ แก่ผม ในเรื่องการทำงาน ระหว่าง PHP และ javascript

ตอนนี้ผมเข้าใจดีแล้วครับ ผมจะพยายามให้มากกว่านี้ครับ ขอบคุณครับ



ส่วน ที่คุณ BlueEye ได้ตอบนั้น คุณเข้าใจความคิดของผมเป็นอย่างดีครับ ในส่วนแรกของการทำงานนั้น

เมื่อทำการเลือกรายชื่อสมาชิกแล้วโปรแกรมจะเลือก ข้อมูล  birth_date มาจากฐานข้อมูลซึ่ง โค้ดการคำนวณนี้ก็ถูกดึงไปใช้ร่วมด้วย 

จึงได้ค่าตัวแปร เพื่อใช้ในการคำนวณครับ ปัญหาที่ผมอยากแปลงค่านั้น เป็นเพราะต้องการนำ จำนวนเดือนและปี ไปใช้ในการคำนวณการรับเงินสวัสดิการของสมาชิกกองทุนครับ



สำหรับคำแนะนำที่ให้ คำนวนอายุได้เลยตั้งแต่ Query ทำได้ด้วยวิธีใดครับ รบกวนอธิบายเพิ่มด้วยนะครับ



ตอนนี้ผมแก้ปัญหาเฉพาะหน้าโดยใช้ datediff ครับ โดยการแสดงผลจากโค้ดที่ผมเอามาให้ดูนี้ ใช้เพื่อแสดงผลเพียงเท่านั้นครับ

ผมเป็นผู้เริ่มศึกษา น่ะครับ ความรู้ที่มีอาจไม่มากนะ ก็ขอขอบคุณ แก่ทุกท่านที่ให้ความรู้ มา ณ ที่นี้ด้วยครับ

 


#5


datediff ก็ใช้ได้ครับ อันนี้เป็นอีกแบบนึง คือใช้ timestampdiff

 



SELECT

timestampdiff(year, birth_date, curdate()) as cnt_year,

timestampdiff(month, birth_date, curdate())-(timestampdiff(year, birth_date, curdate())*12) as cnt_month,

timestampdiff(day, date_add(birth_date, interval (timestampdiff(month, birth_date, curdate())) month), curdate()) as cnt_day

FORM ....

WHERE ....


#6


ขอบคุณครับ ผมตัดสินใจใช้ datediff ไปแล้ว ครับ T T


#7
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^