ช่วยหน่อยครับเกี่ยวกับการส่ง-คืนเครื่องจักรแล้วทำdropdown list ในหน้าบันทึกให้บันทึกใน SESSION ไม่ได้
-รหัสเครื่องจักรใน db = mac_id(PK)
-mac_status สถานะการเครื่องจักร (0="ว่าง",1="ไม่ว่าง")
ผมได้ทำการกำหนด $sql = "SELECT * FROM machine where machine.mac_status = 0";
$result = mysqli_query($conn,$sql);
$row = mysqli_fetch_array($result);
$mac_id = $row[0];
เพื่อแสดงเฉพาะเครื่องจักรที่ว่าง
และผมได้เลือกเครื่องจักรเพื่อบันทึกในตะกร้าเครื่องจักรโดยการเก็บใน SESSION['cart']
พอเลือกเสร็จก็จะไปหน้าบันทึกการส่ง
Code : ของ ลิสเครื่องจักร
Code (PHP)
<?php
$conn = mysqli_connect("localhost","root","123456789");
mysqli_set_charset($conn,'utf8');
$sql = "use machinerental_db";
$result = mysqli_query($conn,$sql);
?>
<?php
$total=0;
foreach($_SESSION['cart'] as $mac_id=>$qty)
{
$sql = "select * from machine where mac_id=$mac_id";
$query = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($query);
?>
<?php
mysql_connect("localhost","root","123456789") or die(mysql_error());
mysql_select_db("machinerental_db");
?>
<?php
echo "<tr>";
echo "<td align='center'>" . $row["mac_id"] . "</td>";
echo "<td width='180'>" . $row["mac_name"] . "</td>";
echo "<td align='center'>" . $row["mac_type"] . "</td>";
echo "<td align='center'>" . $row["license_plate"] . "</td>";
echo "<td align='center'>" ?>
<select name="lmName1">
<option value=""><-- Please Select Item --></option>
<?php
$strSQL = "SELECT * FROM employee ORDER BY emp_id ASC";
$objQuery = mysql_query($strSQL);
while($objResuut = mysql_fetch_array($objQuery))
{
?>
<option value="<?php echo $objResuut["emp_id"];?>"><?php echo $objResuut["emp_id"]." - ".$objResuut["emp_name"];?></option>
<?php
}
?>
</select>
โดยบันทึกการส่ง จะแสดงลิสเครื่องจักรทั้งหมดที่เลือกส่งผ่าน foreach ของ SESSION['cart'] ที่ได้ผ่านการเพิ่มข้อมูลตาม $mac_id ที่เลือก
ใน foreach ผมได้เพิ่มข้อมูล dropdown list ของพนักงาน เพื่อเลือกพนักงานที่จะส่งเครื่องจักรไป
โดยข้อมูลต่างๆจะถูกส่งแบบ POST
Code : insert
Code (PHP)
<?php
session_start();
$del_send = $_REQUEST['del_send'];
$del_senddate = $_SESSION['del_senddate'];
$mac_id = $_SESSION['mac_id'];
$ren_id = $_SESSION['ren_id'];
$del_status = 0;
$listdel_status = 0;
?>
<?php
$conn = mysqli_connect("localhost","root","123456789");
mysqli_set_charset($conn,'utf8');
$sql1 = "use machinerental_db";
$result = mysqli_query($conn, $sql1);
$sql1 = "INSERT INTO delivery (del_senddate, del_send, del_status, ren_id) VALUES ('$del_senddate', '$del_send', '$del_status', '$ren_id')";
$result = mysqli_query($conn,$sql1);
//ฟังก์ชั่น MAX() จะคืนค่าที่มากที่สุดในคอลัมน์ที่ระบุ ออกมา หรือจะพูดง่ายๆก็ว่า ใช้สำหรับหาค่าที่มากที่สุด นั่นเอง.
$sql2 = "SELECT MAX(del_id) as del_id FROM delivery WHERE del_senddate = '$del_senddate' and del_send = '$del_send' and del_status = '$del_status' and ren_id = '$ren_id'";
$query2 = mysqli_query($conn, $sql2);
$row = mysqli_fetch_array($query2);
$del_id = $row["del_id"];
//PHP foreach() เป็นคำสั่งเพื่อนำข้อมูลออกมาจากตัวแปลที่เป็นประเภท array โดยสามารถเรียกค่าได้ทั้ง $key และ $value ของ array
foreach($_SESSION['cart'] as $mac_id=>$qty)
{
mysql_connect("localhost","root","123456789") or die(mysql_error());
mysql_select_db("machinerental_db");
//ยังส่งมาแค่ค่าเดียวที่เลือกเพราะส่งแบบ POST*******
$strSQL = "SELECT * FROM employee WHERE emp_id = '".$_POST["lmName1"]."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
$emp_id = $objResult['emp_id'];
$emp_name = $objResult['emp_name'];
$sql3 = "SELECT * FROM machine WHERE mac_id=$mac_id";
$query3 = mysqli_query($conn, $sql3);
$row3 = mysqli_fetch_array($query3);
$mac_id = $row3['mac_id'];
$sql4 = "INSERT INTO list_delivery (listdel_status, mac_id, emp_id, del_id)VALUES('$listdel_status', '$mac_id','$emp_id','$del_id')";
$query4 = mysqli_query($conn, $sql4);
}
if($query4){
mysqli_query($conn, "COMMIT");
$msg = "บันทึกข้อมูลเรียบร้อยแล้ว ";
foreach($_SESSION['cart'] as $mac_id)
{
//unset($_SESSION['cart'][$p_id]);
unset($_SESSION['cart']);
}
}
else{
mysqli_query($conn, "ROLLBACK");
$msg = "บันทึกข้อมูลไม่สำเร็จ กรุณาติดต่อเจ้าหน้าที่ค่ะ ";
}
?>
จากโค๊ดหน้าบันทึกจะถูกส่งมาแค่ค่าเดียวคือค่า dropdown ที่เลือกอันแรก
-สมมติมีเครื่องจักรแสดงตามรูป
อยากทราบว่ามีวิธีไหนบ้างคับที่เรากด dropdown list เลือกคนขับคนที่ 1 แล้ว พอกด dropdown list อีกอันให้มันไม่แสดงคนขับที่เราเลือกตอนแรก
และนำตัวข้อมูลคนขับทั้ง 2 dropdownlist ไปเก็บ ใน SESSION แทนะการส่งแบบ POST เพื่อที่จะได้ส่งข้อมูลคนขับที่เลือก(2คน)ไปยังหน้าโค๊ดที่จะ insert ข้อมูลลงไป โดยการ insert ก็จะ insert ผ่าน foreach เหมือนกัน insert ลง table การคืน และจะต้องอัพเดตให้สถานะเครื่องจักรที่เลือกและคนขับเป็น ไม่ว่างด้วยTag : PHP, MySQL
ประวัติการแก้ไข 2019-01-16 16:14:39
Date :
2019-01-16 16:13:14
By :
10215890978539437
View :
814
Reply :
7
ชีวิตคุณ เหมือนสับสนเกินไปหรือเปล่า?
If (mysql) {
echo "you must to used Mysql only ";
}else{
echo "you must to used Mysqli only";
}
===========================
เขียนแบบนี้สับสนครับ ช่วยคุณยาก ไปหาตัวตนโตเองก่อนครับ
Date :
2019-01-16 16:49:12
By :
Hararock
ลืมตอบปัญหาเรื่อง session การใช้ session จำเป็นต้องประกาศ ให้ sever รู้ว่าเราต้องการใช้มัน เพื่อที่ มันจะได้ บันทึก session ให้เรา
ด้วยคำสั่ง
session_start(); ไว้ที่ส่วนหัวของโปรแกรม ก่อนการ ส่งค่าอื่นๆ ออกไปให้ client ครับ
Date :
2019-01-16 20:00:08
By :
Chaidhanan
Load balance : Server 04