|
|
|
สอบถามเกี่ยงกับการ บวกและลบ ตัวเลขที่มีจำนวนเยอะๆครับ |
|
|
|
|
|
|
|
Code (PHP)
$num = '10000000000000000000';
$xp = '1';
echo $q1 = bcsub($num, $xp);
BCMath
|
|
|
|
|
Date :
2014-03-24 00:24:16 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับ
|
|
|
|
|
Date :
2014-03-24 08:40:47 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมเวลา UPDATE ฐานข้อมูลมันไม่ได้เหมือนที่ลบอ่ะครับ UPDATE เข้าไปได้10000000000000000000 เหมือนเดิมเลย
|
|
|
|
|
Date :
2014-03-25 15:15:47 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอดูโค๊ดทั้งหมด หน้าฟอร์มด้วยครับ
|
|
|
|
|
Date :
2014-03-25 17:58:09 |
By :
chaynuwong |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set type เป็น varchar ดูครับ
|
|
|
|
|
Date :
2014-03-25 20:34:12 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type คุณกำหนดไว้พอรึเปล่าครับ?
|
|
|
|
|
Date :
2014-03-25 22:20:50 |
By :
itpcc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
if (isset($_POST['transfer'])) {
$nick = trim(mysql_real_escape_string(check($_POST['nick'])));
$score = $_POST['score'];
if (!user_inf($nick)) {
err('ไม่พบผู้รับข้อความนี้ค่ะ.');
}
elseif (empty($score)) {
err('กรุณาใส่จำนวนคะแนนสำหรับการโอนค่ะ.');
}
else if(!isinteger($score)){
err('กรุณาใส่จำนวนคะแนนสำหรับการโอนค่ะ.');
}
elseif ($score > $us['score']) {
err('คะแนนของท่านไม่เพียงพอสำหรับการโอนค่ะ.');
} else {
$a = $us['score'];
$b = $score;
$c = bcsub($a, $b);
mysql_query("UPDATE `us` SET `score` = '$c' WHERE `id` = '$us[id]' LIMIT 1");
msg('ท่านได้ทำการโอนคะแนนเรียบร้อยแล้วค่ะ.');
}
header('refresh: 3; url=member.php');
}
<form method="post" action="add_transfer.php">
<label>ผู้รับ.:</label><br/>
<input type="text" name="nick" value=""/>
<br/>
<label>จำนวนที่โอน:</label><br/>
<input type="text" name="score" value=""/>
<br/>
<input type="submit" name="transfer" value="โอน"/>
</form>
<hr/>
<a href="member.php">กลับระบบสมาชิก</a><hr/>
|
ประวัติการแก้ไข 2014-03-26 15:03:52 2014-03-26 15:04:23
|
|
|
|
Date :
2014-03-26 14:59:59 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`score` bigint(20) DEFAULT NULL
|
|
|
|
|
Date :
2014-03-26 15:09:17 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Echo ดู $a $b $c $us['id'] ว่ามาครบหรือเปล่า
จากนั้นลองเช็ค โค๊ด update ว่าผ่านหรือไม่
|
|
|
|
|
Date :
2014-03-26 15:29:26 |
By :
chaynuwong |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`score` varchar(250) DEFAULT NULL
|
|
|
|
|
Date :
2014-03-26 15:50:57 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองแล้วครับพี่ zaapscore.com มาตรงหมด แต่พอ update ก็ไม่ตรงกับค่าที่ได้จาก $c
|
|
|
|
|
Date :
2014-03-26 22:04:59 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมว่ามันต้องใส่วงเล็บนะ $q1 = ($num-$xp);
ส่วนเรื่อง UPDATE โค้ดตรง UPDATE คงผิด เพราะถ้าผลลัพธ์ $q1 ลบได้ การ UPDATE จะต้องได้ตามนั้น แสดงว่ามัน UPDATE ไม่ผ่าน
|
|
|
|
|
Date :
2014-03-26 22:51:41 |
By :
phun |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mysql_query("UPDATE `us` SET `score` = '$c' WHERE `id` = '$us[id]' LIMIT 1");
ลบ limit 1 ออก
เพิ่ม คำสั่งนี้ต่อท้าย
22.
Echo "UPDATE `us` SET `score` = '$c' WHERE `id` = '$us[id]' ";
รันดูครับ ว่าคำสั่งนี้ออกมาแสดง สมบูรณ์หรือเปล่า ถ้าดูแล้วยังไม่แน่ใจ ก็อปคำสั่งที่ echo เอาไปสั่งรัน กับฐานข้อมูลโดยตรงครับ
Mysql เลือกเมนู SQL แล้วpast ลง สั่งรันว่ามี error อะไรหรือเปล่า
จะว่าไป นี่ ได้ connect database หรือเปล่า
|
|
|
|
|
Date :
2014-03-27 04:36:57 |
By :
chaynuwong |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เวลาตัวเลขน้อยๆมันลบกันได้ปกติครับ แต่ถ้า $a = $us['score']; มีค่าเยอะๆลบแล้วก็ได้ค่าที่ไม่ตรงเวลาUPDATE อ่ะครับ
|
|
|
|
|
Date :
2014-03-27 13:36:06 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`score` varchar(250) DEFAULT NULL แบบนี้ก็เป็นเหมือนเดิมครับ ถ้า score มีจำนวนตัวเลขเยอะๆอ่ะครับ พี่ mangkunzo
|
|
|
|
|
Date :
2014-03-27 13:37:17 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองสั่งรันแบบที่ผมแนะนำยังครับ คำสั่ง
Code (PHP)
$SQL="UPDATE `us` SET `score` = '$c' WHERE `id` = '$us[id]' LIMIT 1";
mysql_query($SQL)or die($SQL);
ผลลองอัพเดทดู varchar(200) ก็ได้ปกติน่ะครับ ปัญหาน่าจะเป็นที่โค๊ด update
|
|
|
|
|
Date :
2014-03-27 14:03:52 |
By :
chaynuwong |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมว่า error แน่ๆตอนคิวรี่
ลองเอาไปรันใน phpMyAdmin แล้วแคปเจอร์ผลลัพธ์มาดูกันเลยดีกว่าครับ
|
|
|
|
|
Date :
2014-03-27 17:11:43 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จำเป็นต้องใช้ตัวเลขที่มีจำนวนหลักมากขนาดนั้นจริงๆหรือครับ ทำโปรแกรมคำนวณทางวิทยาศาสตร์เหรอครับ
|
|
|
|
|
Date :
2014-03-27 18:46:01 |
By :
เพื่ออะไร |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แสดงว่าโค้ดลบผ่านแล้ว.
งั้นลองยกตัวอย่างตัวเลขที่ UPDATE ไม่ผ่าน ให้พี่ๆเค้าช่วยดูละกัน. จะเป็นค่าติดลบก็ไม่น่าจะเกี่ยวเนอะ varchar(250) หรือจุดทศนิยมก็ไม่น่าจะใช่ varchar มันรองรับนี่นา
|
|
|
|
|
Date :
2014-03-27 18:59:33 |
By :
phun |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลบได้แล้วครับพี่ ข้อมูลมันแสดงผิดอ่ะครับ ในฐานข้อมูล99999999999999999999 แต่เวลาดึงข้อมูลมามันดันเป็น100,000,000,000,000,000,000 งง ขอบคุณพี่ๆทุกๆคนครับ
|
|
|
|
|
Date :
2014-03-27 21:53:00 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2014-03-27 22:24:59 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เห็นตัวเลขแล้วหัวเราะเลย 555 มันเวอร์ไปไหมครับท่านนนน เอาไปทำไร
ขอเดานะโค้ดมันปัดขึ้นครับ เช็คโค้ดตอนแสดงผลดูละกัน
99,999,999,999,999,999,999
100,000,000,000,000,000,000
|
|
|
|
|
Date :
2014-03-27 22:25:51 |
By :
phun |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณอีกครั้งครับพี่ๆได้หมดแล้ว
|
|
|
|
|
Date :
2014-03-27 22:45:04 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอสาเหตุ/วิธีแก้ หน่อย
|
|
|
|
|
Date :
2014-03-27 23:41:01 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
function numberformat($number)
{
return preg_replace('/(?<=\d)(?=(\d\d\d)+$)/', ',', $number);
}
ตอนแรกใช้ number_format($number) ลบกันแล้วดึงข้อมูลมาแสดงมันไม่ตรงกับฐานข้อมูลครับ เลยใช้ numberformat($number) ครับ
|
|
|
|
|
Date :
2014-04-06 23:34:32 |
By :
schoolbus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2014-04-07 08:56:53 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|