PHP Mysqli สอบถามเรื่องการ Update ผลการคำนวน 2 ตาราง โดยให้แสดงผลลัพธ์อีกตารางหนึ่ง
ลองดูครับ
Code (SQL)
update b
set b.MaterailDiff = a.qty- a.count
from mainTable a
inner join Showtable b on a.id = b.id
where a.desc = 'นม'
Date :
2019-12-06 17:26:35
By :
WWWWIN
พวกที่ชอบโพสต์โค้ดเป็นรูปนี่ผมสงสัยเหลือเกิน
มันง่ายกว่าการก๊อปโค้ดมาแปะเหรอครับ?
กลัวโค้ดจะรั่วไหลโดนขโมยเหรอครับ?
คนเขาจะตอบจะช่วยแก้ปัญหาให้ เขาต้องมานั่งพิมพ์ใหม่
อยากให้เขาช่วยเหลือแต่คนช่วยต้องช่วยทุกอย่างนะ
จะแก้ไขโค้ดอะไร ต้องเขียนใหม่ทั้งหมดแต่เริ่มเลย
แบบนี้มันไม่เห็นแก่ตัวมักง่ายเกินไปเหรอครับ?
ประวัติการแก้ไข 2019-12-06 22:02:41 2019-12-06 22:03:01
Date :
2019-12-06 22:02:02
By :
mr.v
index.php
<?php
ini_set('display_errors', 1);
error_reporting(~0);
$serverName = "localhost";
$userName = "root";
$userPassword = "1234567890";
$dbName = "projectx";
$conn = mysqli_connect($serverName,$userName,$userPassword,$dbName);
$sql = "SELECT * FROM material";
$query = mysqli_query($conn,$sql);
?>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col"> เลขวัสดุ</div></th>
<th scope="col">ชื่อ</div></th>
<th scope="col">จำนวนคงเหลือ</div></th>
<th scope="col">จำนวนนับ</div></th>
<th scope="col">ผลต่าง</div></th>
<th scope="col">แก้ไข</div></th>
</tr>
</thead>
<?php
while($result=mysqli_fetch_array($query,MYSQLI_ASSOC))
{
?>
<tr>
<td><?php echo $result["Material_id"];?></div></td>
<td><?php echo $result["Material_name"];?></td>
<td><?php echo $result["Material_qty"];?></td>
<td><?php echo $result["Material_Count"];?></div></td>
<td><?php echo $result["Material_diff"];?></td>
<td><a href="edit.php?Material_id=<?php echo $result["Material_id"];?>">Edit</a></td>
</tr>
<?php
ประวัติการแก้ไข 2019-12-06 22:30:28 2019-12-06 22:30:51 2019-12-06 22:31:16
Date :
2019-12-06 22:29:44
By :
Uhere
Edit.php
?>
<form action="save.php" name="frmAdd" method="post">
<div class="form-group">
<label for="Material_id">หมายเลขวัสดุ : </label>
<input type="hidden" name="Material_id" class="form-control" id="Material_id" value="<?php echo $result["Material_id"];?>"><?php echo $result["Material_id"];?>
</div>
<div class="form-group">
<label for="Material_name">ชื่อวัสดุ : </label>
<input type="hidden" name="Material_name" class="form-control" id="Material_name" value="<?php echo $result["Material_name"];?>"><?php echo $result["Material_name"];?>
</div>
<div class="form-group">
<label for="Material_qty">จำนวน : </label>
<input type="hidden" name="Material_qty" class="form-control" id="Material_qty" value="<?php echo $result["Material_qty"];?>"><?php echo $result["Material_qty"];?>
</div>
<div class="form-group">
<label for="Material_Count">จำนวนนับ : </label>
<input type="text" name="Material_Count" class="form-control" id="Material_Count" value="<?php echo $result["Material_Count"];?>"><?php echo $result["Material_Count"];?>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Date :
2019-12-06 22:32:49
By :
Uhere
Save.php
<?php
ini_set('display_errors', 1);
error_reporting(~0);
$serverName = "localhost";
$userName = "root";
$userPassword = "1234567890";
$dbName = "projectx";
$conn = mysqli_connect($serverName,$userName,$userPassword,$dbName);
$sql ="UPDATE material SET Material_diff = '".$_POST["Material_Count"]."'-'".$_POST["Material_qty"]."' Where Material_id='".$_POST["Material_id"]."' ";
$query = mysqli_query($conn,$sql);
if($query) {
echo "Record update successfully";
}
mysqli_close($conn);
?>
Date :
2019-12-06 22:33:23
By :
Uhere
ไอ่หรรม สองฟิวไม่ใช่สองtable 5555
Date :
2019-12-07 05:09:17
By :
Wwwwwin
การออกแบบดาต้าเบสในลักษณะนี้ โดยสร้างฟีลด์เก็บผลลัพธ์จากการคำนวณ มันไม่ได้ประโยชน์เท่าที่ควร
เวลาคุณคิวรี่ เพื่อเอาค่าที่ผลลัพธ์ไม่ได้ช้ามากนะครับ และประหยัดพื้นที่การเก็บไปได้ 1 ฟีลด์
อย่าเก็บอะไรที่มันไม่ได้ประโยชน์ในตาราง ใช้การคำนวณเพื่อแสดงผลดีกว่า เป็นเวลาปัจจบันมากกว่า
โครงสร้างการออกแบบงานในลักษณะงาน inventory ที่สำคัญๆ
1 ตารางรายชื่อสินค้า description
ชื่อสินค้า ประเภท หน่วยนับ ยอดยกมา(คงเหลือ) ฯลฯ
2 ตารางสินค้าเข้า tran in
รหัสสินค้า วันที่ จำนวน ราคา ฯลฯ
3 ตารางสินค้าออก tran out
รหัสสินค้า วันที่ จำนวน ราคา ฯลฯ
ส่วนที่เหลือ ใช้การคำนวณเอาทั้งนั้น
และปรับปรุงรายการทุกๆ เดือน/ไตรมาส/ปี ก็ว่ากันไป
Date :
2019-12-07 08:52:42
By :
Chaidhanan
เรื่องการออกแบบตารางมีคนแนะนำเยอะแล้ว
ส่วนเรื่องการอัพเดท 2 คอลัมน์ แบบนี้ก็น่าจะได้ไม่ใช่หรือ?
https://dev.mysql.com/doc/refman/8.0/en/update.html
Code (PHP)
$materialId = (int) (isset($_POST["Material_id"]) ? $_POST["Material_id"] : 0);
$materialCount = (int) (isset($_POST["Material_Count"]) ? $_POST["Material_Count"] : 0);
$sql = 'UPDATE `material` SET `Material_Count` = $materialCount, `Material_diff` = `Material_qty` - `Material_Count` WHERE `id` = $materialId'
// เปลี่ยนไปใช้ escape string, prepare (สำหรับ PDO) เอาเองนะ
Date :
2019-12-07 11:08:08
By :
mr.v
Load balance : Server 04