สอบถามการเขียนฟังก์ชั่น ให้ราคาอยู่ในรูปแบบ 1,xxx,xxx ครับ

เริ่มโดย sakdalll, 11 พฤศจิกายน 2012, 23:14:42

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

sakdalll

คืออยากจะตัดราคาให้เป็นแบบนี้ครับ

1,13XX,XXX.XX
5XX,XXX.XX

จะต้องเขียนฟังก์ชันยังไงครับผม รวมจุดทศนิยมด้วยเป็น 7 หลักอะครับ

ขอบคุณล่วงหน้าครับผม

longdoodi

<?php

$number = 1234.56;

// english notation (default)
$english_format_number = number_format($number);
// 1,235

// French notation
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56

$number = 1234.5678;

// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57

?>

ที่มา PHP.net ครับ  :wanwan007:

sakdalll

คือลองเอาไปรันดูแล้วอะครับ พูดตรงๆ ครับประยุกต์ไม่เป็นเลย งงมากครับ ฮ่าๆๆๆ รบกวนท่านชี้แนะด้วยครับผม  :wanwan031: :wanwan031: :wanwan031:

Bigguide

ภาษาอะไรครับ

ถ้า PHP ก็ number_format($myIntvalue)

การนำไปใช้ก็แค่เปลี่ยน $myIntvalue ไปเป็น ค่าที่คุณต้องการให้มันแสดง แค่นั้นเองครับ
ยกตัวอย่าง
number_format(1234567);
มันก็จะแสดงออกมาเป็น 1,234,567
I'm a dreamer

Paodekcal

ผมว่า เจ้าของกระทู้จะทำแบบนี้มากก่วา

input ราคา
11325456.50
511022.00

output ราคา
1,13XX,XXX.XX
5XX,XXX.XX

ถ้าเป็นแบบนี้แล้วผมคิด Step ออกแบบนี้

11325456.50
---------------------------------- ผ่านพวกฟังก์ชันปัดเสษ
11300000.00
---------------------------------- จัดรูปแบบตัวเลขหลักพัน แล้วแปลงเป็นสตริง
11,300,000.00
---------------------------------- แทนค่าเลข 0 ด้วย X
11,3XX,XXX.XX

sakdalll

อ้างถึงจาก: Paodekcal ใน 11 พฤศจิกายน 2012, 23:24:51
ผมว่า เจ้าของกระทู้จะทำแบบนี้มากก่วา

input ราคา
11325456.50
511022.00

output ราคา
1,13XX,XXX.XX
5XX,XXX.XX

ถ้าเป็นแบบนี้แล้วผมคิด Step ออกแบบนี้

11325456.50
---------------------------------- ผ่านพวกฟังก์ชันปัดเสษ
11300000.00
---------------------------------- จัดรูปแบบตัวเลขหลักพัน แล้วแปลงเป็นสตริง
11,300,000.00
---------------------------------- แทนค่าเลข 0 ด้วย X
11,3XX,XXX.XX

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

Paodekcal

อ้างถึงจาก: sakdalll ใน 11 พฤศจิกายน 2012, 23:31:00
อ้างถึงจาก: Paodekcal ใน 11 พฤศจิกายน 2012, 23:24:51
ผมว่า เจ้าของกระทู้จะทำแบบนี้มากก่วา

input ราคา
11325456.50
511022.00

output ราคา
1,13XX,XXX.XX
5XX,XXX.XX

ถ้าเป็นแบบนี้แล้วผมคิด Step ออกแบบนี้

11325456.50
---------------------------------- ผ่านพวกฟังก์ชันปัดเสษ
11300000.00
---------------------------------- จัดรูปแบบตัวเลขหลักพัน แล้วแปลงเป็นสตริง
11,300,000.00
---------------------------------- แทนค่าเลข 0 ด้วย X
11,3XX,XXX.XX

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

ต้องเขียนเองเลยครับ
ไม่มีฟังก์ัชันสำเร็จหรอก ผมว่านะ (เอ หรือว่ามี เดี๋ยวผมเขียนแจกเลยดีไหมเนี่ย?)

คุณลองวางอัลกอริทึมก่อนครับ ตอนแรก ใจเย็นๆ กำหนด input ว่าราคาสินค้านั้น มีช่วงจากไหนถึงไหน คุณจะทำ X กี่ตัว เขียนมาให้ละเอียดก่อนนะครับ

จากนั้นหาฟังก์ชัน เกี่ยวกับการปัดเศษครับ ไม่แน่ใจว่าฟังก์ชัน ceil นี่แหละ ถ้าเป็น PHP นะ มันจะปัดเศษ ขึ้น หรือ floor มันจะปัดเศษลง

จากนั้นก็ใช้ number_format อย่างที่เพื่อนๆ ในกระทู้บอกแหละครับ เพื่อใส่ comma

จากนั้นก็แปลงเป็นสตริง แล้วใช้ฟังก์ชัน str_replace(ราคาเดิม , แทนที่ '0', ด้วย 'x');

ลองดูนะครับ

sakdalll

อ้างถึงจาก: Paodekcal ใน 11 พฤศจิกายน 2012, 23:37:35
อ้างถึงจาก: sakdalll ใน 11 พฤศจิกายน 2012, 23:31:00
อ้างถึงจาก: Paodekcal ใน 11 พฤศจิกายน 2012, 23:24:51
ผมว่า เจ้าของกระทู้จะทำแบบนี้มากก่วา

input ราคา
11325456.50
511022.00

output ราคา
1,13XX,XXX.XX
5XX,XXX.XX

ถ้าเป็นแบบนี้แล้วผมคิด Step ออกแบบนี้

11325456.50
---------------------------------- ผ่านพวกฟังก์ชันปัดเสษ
11300000.00
---------------------------------- จัดรูปแบบตัวเลขหลักพัน แล้วแปลงเป็นสตริง
11,300,000.00
---------------------------------- แทนค่าเลข 0 ด้วย X
11,3XX,XXX.XX

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

ต้องเขียนเองเลยครับ
ไม่มีฟังก์ัชันสำเร็จหรอก ผมว่านะ (เอ หรือว่ามี เดี๋ยวผมเขียนแจกเลยดีไหมเนี่ย?)

คุณลองวางอัลกอริทึมก่อนครับ ตอนแรก ใจเย็นๆ กำหนด input ว่าราคาสินค้านั้น มีช่วงจากไหนถึงไหน คุณจะทำ X กี่ตัว เขียนมาให้ละเอียดก่อนนะครับ

จากนั้นหาฟังก์ชัน เกี่ยวกับการปัดเศษครับ ไม่แน่ใจว่าฟังก์ชัน ceil นี่แหละ ถ้าเป็น PHP นะ มันจะปัดเศษ ขึ้น หรือ floor มันจะปัดเศษลง

จากนั้นก็ใช้ number_format อย่างที่เพื่อนๆ ในกระทู้บอกแหละครับ เพื่อใส่ comma

จากนั้นก็แปลงเป็นสตริง แล้วใช้ฟังก์ชัน str_replace(ราคาเดิม , แทนที่ '0', ด้วย 'x');

ลองดูนะครับ

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

MapTwoZa

ปรกติ ไม่ค่อยได้เขียน php ฮะ เลยใช้คำสั่งพื้นๆละกัน

function tranformNumber($number, $digit_count){

  // $digit_count นี่คือจำนวนหลักที่จะให้ปัดครับ เช่น 3 นี่คือปัดหลัก หน่วย สิบ และร้อยเป็น x ครับ
  $digit_count = intval($digit_count);

  $devider = 1;
  for($i=0; $i<$digit_count; $i++){
     $devider = $devider*10;
  }

  $number = strval($number);
  ($int,$float) = split(".",$number);
  $newint = strval(number_format(intval($int)/$devider * $devider));

  $result = str_replace("0", "x", $newint);

  for($i=0; $i<strlen($float);$i++){
     if($i==0) {$result = $result.".";}
     $result = $result."x"
  }
  return $result;
}


ผิดพลาดตรงไหน ขอภัยด้วยครับ

edit เพิ่ม $devider ผมใช้คำผิดนะครับ จริงๆต้องใช้คำว่า $divider มาจาก divide แปลว่าหารครับ ปล. eng กากไปนิด
Good code quality Developer :D

silverlose


nociouz


moshikub1

ผมมองว่า

นำตัวเลขมาเป็น คอมม่าให้เรียบร้อยก่อนครับ

จากนั้นก็ ค่อยๆทอยมากี่หลักก็ว่าไป ใช้

$str[index] = "x";

กำหนดลง เลยก็ได้ครับ
[direct=http://xn--72c6afaabg9f6ca6ci1b0pmcr0c.com]งานออนไลน์[/direct] | [direct=http://www.xn--l3cuicec1bie1f0ac4mg5cze.com]รายได้เสริม[/direct] |   [direct=http://www.xn--l3cuicec1bie1f0ac4mg5cze.com]รายได้พิเศษ[/direct] | [direct=http://xn--12cbfs2fia1ehdz2gga2etb5bxa7l1d6c8e.com/]ธุรกิจออนไลน์[/direct] | [direct=http://www.niyombrand.com]ชุดเวียดนาม[/direct]

รับปั่น UIP ละ 6 บาทต่อเดือน เช่น 1000UIP/วัน = 6000 บาท จำนวนเยอะต่อรองราคาได้ เป็นคนไทยคนจริง 99%

รับทำ Autopost CURL หน้าเว็บได้ทุกรูปแบบครับ PM มาได้เลย ราคาสบายๆ

tcool

ที่ผมใช้อยู่มันเป็นแบบนี้ครับ

echo "            <b>ราคา <font color=\"#FF0000\">",number_format($price, 2, '.', ','),"</font> บาท</b>\n";

ไม่รู้ว่าตรงตามความต้องการหรือเปล่าครับ

earncurrency


$str_inut='123456789';

$str_inut=number_format($str_inut,2);
$str_inut=str_split($str_inut);
for($i=1; $i<sizeof($str_inut); $i++){
if( $str_inut[$i]!==',' && $str_inut[$i]!=='.'){
$str_output.='X';
}else{
$str_output.=$str_inut[$i];
}
}
$str_output=$str_inut[0].$str_output;

echo $str_output;
[direct=http://www.marketviva.com]เปิดร้านฟรี[/direct]

adidog

Certain Dri [direct=http://www.ishiclub.com/]Certain Dri[/direct]
คุณแม่มือใหม่ [direct=http://www.mamyget.com/]คุณแม่มือใหม่[/direct]

earncurrency

ลืมไปว่าต้องการให้แสดง "X" 7 หลักรวมจุดทศนิยม แก้ให้ใหม่ละครับ ต้องการ X กี่หลักก็ใส่ตรง parameter ที่ 2 ได้เลย


function x_format($number,$x_digit=7){
$number=str_split(number_format($number,2));
$count=$x_digit;
$return='';

for($i=sizeof($number)-1; $i>=0; $i--){
if( $number[$i]!==',' && $number[$i]!=='.'){
$return=($count<=0?$number[$i]:'X').$return;
$count--;
}else{
$return=$number[$i].$return;
}
}
return $return;
}

echo x_format('123456789.12',5);
[direct=http://www.marketviva.com]เปิดร้านฟรี[/direct]

x-script

php มันก็ทำฟังชั่นมาให้แล้วนี่ครับ number_format อะ
จะไปเขียนใหม่ทำไมอะครับ = =

$100perday

FORM INPUT
<form method="post" action="testvalue.php">
Price : <input type="text" "name=price" size="20"> <input type="submit" value="OK">
</form>

ไฟล์ testvalue.php

<?php
$priceinput=number_format($_POST[price],2,'.',',') ;
echo "$priceinput";
?>

หมายหตุ
1. กรอกผ่านฟอร์มมาจากค่า price
2. กำหนดตัวแปรชื่อ priceinput โดยรับค่า $_POST[price] ผ่านฟังชั่น number_format โดยให้กำหนด 2 เป็นทศนิยม 2 ตำแหน่ง
3. แสดงค่า priceinput ออกมา (ไฟล์ testvalue.php)

เช่น
กรอกผ่านฟอร์มเป็นตัวเลข 1750 เมื่อคลิกปุ่ม OK แล้ว จะไปยังหน้า testvalue.php จะแสดงออกมาทางหน้าจอเป็น 1,750.00

ด้่วยประการฉะนี้ เอิงงงเอยยยยย  :wanwan019:
เหนื่อย..

adjobb

อันนี้ได้ผลครับ +1 :D เก็บก่อนกำลังอยากได้

อ้างถึงจาก: $100perday ใน 13 พฤศจิกายน 2012, 06:04:42
FORM INPUT
<form method="post" action="testvalue.php">
Price : <input type="text" "name=price" size="20"> <input type="submit" value="OK">
</form>

ไฟล์ testvalue.php

<?php
$priceinput=number_format($_POST[price],2,'.',',') ;
echo "$priceinput";
?>

หมายหตุ
1. กรอกผ่านฟอร์มมาจากค่า price
2. กำหนดตัวแปรชื่อ priceinput โดยรับค่า $_POST[price] ผ่านฟังชั่น number_format โดยให้กำหนด 2 เป็นทศนิยม 2 ตำแหน่ง
3. แสดงค่า priceinput ออกมา (ไฟล์ testvalue.php)

เช่น
กรอกผ่านฟอร์มเป็นตัวเลข 1750 เมื่อคลิกปุ่ม OK แล้ว จะไปยังหน้า testvalue.php จะแสดงออกมาทางหน้าจอเป็น 1,750.00

ด้่วยประการฉะนี้ เอิงงงเอยยยยย  :wanwan019:


earncurrency

อ้างถึงจาก: x-script ใน 13 พฤศจิกายน 2012, 00:34:55
php มันก็ทำฟังชั่นมาให้แล้วนี่ครับ number_format อะ
จะไปเขียนใหม่ทำไมอะครับ = =

จขกท. เขาต้องการให้มันแสดง "X" 7 หลักครับ รวมทศนิยมด้วย ไม่ใช่ตัวเลข หมายถึงบังตัวเลข 7 ตัวสุดท้ายด้วย "X" ครับ
เช่น 123456789.00 ก็ให้แสดง 123,4XX,XXX.XX แบบนี้ครับ ไม่ใช่ 123,456,789.00
[direct=http://www.marketviva.com]เปิดร้านฟรี[/direct]