While Loop เพื่อ SELECT ข้อมูลแต่ข้อมูลออกมาไม่ครบ
Code (PHP)
$Total = 0;
$SumTotal = 0;
for($i=0;$i<=(int)$_SESSION["intLine"];$i++)
{
if($_SESSION["strProductID"][$i] != "")
{
$strSQL1 = "SELECT * FROM list_menu WHERE menu_id = '".$_SESSION["strProductID"][$i]."' ";
$objQuery1 = sqlsrv_query($conn,$strSQL1);
$objResult1 = sqlsrv_fetch_array($objQuery1,SQLSRV_FETCH_ASSOC);
$Total = $_SESSION["strQty"][$i] * $objResult1["menu_price"];
$SumTotal = $SumTotal + $Total;
$id = $objResult1["menu_id"];
$name = $objResult1["menu_name"];
$price = $objResult1["menu_price"];
$code = $objResult1["menu_code"];
$qty = $_SESSION["strQty"][$i];
$insert = "INSERT INTO order_detail (order_id,menu_code,menu_name,order_amount,order_price,emp_name,status) VALUES(?,?,?,?,?,?,?)";
$insert_params = array($max_id,$code,$name,$qty,$price,$empname,'0');
$query_insert = sqlsrv_query($conn,$insert,$insert_params);
////// เลือก สูตรอาหารที่ตรงกับ รายการอาหาร
$select_formula = "SELECT * FROM menu_formula WHERE menu_id='$id'";
$query_select_formula = sqlsrv_query($conn,$select_formula);
While($result_select_formula = sqlsrv_fetch_array($query_select_formula,SQLSRV_FETCH_ASSOC)){
$mat_qty = $qty*$result_select_formula["menu_formula_oz"];
$mat_name = $result_select_formula["menu_formula_name"];
////// เลือกวัตถุดิบที่ต้องการตัด จากชื่อที่ตรงกัน
$stock = "SELECT *FROM material_stock WHERE mat_name='$mat_name'";
$query_stock = sqlsrv_query($conn,$stock);
$result_stock = sqlsrv_fetch_array($query_stock,SQLSRV_FETCH_ASSOC);
$stock_qty = $result_stock["mat_qty"];
echo "$mat_name:$mat_qty=$stock_qty";
echo "<br>";
}
}
}
unset($_SESSION["strProductID"]);
ผลที่ออกมา
ข้อมูลที่ไม่แสดง
Tag : PHP
ประวัติการแก้ไข 2018-08-29 04:22:20 2018-08-29 04:22:45 2018-08-29 04:23:57 2018-08-29 05:09:22
Date :
2018-08-29 04:19:50
By :
pcthm06
View :
3392
Reply :
11
ลืม ORDER BY menu_formula_name asc
[font=Verdana]OR [/font]
GROUP BY menu_formula_name asc
ลองเลือกใช้ พื่นๆก่อนว่าได้ไหม
Code (SQL)
SELECT * FROM material_stock WHERE mat_name='$mat_name'
// ในส่วนตัว ชอบใช้ ID เป็นหลักในการ Where มากกว่าการใช้ Field Name
Ex: SELECT * FROM material_stock WHERE ID_material_stock = '$ID_material_stock'
แนะนำน่ะครับ
Date :
2018-08-29 08:23:17
By :
Hararock
อยากจะบอกว่า คุณเอา ภาษาไทย ไปแมท เพื่อแสดงผล มันเพี้ยนได้ อยากจะให้ออกแบบ database ให้ดีหน่อย
อ้างอิงอะไรก็พยายามใช้ตัวเลข มันจะชัดเจนกว่า เร็วกว่า เล็กกว่า
id name value
Date :
2018-08-29 08:49:34
By :
Chaidhanan
ขอบคุณครับตอนนี้ได้แล้ว
Code (PHP)
$Total = 0;
$SumTotal = 0;
for($i=0;$i<=(int)$_SESSION["intLine"];$i++)
{
if($_SESSION["strProductID"][$i] != "")
{
$strSQL1 = "SELECT * FROM list_menu WHERE menu_id = '".$_SESSION["strProductID"][$i]."' ";
$objQuery1 = sqlsrv_query($conn,$strSQL1);
$objResult1 = sqlsrv_fetch_array($objQuery1,SQLSRV_FETCH_ASSOC);
$Total = $_SESSION["strQty"][$i] * $objResult1["menu_price"];
$SumTotal = $SumTotal + $Total;
$id = $objResult1["menu_id"];
$name = $objResult1["menu_name"];
$price = $objResult1["menu_price"];
$code = $objResult1["menu_code"];
$qty = $_SESSION["strQty"][$i];
$insert = "INSERT INTO order_detail (order_id,menu_code,menu_name,order_amount,order_price,emp_name,status) VALUES(?,?,?,?,?,?,?)";
$insert_params = array($max_id,$code,$name,$qty,$price,$empname,'0');
$query_insert = sqlsrv_query($conn,$insert,$insert_params);
////// เลือก สูตรอาหารที่ตรงกับ รายการอาหาร
$select_formula = "SELECT * FROM menu_formula WHERE menu_id='$id'";
$query_select_formula = sqlsrv_query($conn,$select_formula);
While($result_select_formula = sqlsrv_fetch_array($query_select_formula,SQLSRV_FETCH_ASSOC)){
$mat_qty = $qty*$result_select_formula["menu_formula_oz"];
$mat_name = $result_select_formula["menu_formula_name"];
$mat_id = $result_select_formula["mat_id"];
////// เลือกวัตถุดิบที่ต้องการตัด จากชื่อที่ตรงกัน
$stock = "SELECT *FROM material_stock WHERE mat_id='$mat_id'";
$query_stock = sqlsrv_query($conn,$stock);
$result_stock = sqlsrv_fetch_array($query_stock,SQLSRV_FETCH_ASSOC);
$stock_qty = $result_stock["mat_qty"];
$stock_mat = $stock_qty-$mat_qty;
///// PARAMETER/////
echo "$mat_name : $stock_qty - $mat_qty = $stock_mat ";
echo "<br>";
}
}
}
unset($_SESSION["strProductID"]);
Date :
2018-08-29 18:16:04
By :
pcthm06
แต่ตอนนี้ตัดปัญหาว่า ผมจะทำการนำค่าไป UPDATE
Code (PHP)
$update_mat = "UPDATE material_stock SET mat_qty=?";
$array_mat = array($stock_mat);
$query_update_mat = sqlsrv_query($conn,$update_mat,$array_mat);
โค้ด UPDATE จะอยู่ต่อจาก
Code (PHP)
///// PARAMETER/////
echo "$mat_name : $stock_qty - $mat_qty = $stock_mat ";
echo "<br>";
ค่าที่ออกมาตอนใส่คำสั่ง UPDATE
ตอนไม่ใส่คำสั่ง UPDATE (จริงๆผลที่ออกมาต้องเป็นแบบนี้ตอนใส่คำสั่ง UPDATE)
ฐานข้อมูล
คือเมื่อตอนใส่คำสั่ง update แล้วมันใช้ค่าตัวแรกสุดแล้วมาทำการลบเรื่อยๆ น่ะครับ
ประวัติการแก้ไข 2018-08-29 18:28:58
Date :
2018-08-29 18:28:07
By :
pcthm06
"UPDATE material_stock SET mat_qty=? where mat_id=? "; ลืม where ไปหรือเปล่า ไม่ใส่ where มันอัพเดททั้งตาราง
Date :
2018-08-29 21:20:47
By :
Chaidhanan
โค็ดที่ผมใช้ตอนนี้ครับ .....แต่ผมมีปัญหาคือ ข้อมูลจะแสดงผลไม่ครบ....หายไป 3 เรคอร์ด หรือ ประมาณ 1 คน จากนักเรียนทุกคนที่ขาดเรียน กรุณาช่วยตรวจสอบหน่อยครับว่าควรแก้ไขตรงไหน
Code (PHP)
$strSQL1 = "SELECT chkstdmima.resume_id,count(chkstdmima.resume_id) as total,resume.name FROM chkstdmima,resume WHERE (chkstdmima.resume_id = resume.resume_id AND chkstdmima.date_rec BETWEEN '$date_start' AND '$date_end') GROUP BY chkstdmima.resume_id ORDER BY chkstdmima.resume_id";
$objQuery1 = mysqli_query($link,$strSQL1) or die ("Error Query [".$strSQL1."]");
$row1='';
while($re = mysqli_fetch_array($objQuery1,MYSQLI_ASSOC))
{
if($re['resume_id']!= $row1)
{ ?>
<tr>
<td align="center"><?php echo $re["resume_id"];?></td>
<td> <?php echo $re["name"];?></td>
<td align="center"><?php echo $re["total"];;?></td>
</tr>
<?php
}
}
?>
Date :
2019-06-28 16:29:18
By :
kruwee
เอา tag ภาษาครอบให้หน่อยจะได้อ่านง่าย
Date :
2019-06-28 17:22:08
By :
Chaidhanan
โค็ดที่ผมใช้ตอนนี้ครับ .....แต่ผมมีปัญหาคือ ข้อมูลจะแสดงผลไม่ครบ....หายไป 3 เรคอร์ด เป็นของนักเรียน 1 คน ที่ขาด 3 วัน (ผมต้องการแสดงข้อมูลของนักเรียนแต่ละคนว่าขาดเรียนกี่ครั้งใน 1 เดือน) กรุณาช่วยตรวจสอบหน่อยครับว่าควรแก้ไขตรงไหน
Code (PHP)
<html>
<body>
include "dblink.php";
<?php
$strSQL1 = "SELECT chkstdmima.resume_id,count(chkstdmima.resume_id) as total,resume.name FROM chkstdmima,resume WHERE (chkstdmima.resume_id = resume.resume_id AND chkstdmima.date_rec BETWEEN '$date_start' AND '$date_end') GROUP BY chkstdmima.resume_id ORDER BY chkstdmima.resume_id";
$objQuery1 = mysqli_query($link,$strSQL1) or die ("Error Query [".$strSQL1."]");
?>
<table width="600" border="1">
<tr>
<th width="50"> <div align="center">เลขที่</div></th>
<th width="120"> <div align="center">ชื่อ-สกุล</div></th>
<th width="70"> <div align="center">ขาด (ครั้ง)</div></th>
</tr>
<?php
$row1='';
while($re = mysqli_fetch_array($objQuery1,MYSQLI_ASSOC))
{
if($re['resume_id']!= $row1)
{ ?>
<tr>
<td align="center"><?php echo $re["resume_id"];?></td>
<td> <?php echo $re["name"];?></td>
<td align="center"><?php echo $re["total"];;?></td>
</tr>
<?php
}
}
?>
</table>
<?php
mysql_close($link);
?>
</body>
</html>
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date :
2019-06-29 10:48:51
By :
kruwee
หัดเขียนเป็น oop ได้แล้ว
Code (PHP)
$strSQL1 = <<<STMT
SELECT c.resume_id,count(c.resume_id) as total, r.name
FROM chkstdmima c
left join resume r on c.resume_id = r.resume_id
WHERE (c.date_rec BETWEEN '$date_start' AND '$date_end')
GROUP BY c.resume_id
ORDER BY c.resume_id
STMT;
$objQuery1 = $link->query($strSQL1) or die ("Error Query [".$strSQL1."]<br>".$link->error);
while ( $ro = $objQuery1->fetch_assoc()){
โค๊ดไม่มีอะไรผิด ผิดที่ ข้อมูลไม่ตรงกับ condition ดู where clause ให้ดีครับ
Date :
2019-06-29 13:18:24
By :
Chaidhanan
Load balance : Server 00