|
|
|
ถามเรื่องการบันทึกค่าการชำระเงินจาก checkbox ลงฐานข้อมูลแล้วแสดงข้อความว่าจ่ายแล้ว ไม่ทราบว่าทำยังไงคะ อยากได้แนวทางค่ะ |
|
|
|
|
|
|
|
ตรง value ของ checkbox ให้กำหนดเป็น id ของแถวนั้นๆ ครับ ถ้าตามรูปก็ให้เป็นค่าของ ReservID
และ name ของ checkbox ให้กำหนดเป็น array เช่น paid[]
จะได้ input ประมาณนี้
<input name="paid[]" type="checkbox" value="ค่าของ ReservID" />
และในโค้ดที่ submit ให้วนลูป array ดังกล่าวเพื่อ escape ค่า และทำให้เป็น string
และ UPDATE ด้วยเงื่อนไขโดยใช้ IN จะทำให้ UPDATE ทุกแถวในคราวเดียว
Code (PHP)
<?php
// ตรวจสอบว่ามีการเลือก checkbox หรือไม่ และตรวจสอบให้แน่ใจว่ามันเป็น array
if (isset($_POST['paid']) && is_array($_POST['paid'])) {
$ids = $_POST['paid'];
// ทำ array $_POST['paid'] ให้เป็น string ที่คั่นด้วย , เพื่อสามารถนำไปใช้กับ IN ได้
// วนลูป $ids ทุกตัว by reference
foreach ($ids as &$id) {
// ทำให้เป็น string ที่ครอบด้วย ' และ escape ค่าเพื่อป้องกัน SQL Injection
$id = "'" . mysql_real_escape_string($id) . "'";
}
// ทำ array ให้เป็น string โดยการเชื่อมด้วย ,
$ids = implode(',', $ids);
mysql_query("UPDATE `ชื่อตาราง` SET `payment` = '1' WHERE `ReservID` IN ($ids)");
}
|
|
|
|
|
Date :
2013-07-31 21:46:24 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
และตอนแสดงผล ก็ใส่เงื่อนไขลงไปว่า หากคอลัมน์ payment ของแถวนั้น ไม่เท่ากับค่าว่าง หรือเท่ากับ '1' ก็ให้แสดงคำว่าจ่ายแล้ว
Code (PHP)
<?php
if ($row['payment'] === '1') {
?>
จ่ายแล้ว
<?php
} else {
?>
<input name="paid[]" type="checkbox" value="<?php echo $row['ReservID']; ?>" />
<?php
}
?>
|
|
|
|
|
Date :
2013-07-31 21:49:35 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใบ้หน้าเดียวก็ได้ ใช้วิธีเช็คเอาว่าตรงส่วนที่แสดงสถานะว่าจ่ายแล้วยังไม่จ่าย
ก็เช็คเอาว่า ถ้าจ่ายแล้วให้แสดงข้อความนี้ และถ้ายังไม่จ่ายก็ให้แสดง checkbox แบบนี้น่ะ
|
|
|
|
|
Date :
2013-08-01 01:06:29 |
By :
บังเอิญผ่านมาเห็น |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โห คุณน้อง เล่นก็อปไปวางเลยเหรอครับ คือผมให้เป็นแนวทางนะ
ส่วน UPDATE ควรอยู่ก่อนการแสดงผลครับ เอาไปไว้ตรงนั้นไม่ถูกต้องเท่าไหร่
ควรย้าย บรรทัด 110 ตรงส่วนที่ผมเขียนให้มาไว้ก่อน <html> เลย
และบรรทัด 102
Code (PHP)
<td><div align="center">
<label>
<input name="paid[]" type="checkbox" value="ReservID" />
</label>
</div></td>
นี่ก็อปมาวางเฉยๆ ไม่ได้ครับ คือตรง ReservID ผมหมายถึง ให้น้องใส่ค่าคอลัมน์ ReservID ลงไป
ซึ่งผมไม่ได้เขียนให้ชัดเจนเนื่องจากก็ไม่รู้อยู่ดีว่าน้องใช้ตัวแปรชื่ออะไร แต่ตอนนี้รู้แล้ว
input ควรเป็นแบบนี้
<input name="paid[]" type="checkbox" value="<?php echo $objResult['ReservID']; ?>" />
และที่น้องถามว่าต้องทำหน้าใหม่หรือไม่นั้น ไม่ต้องทำครับ ซึ่งผมก็ได้ให้แนวทางไว้แล้วเหมือนกันใน No.2
ดังนั้นส่วนแสดงผล checkbox ที่สมบูรณ์จะเป็นแบบนี้ (บรรทัด 102)
<td><div align="center">
<?php
if ($objResult['payment'] === '1') {
?>
จ่ายแล้ว
<?php
} else {
?>
<input name="paid[]" type="checkbox" value="<?php echo $objResult['ReservID']; ?>" />
<?php
}
?>
</div></td>
|
|
|
|
|
Date :
2013-08-01 10:11:37 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|