ปรึกษาเรื่อง Update ข้อมูล แจ้งเตือน undefined index update_Id ซึ่ง update_id เรียกใช้งานถูกครับ
Code (PHP)
<!-- <div class="card-footer">
<input type="hidden" name="update_id" value="<?php echo //ใส่ ค่า ID; ?>">
<button type="submit" name="btn_update" class="btn btn-primary btn-block mx-auto w-50" value="update">บันทึกข้อมูล</button>
</div> -->
</div>
<div class="card-footer">
<button type="submit" name="btn_update" class="btn btn-primary btn-block mx-auto w-50" value="update">บันทึกข้อมูล</button>
</div>
</form>
Date :
2021-10-25 14:11:57
By :
sookurb
บรรทัดที่ 4 ของ edit.php
$up = $_REQUEST['update_id'];
ค่า update_id ไม่ได้ส่งมาด้วย
ถ้าใช้ form ก็ต้องมี input ที่มี name="update_id"
Date :
2021-10-25 20:21:07
By :
{Cyberman}
ตอนนี้พูดถึงหน้า form เท่านั้นครับ
ลองค้นหา update_id ให้เจอครับ
Date :
2021-10-26 08:31:27
By :
{Cyberman}
Code (form-edit.php)
<form action="edit.php" method="POST">
<div class="card-body">
<div class="row">
<div class="col-md-6 px-1 px-md-5">
<div class="form-group">
<label for="computername">Computer Name</label>
<input type="text" class="form-control" name="txt_Computername" value="<?php echo $Computername; ?>" required>
</div>
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" name="txt_Username" value="<?php echo $Username; ?>" required>
</div>
<div class="form-group">
<label for="manufacturer">Manufacturer</label>
<input type="text" class="form-control" name="txt_Manufacturer" value="<?php echo $Manufacturer; ?>" required>
</div>
<div class="form-group">
<label for="model">Model</label>
<input type="text" class="form-control" name="txt_Model" value="<?php echo $Model; ?>" required>
</div>
</div>
<div class="col-md-6 px-1 px-md-5">
<div class="form-group">
<label for="serialnumber">Serial Number</label>
<input type="text" class="form-control" name="txt_SN" value="<?php echo $SN; ?>" required>
</div>
<div class="form-group">
<label for="cpu">CPU</label>
<input type="text" class="form-control" name="txt_CPU" value="<?php echo $CPU; ?>" required>
</div>
<div class="form-group">
<label for="os">OS</label>
<input type="text" class="form-control" name="txt_OS" value="<?php echo $OS; ?>" required>
</div>
</div>
</div>
</div>
<div class="card-footer">
<!-- <input type="hidden" name="update_id" value="<?php echo row["Id"]; ?>">
<input type="hidden" name="update_id" value="<?php echo $Id; ?>"> -->
<button type="submit" name="btn_update" class="btn btn-primary btn-block mx-auto w-50" value="update">บันทึกข้อมูล</button>
</div>
</form>
Date :
2021-10-26 09:37:17
By :
TeeTs
Code (PHP)
$result= $conn->query($sql);
if($result===false){
print_r($conn->error);
}
Date :
2021-10-27 09:41:29
By :
Chaidhanan
เอา
$_REQUEST['update_id'];
ไว้ใน if (isset()) {
Code (PHP)
<?php
require_once('../../../database/connection.php');
if (isset($_REQUEST['update_id'])) {
$sql = "SELECT * FROM `masterpc` WHERE `Id` = '".$_REQUEST['update_id']."'";
$result= $conn->query($sql);
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$Computername = $row["Computername"];
$Username = $row["Username"];
$Manufacturer = $row["Manufacturer"];
$Model = $row["Model"];
$SN = $row["SN"];
$CPU = $row["CPU"];
$OS = $row["OS"];
}
}
if (isset($_REQUEST['btn_update'])) {
$Computername_up = $_REQUEST['txt_Computername'];
$Username_up = $_REQUEST['txt_Username'];
$Manufacturer_up = $_REQUEST['txt_Manufacturer'];
$Model_up = $_REQUEST['txt_Model'];
$SN_up = $_REQUEST['txt_SN'];
$CPU_up = $_REQUEST['txt_CPU'];
$OS_up = $_REQUEST['txt_OS'];
echo $sqli = "UPDATE `masterpc` SET
`Computername` = '{$Computername_up}',
`Username` = '{$Username_up}',
Manufacturer` = '{$Manufacturer_up}',
`Model` = '{$Model_up}',
`SN` = '{$SN_up}',
`CPU` = '{$CPU_up}',
`OS` = '{$OS_up}'
WHERE
`Id` = '".$_REQUEST['update_id'].'";
if (mysqli_query($conn, $sqli)) {
echo "<script>alert('แก้ไขข้อมูลสำเร็จ...'); window.location ='index.php';</script>";
} else {
echo "Error: " . $sqli . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
}
?>
Date :
2021-10-27 10:29:26
By :
Guest
<?php
echo 'past ', __LINE__, json_encode( ['rq'=>$_REQUEST, 'post'=>$_POST, 'get'=>$_GET]),'<br>';
ลองตรวจสอบ ข้อมูลที่มาก่อน ว่าถูกต้อง กับชนิดการ request ไหม
จริงๆ แล้ว จาก no 14 ถ้าลองทำก็ควรจะรู้ว่าอะไรเป็นอะไรแล้ว
Date :
2021-10-27 11:10:11
By :
Chaidhanan
จาก No 16 ได้ข้อมูลยังไง สำหรับ หน้า Edit
Date :
2021-10-27 17:13:05
By :
Chaidhanan
คห. 14 ให้ echo คำสั่ง UPDATE มาดู ทำไมไม่ทำตามล่ะครับ
ในนั้นมันมี echo อยู่ ทำแล้วก็จะเห็นเลยว่าคำสั่ง UPDATE เราถูกมั้ย?
ผล echo เป็นยังไงเอามาดู
แล้วถ้าจะให้ดี ที่แก้ไขล่าสุดเป็นยังไงเอาโค้ดมาลงด้วยครับ
สรุป
1. ทำตาม คห 14 เอาผล echo ของคำสั่ง UPDATE มาดู.
เบื้องต้นตรงนี้จะได้ตรวจสอบเองได้ด้วยว่าคำสั่ง sql UPDATE ถูกมั้ย
2. แล้วก็โค้ดที่แก้ไขล่าสุด
3. หน้าฟอร์มแก้ไขเป็นยังไง ถูกต้องมั้ย?
4. หลังจากกด submit แล้วได้อะไร? จากโค้ดมันควรจะได้ alert สำเร็จหรือ error ก็เอามาลงว่ามันได้อะไร
ประวัติการแก้ไข 2021-10-29 00:46:21
Date :
2021-10-29 00:37:27
By :
mr.v
จะเขียนย่อๆให้ไปเทียบเอานะ
Code (PHP) form-edit.php
<form action="edit.php" method="post">
// form ใช้ของเดิม ข่างล่างคือต้องมี และตรวจให้ดีด้วยว่า[[ไม่มี]] html comment เช่น <!-- ... --> คลุมไว้
// เนื่องจากหน้า form-edit.php รับค่า querystring ?update_id=nnn ดังนั้นค่านี้ถ้าจะใช้อ้างอิงในการอัพเดท มันจะต้องถูกส่งต่อ input ข้างล่างจะต้องมีแบบนี้
<input type="hidden" name="update_id" value="<?php echo $_REQUEST['update_id']; ?>">
// ปุ่ม submit
<button type="submit" name="btn_update" value="update">Submit button, class ไปใส่เอาเองนะ</button>
</form>
หน้า form.php ก็เทียบ input ที่ต้องมีกับปุ่ม เอาให้แม่น แล้วหน้า edit.php ก็เอาผลลัพธ์ของโค้ดข้างล่างนี้มาดู
Code (PHP) edit.php
<?php
require_once('../../../database/connection.php');
$update_id = (isset($_REQUEST['update_id']) ? $_REQUEST['update_id'] : null);
if (!empty($update_id)){
$sql = "SELECT * FROM masterpc WHERE Id = $update_id; ";
$result= $conn->query($sql);
while ($row = $result->fetch_array(MYSQLI_ASSOC)){
$Computername = $row["Computername"];
$Username = $row["Username"];
$Manufacturer = $row["Manufacturer"];
$Model = $row["Model"];
$SN = $row["SN"];
$CPU = $row["CPU"];
$OS = $row["OS"];
}
echo 'ไชโย $update_id ไม่ว่างเปล่า! ' . $update_id . '<br>' . "\n";
} else {
echo '$update_id ทำไมว่างเปล่าล่ะ?<br>' . "\n";
}
echo 'REQUEST:<pre>' . print_r($_REQUEST, true) . '</pre>';
echo 'GET:<pre>' . print_r($_GET, true) . '</pre>';
echo 'POST:<pre>' . print_r($_POST, true) . '</pre>';
// เอาแค่นี้ก่อน ทดลองแล้วได้ผลยังไง ลองเอามาดู จะได้เห็นกันว่ามันเดี้ยงตรงไหน ยังไม่ต้องสั่ง update อะไรทั้งนั้นนะครับ
ประวัติการแก้ไข 2021-10-29 11:21:06 2021-10-29 11:23:48
Date :
2021-10-29 11:06:52
By :
mr.v
ป้องกัน sql injection ด้วยนะครับ
Code (PHP)
$sqli='UPDATE masterpc SET Computername=?,Username=?,Manufacturer=?,Model=?,SN=?,CPU=?,OS=? WHERE Id = ?';
$stmt = $conn->prepare($sqli);
if($stmt->error>0){
print_r([ $stmt->error, $sqli, $datas]); exit;
}
$stmt->bind_param('sssssssi', $Computername_up, $Username_up, $Manufacturer_up,$Model_up,$SN_up,$CPU_up,$OS_up, $up); // s = string i = integer
$stmt->execute();
if($stmt->error>0){
print_r([ $stmt->error, $sqli, $Computername_up, $Username_up, $Manufacturer_up,$Model_up,$SN_up,$CPU_up,$OS_up, $up]); exit;
}
Date :
2021-10-29 16:54:47
By :
Chaidhanan
สรุปเคสนี้เดาว่าเกิดจากไม่มี INPUT ที่เก็บค่า id ที่ต้องการอัพเดต จึงไม่ได้ส่งค่าไปครับ
เช่น
<input type="hidden" name="update_id" value="<?php echo $_REQUEST['update_id']; ?>">
Date :
2021-10-30 14:47:23
By :
{Cyberman}
ที่หน้าขาวเพราะว่าไม่เข้าเงื่อนไขนี้ ที่มันตรวจ $_REQUEST['btn_update']
ส่วน $_REQUEST['update_id'] คงจะมีแล้ว
ใส่โค้ดนี้ลงหน้า edit.php ที่รับค่าจากฟอร์ม บรรทัดบนๆก็ได้
แล้วเอาผลมาดู ผมว่าใช่
Code (PHP)
echo 'REQUEST:<pre>' . print_r($_REQUEST, true) . '</pre>';
echo 'GET:<pre>' . print_r($_GET, true) . '</pre>';
echo 'POST:<pre>' . print_r($_POST, true) . '</pre>';
Date :
2021-10-31 21:35:11
By :
mr.v
ตอบความคิดเห็นที่ : 34 เขียนโดย : mr.v เมื่อวันที่ 2021-10-31 21:35:11
รายละเอียดของการตอบ ::
ครับ ใส่ code ตามที่แนะนำแล้วนะครับ
response
Code (PHP)
REQUEST:
Array
(
[update_id] => 1
)
GET:
Array
(
[update_id] => 1
)
POST:
Array
(
)
Code (edit.php)
<?php
require_once('../../../database/connection.php');
if (isset($_REQUEST['update_id'])) {
$sql = "SELECT * FROM `masterpc` WHERE `Id` = '".$_REQUEST['update_id']."' ";
$result= $conn->query($sql);
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$Computername = $row["Computername"];
$Username = $row["Username"];
$Manufacturer = $row["Manufacturer"];
$Model = $row["Model"];
$SN = $row["SN"];
$CPU = $row["CPU"];
$OS = $row["OS"];
}
}
echo 'REQUEST:<pre>' . print_r($_REQUEST, true) . '</pre>';
echo 'GET:<pre>' . print_r($_GET, true) . '</pre>';
echo 'POST:<pre>' . print_r($_POST, true) . '</pre>';
if (isset($_REQUEST['btn_update'])) {
$Computername_up = $_REQUEST['txt_Computername'];
$Username_up = $_REQUEST['txt_Username'];
$Manufacturer_up = $_REQUEST['txt_Manufacturer'];
$Model_up = $_REQUEST['txt_Model'];
$SN_up = $_REQUEST['txt_SN'];
$CPU_up = $_REQUEST['txt_CPU'];
$OS_up = $_REQUEST['txt_OS'];
echo $sqli = "UPDATE `masterpc` SET
`Computername` = '{$Computername_up}',
`Username` = '{$Username_up}',
Manufacturer` = '{$Manufacturer_up}',
`Model` = '{$Model_up}',
`SN` = '{$SN_up}',
`CPU` = '{$CPU_up}',
`OS` = '{$OS_up}'
WHERE
`Id` = '".$_REQUEST['update_id']."' ";
if (mysqli_query($conn, $sqli)) {
echo "<script>alert('แก้ไขข้อมูลสำเร็จ...'); window.location ='index.php';</script>";
} else {
echo "Error: " . $sqli . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
}
?>
Date :
2021-10-31 21:44:50
By :
TeeTs
ถ้าตัวฟอร์มเป็นแบบในคห. 33 จริงๆ ให้ลองปิด Javascript หรือเอาออกให้หมดก่อน แล้วทดลองกรอกข้อมูลกด submit ดูใหม่
Date :
2021-10-31 21:54:58
By :
mr.v
ตอบความคิดเห็นที่ : 36 เขียนโดย : mr.v เมื่อวันที่ 2021-10-31 21:53:05
รายละเอียดของการตอบ ::
ขออภัยครับ ได้ข้อมูลตาม no.36 แล้วครับ
แก้ไขๆ หน้า index.php ผมใส่ a href ผิดครับ
Code (PHP)
//ก่อน
<a href="edit.php?update_id=<?php echo $row["Id"]; ?>" type="button" class="btn btn-danger "><i class="far fa-edit"></i>
</a>
//แก้เป็น
<a href="form-edit.php?update_id=<?php echo $row["Id"]; ?>" type="button" class="btn btn-danger "><i class="far fa-edit"></i>
</a>
//ข้อมูลมาครบครับ
Code (index.php)
<?php
require_once('../../../database/connection.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>มาสเตอร์ พีซี | CMS</title>
<link rel="shortcut icon" type="image/x-icon" href="../../../assets/images/logo.png">
<!-- stylesheet -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Kanit" >
<link rel="stylesheet" href="../../../plugins/fontawesome-free/css/all.min.css">
<link rel="stylesheet" href="../../../plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.min.css">
<link rel="stylesheet" href="../../../assets/css/adminlte.min.css">
<link rel="stylesheet" href="../../../assets/css/style.css">
<!-- Datatables -->
<link rel="stylesheet" href="../../../plugins/datatables-bs4/css/dataTables.bootstrap4.min.css">
<link rel="stylesheet" href="../../../plugins/datatables-responsive/css/responsive.bootstrap4.min.css">
</head>
<body class="hold-transition sidebar-mini">
<div class="wrapper">
<?php include_once('../includes/sidebar.php') ?>
<div class="content-wrapper pt-3">
<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card shadow">
<div class="card-header border-0 pt-4">
<h4>
<i class="fas fa-desktop"></i>
มาสเตอร์ พีซี
</h4>
<a href="form-create.php" class="btn btn-primary mt-3">
<i class="fas fa-plus"></i>
เพิ่มข้อมูล
</a>
</div>
<div class="card-body">
<!-- <div style="overflow-x:auto;"> -->
<div class="table-responsive">
<table id="myTable" class="table table-striped table-hover">
<thead>
<tr>
<th>ID</th>
<th>Computername</th>
<th>Username</th>
<th>Manufacturer</th>
<th>Model</th>
<th>Serial Number</th>
<th>CPU</th>
<th>OS</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$sql = "SELECT * FROM masterpc";
$result = $conn->query($sql);
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
?>
<!-- class="d-none text-left" style="font-size:8pt;"-->
<tr>
<td class="text-left"><?php echo $row["Id"]; ?></td>
<td class="text-left"><?php echo $row["Computername"]; ?></td>
<td class="text-left"><?php echo $row["Username"]; ?></td>
<td class="text-left"><?php echo $row["Manufacturer"]; ?></td>
<td class="text-left"><?php echo $row["Model"]; ?></td>
<td class="text-left"><?php echo $row["SN"]; ?></td>
<td class="text-left"><?php echo $row["CPU"]; ?></td>
<td class="text-left"><?php echo $row["OS"]; ?></td>
<td>
<div class="btn-group" role="group" aria-label="Basic mixed styles example">
<a href="form-edit.php?update_id=<?php echo $row["Id"]; ?>" type="button" class="btn btn-danger "><i class="far fa-edit"></i>
</a>
<a href="delete.php?delete_id=<?php echo $row["Id"]; ?>" type="button" class="btn btn-warning text-white"><i class="fas fa-trash"></i>
</a>
</div>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php include_once('../includes/footer.php') ?>
</div>
<!-- scripts -->
<script src="../../../plugins/jquery/jquery.min.js"></script>
<script src="../../../plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="../../../plugins/sweetalert2/sweetalert2.min.js"></script>
<script src="../../../assets/js/adminlte.min.js"></script>
<!-- datatables -->
<script src="..././../plugins/datatables/jquery.dataTables.min.js"></script>
<script src="../../../plugins/datatables-bs4/js/dataTables.bootstrap4.min.js"></script>
<script src="../../../plugins/datatables-responsive/js/dataTables.responsive.min.js"></script>
<script src="../../../plugins/datatables-responsive/js/responsive.bootstrap4.min.js"></script>
</body>
</html>
Code (form-edit.php)
<?php
require_once('../../../database/connection.php');
require_once('edit.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>แก้ไขข้อมูลทรัพย์สิน | CMS</title>
<link rel="shortcut icon" type="image/x-icon" href="../../../assets/images/logo.png">
<!-- stylesheet -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Kanit" >
<link rel="stylesheet" href="../../../plugins/fontawesome-free/css/all.min.css">
<link rel="stylesheet" href="../../../plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.min.css">
<link rel="stylesheet" href="../../../assets/css/adminlte.min.css">
<link rel="stylesheet" href="../../../assets/css/style.css">
</head>
<body class="hold-transition sidebar-mini">
<div class="wrapper">
<?php include_once('../includes/sidebar.php') ?>
<div class="content-wrapper pt-3">
<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card shadow">
<div class="card-header border-0 pt-4">
<h4>
<i class="fas fa-desktop"></i>
แก้ไขข้อมูลผู้ดูแล
</h4>
<a href="./" class="btn btn-info my-3 ">
<i class="fas fa-list"></i>
กลับหน้าหลัก
</a>
</div>
<form action="edit.php" method="POST">
<div class="card-body">
<div class="row">
<div class="col-md-6 px-1 px-md-5">
<div class="form-group">
<label for="Computername">Computer Name</label>
<input type="text" class="form-control" name="txt_Computername" id="Computername" value="<?php echo $Computername; ?>" required>
</div>
<div class="form-group">
<label for="Username">Username</label>
<input type="text" class="form-control" name="txt_Username" id="Username" value="<?php echo $Username; ?>" required>
</div>
<div class="form-group">
<label for="Manufacturer">Manufacturer</label>
<input type="text" class="form-control" name="txt_Manufacturer" id="Manufacturer" value="<?php echo $Manufacturer; ?>" required>
</div>
<div class="form-group">
<label for="Model">Model</label>
<input type="text" class="form-control" name="txt_Model" id="Model" value="<?php echo $Model; ?>" required>
</div>
</div>
<div class="col-md-6 px-1 px-md-5">
<div class="form-group">
<label for="Serialnumber">Serial Number</label>
<input type="text" class="form-control" name="txt_SN" id="Serialnumber" value="<?php echo $SN; ?>" required>
</div>
<div class="form-group">
<label for="CPU">CPU</label>
<input type="text" class="form-control" name="txt_CPU" id="CPU" value="<?php echo $CPU; ?>" required>
</div>
<div class="form-group">
<label for="OS">OS</label>
<input type="text" class="form-control" name="txt_OS" id="OS" value="<?php echo $OS; ?>" required>
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="hidden" name="update_id" value="<?php echo $_REQUEST['update_id']; ?>">
<button type="submit" name="btn_update" class="btn btn-primary btn-block mx-auto w-50" value="update">บันทึกข้อมูล</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<?php include_once('../includes/footer.php') ?>
</div>
<!-- SCRIPTS -->
<script src="../../../plugins/jquery/jquery.min.js"></script>
<script src="../../../plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="../../../plugins/sweetalert2/sweetalert2.min.js"></script>
<script src="../../../assets/js/adminlte.min.js"></script>
</body>
</html>
Code (edit.php)
<?php
require_once('../../../database/connection.php');
if (isset($_REQUEST['update_id'])) {
$sql = "SELECT * FROM `masterpc` WHERE `Id` = '".$_REQUEST['update_id']."' ";
$result= $conn->query($sql);
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$Computername = $row["Computername"];
$Username = $row["Username"];
$Manufacturer = $row["Manufacturer"];
$Model = $row["Model"];
$SN = $row["SN"];
$CPU = $row["CPU"];
$OS = $row["OS"];
}
}
echo 'REQUEST:<pre>' . print_r($_REQUEST, true) . '</pre>';
echo 'GET:<pre>' . print_r($_GET, true) . '</pre>';
echo 'POST:<pre>' . print_r($_POST, true) . '</pre>';
if (isset($_REQUEST['btn_update'])) {
$Computername_up = $_REQUEST['txt_Computername'];
$Username_up = $_REQUEST['txt_Username'];
$Manufacturer_up = $_REQUEST['txt_Manufacturer'];
$Model_up = $_REQUEST['txt_Model'];
$SN_up = $_REQUEST['txt_SN'];
$CPU_up = $_REQUEST['txt_CPU'];
$OS_up = $_REQUEST['txt_OS'];
echo $sqli = "UPDATE `masterpc` SET
`Computername` = '{$Computername_up}',
`Username` = '{$Username_up}',
Manufacturer` = '{$Manufacturer_up}',
`Model` = '{$Model_up}',
`SN` = '{$SN_up}',
`CPU` = '{$CPU_up}',
`OS` = '{$OS_up}'
WHERE
`Id` = '".$_REQUEST['update_id']."' ";
if (mysqli_query($conn, $sqli)) {
echo "<script>alert('แก้ไขข้อมูลสำเร็จ...'); window.location ='index.php';</script>";
} else {
echo "Error: " . $sqli . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
}
?>
Code (response)
REQUEST:
Array
(
[txt_Computername] => DESKTOP-817QJU0
[txt_Username] => DESKTOP-817QJU0ACER
[txt_Manufacturer] => Acer1
[txt_Model] => Aspire A315-21
[txt_SN] => NXGNVST007732194697600
[txt_CPU] => AMD A4-9120 RADEON R3, 4 COMPUTE CORES 2C+2G
[txt_OS] => Microsoft Windows 10 Pro
[update_id] => 1
[btn_update] => update
)
GET:
Array
(
)
POST:
Array
(
[txt_Computername] => DESKTOP-817QJU0
[txt_Username] => DESKTOP-817QJU0ACER
[txt_Manufacturer] => Acer1
[txt_Model] => Aspire A315-21
[txt_SN] => NXGNVST007732194697600
[txt_CPU] => AMD A4-9120 RADEON R3, 4 COMPUTE CORES 2C+2G
[txt_OS] => Microsoft Windows 10 Pro
[update_id] => 1
[btn_update] => update
)
UPDATE `masterpc` SET `Computername` = 'DESKTOP-817QJU0', `Username` = 'DESKTOP-817QJU0ACER', Manufacturer` = 'Acer1', `Model` = 'Aspire A315-21', `SN` = 'NXGNVST007732194697600', `CPU` = 'AMD A4-9120 RADEON R3, 4 COMPUTE CORES 2C+2G', `OS` = 'Microsoft Windows 10 Pro' WHERE `Id` = '1' Error: UPDATE `masterpc` SET `Computername` = 'DESKTOP-817QJU0', `Username` = 'DESKTOP-817QJU0ACER', Manufacturer` = 'Acer1', `Model` = 'Aspire A315-21', `SN` = 'NXGNVST007732194697600', `CPU` = 'AMD A4-9120 RADEON R3, 4 COMPUTE CORES 2C+2G', `OS` = 'Microsoft Windows 10 Pro' WHERE `Id` = '1'
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '` = 'Acer1', `Model` = 'Aspire A315-21', `SN` = 'NXGNVS...' at line 4
***error in your SQL syntax หน้า response ผิด syntax อะไรหรอครับ ผมเช็คแล้ว ตามที่ no.14 แนะนำมาครับ***
ประวัติการแก้ไข 2021-10-31 22:27:07
Date :
2021-10-31 22:23:39
By :
TeeTs
เปิดปิด backtick (`) ไม่ครบตรง Manufacturer
ตรวจให้ดีครับว่ามันจะต้องมี `Manufacturer` = 'xxx'
Date :
2021-10-31 22:41:56
By :
mr.v
ตอบความคิดเห็นที่ : 40 เขียนโดย : TeeTs เมื่อวันที่ 2021-10-31 23:14:22
รายละเอียดของการตอบ ::
เห็นมั้ยว่าทำอย่างที่ผมบอกมันจะแก้ได้เร็ว และจะเสร็จไปนานแล้ว เพราะคนช่วยไม่ต้องเดาทุกครั้ง
1. ปุ่ม ` เรียกว่า back tick ถ้าเปลี่ยนภาษาโดยใช้ปุ่มนี้จะกดไม่ได้ ให้กด ALT+96 แต่ถ้าเปลี่ยนภาษาโดยใช้ปุ่มอื่น เช่น ALT+Shift หรือ [windows]+space แบบที่ผมใช้อยู่ จะกด backtick ได้เลย
2. backtick มีไว้คลุมชื่อฐานข้อมูล ชื่อตาราง ชื่อคอลัมน์ เพื่อบางกรณีชื่อคอลัมน์ไปตรงคำต้องห้าม ก็คลุมด้วย backtick มันจะทำงานได้ ไม่งั้นจะ error
ถ้าไม่มีอะไรตรงคำต้องห้ามจะไม่คลุม backtick ก็ได้ เช่น SELECT * FROM mytable จะได้เท่ากันกับ SELECT * FROM `mytable`
แต่ผมจะแนะนำให้คลุมเพื่อแยกแยะให้ชัดเจนดูง่าย .
quote (') มีไว้เพื่อคลุมค่าที่เป็น string เช่น WHERE `column` = 'value'
ถ้าบางกรณีแบบนี้จะ error เช่น SELECT * FROM date เพราะคำว่า date เป็นคำสงวน
1 2 แต่ถ้าคลุมด้วย backtick มันจะทำงานได้ เช่น SELECT * FROM `date`
3. quote(') เอาไปคลุมชื่อตารางไม่ได้ ถ้าอยากลองก็ทดลองคำสั่งนั้นใน phpmyadmin แล้วดูว่ามัน error มั้ย? บางทีเรื่องอยากรู้อยากเห็นง่ายๆแบบนี้ทำได้ด้วยการทดลองเอาเอง และก็ควรหมั่นทดลองจะได้รู้แล้วสนุกด้วย.
Code (SQL)
SELECT * FROM 'rdb_posts'
Quote: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''rdb_posts''
4. คำตอบอยู่ใน 2. ส่วนการคลุมด้วยปีกกา (curly bracket) เป็นภาษาของ PHP ใช้กับการกำหนด string ด้วย double quote เช่น $string = "My {$name}"; แต่ถ้ากำหนด string ด้วย single quote จะใช้ไม่ได้ เช่น $string = 'My {$name}'; อยากรู้ไปทดลองเอาเอง หมั่นทดลองทดสอบ.
5. อธิบายไปแล้วใน 2. ดูตัวอย่างเพิ่มเติม
https://dev.mysql.com/doc/refman/8.0/en/identifiers.html
https://mariadb.com/kb/en/identifier-names/
Date :
2021-10-31 23:41:07
By :
mr.v
ตอบความคิดเห็นที่ : 40 เขียนโดย : TeeTs เมื่อวันที่ 2021-10-31 23:14:22
รายละเอียดของการตอบ ::
backtick (`) หรือ เคาะเว้นวรรค หรือ ไม่เว้น
หรือ '{$Computername_up}' มันก็คือมาตรฐานการเขียนเช่นกัน
พอคุณเขียน javascript มันก็คล้ายๆกัน
มันเป็น Format, Code Style ในการเขียนให้อ่านง่ายเป็นระเบียบเรียบร้อย
ซึ่งมันเป็นข้อตกลงกันในทีม ส่วนใหญ่เรายึดตามมาตรฐานการเขียน (Code Standard)
ต่อจากนั้นคุณจะต้องรู้การ Refactoring, TDD
หรือรวมถึงการเลือกใช้ภาษาให้เหมาะกับงาน
ซึ่งต่อไปคุณต้องเรียน node, mongo, express, react, vue, angular, progressive web application, firebase etc,...
Code
เพราะนักพัฒนาไม่ได้สื่อสารแค่ภาษาเดียว
Date :
2021-11-01 08:10:46
By :
Guest
หลังจากปรับใช้ code ครับ ขึ้นแบบนี้ครับ
ภาพที่ 1
Code (form-edit.php)
<?php
require_once('../../../database/connection.php');
// require_once('edit.php');
$include_update_php = 'edit.php'; // ชื่อไฟล์ที่ใช้ รับข้อมูลมา อัพเดท
$include_form_edit = 'update_form.php'; // บรรทัดนี้อยู่ใน form-edit.php แล้ว ผมไม่เข้าใจว่าทำไมต้องเรียกมาอีก
if(isset($_POST['btn_update'])){
include $include_update_php; // do update database และ $update_php เอาจากตัวแปรไหนครับ ถ้าไม่ผิดคือ $include_update_php หรือไม่ครับ
header('location: index.php'); // ป้องกันการกด f5 ย้อนกลับ แล้วเกิดการ ทำงานซ้ำ
}elseif(isset($_GET['update_id'])){
include $include_form_edit; // แสดง form อย่างเดียว
}else{
header('location: index.php');
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>แก้ไขข้อมูลทรัพย์สิน | CMS</title>
<link rel="shortcut icon" type="image/x-icon" href="../../../assets/images/logo.png">
<!-- stylesheet -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Kanit" >
<link rel="stylesheet" href="../../../plugins/fontawesome-free/css/all.min.css">
<link rel="stylesheet" href="../../../plugins/sweetalert2-theme-bootstrap-4/bootstrap-4.min.css">
<link rel="stylesheet" href="../../../assets/css/adminlte.min.css">
<link rel="stylesheet" href="../../../assets/css/style.css">
</head>
<body class="hold-transition sidebar-mini">
<div class="wrapper">
<?php include_once('../includes/sidebar.php') ?>
<div class="content-wrapper pt-3">
<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card shadow">
<div class="card-header border-0 pt-4">
<h4>
<i class="fas fa-desktop"></i>
แก้ไขข้อมูลผู้ดูแล
</h4>
<a href="./" class="btn btn-info my-3 ">
<i class="fas fa-list"></i>
กลับหน้าหลัก
</a>
</div>
<form action="edit.php" method="POST">
<div class="card-body">
<div class="row">
<div class="col-md-6 px-1 px-md-5">
<div class="form-group">
<label for="Computername">Computer Name</label>
<input type="text" class="form-control" name="txt_Computername" id="Computername" value="<?php echo $Computername; ?>" required>
</div>
<div class="form-group">
<label for="Username">Username</label>
<input type="text" class="form-control" name="txt_Username" id="Username" value="<?php echo $Username; ?>" required>
</div>
<div class="form-group">
<label for="Manufacturer">Manufacturer</label>
<input type="text" class="form-control" name="txt_Manufacturer" id="Manufacturer" value="<?php echo $Manufacturer; ?>" required>
</div>
<div class="form-group">
<label for="Model">Model</label>
<input type="text" class="form-control" name="txt_Model" id="Model" value="<?php echo $Model; ?>" required>
</div>
</div>
<div class="col-md-6 px-1 px-md-5">
<div class="form-group">
<label for="Serialnumber">Serial Number</label>
<input type="text" class="form-control" name="txt_SN" id="Serialnumber" value="<?php echo $SN; ?>" required>
</div>
<div class="form-group">
<label for="CPU">CPU</label>
<input type="text" class="form-control" name="txt_CPU" id="CPU" value="<?php echo $CPU; ?>" required>
</div>
<div class="form-group">
<label for="OS">OS</label>
<input type="text" class="form-control" name="txt_OS" id="OS" value="<?php echo $OS; ?>" required>
</div>
</div>
</div>
</div>
<div class="card-footer">
<!-- <input type="hidden" name="update_id" value="<?php echo row["Id"]; ?>">
<input type="hidden" name="update_id" value="<?php echo $Id; ?>"> -->
<input type="hidden" name="update_id" value="<?php echo $_REQUEST['update_id']; ?>">
<button type="submit" name="btn_update" class="btn btn-primary btn-block mx-auto w-50" value="update">บันทึกข้อมูล</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<?php include_once('../includes/footer.php') ?>
</div>
<!-- SCRIPTS -->
<script src="../../../plugins/jquery/jquery.min.js"></script>
<script src="../../../plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="../../../plugins/sweetalert2/sweetalert2.min.js"></script>
<script src="../../../assets/js/adminlte.min.js"></script>
</body>
</html>
Date :
2021-11-01 15:53:43
By :
TeeTs
เจอปัญหา ในหน้า pages manager
พึ่งเปิดไปช่วงเช้าครับ
link นี้ครับ : https://www.thaicreate.com/php/forum/136451.html
ส่วนในโพสต์ที่ปรึกษานี้ เป็น pages masterpc ครับ ที่พึ่งแก้ได้ไปเมื่อวานครับ
Date :
2021-11-01 16:04:34
By :
TeeTs
Code (PHP)
<?php
//------ update_form.php ----------------- ไฟล์ที่ 1
require_once('../../../database/connection.php');
$include_update_php = 'edit.php'; // ประกาศตัวแปรเก็บ ชื่อไฟล์ที่ใช้ รับข้อมูลมา อัพเดท โค๊ดสำหรับ อัพเดทไว้ในไฟล์นี้
$include_form_edit = 'up_form.php'; // ประกาศตัวแปรเก็บชื่อไฟล์ สำหรับ แสดง form โค๊ดสำหรับ แสดง form ไว้ในไฟล์นี้
// ตรวจสอบว่า มาจากฟอร์ม อัพเดทหรือไม่
if(isset($_POST['btn_update'])){ // ถ้าใช่ให้ include file ด้วยตัวแปรที่ประกาส
include $include_update_php;
header('location: index.php');
// เมื่อทำงานเสร็จ redirect ไปยังไฟล์ที่ต้องการ ป้องกันการกด f5 ย้อนกลับ แล้วเกิดการ ทำงานซ้ำ
}elseif(isset($_GET['update_id'])){ // ถ้ามีตัวแประไอดี สำหรับแก้ไข
// โหลดไฟล์ แสดงฟอร์ม แก้ไข
include $include_form_edit; // แสดง form อย่างเดียว
}else{
header('location: index.php')
}
// สิ้นสุดไฟล์ที่ตรงนี้ ไม่มี โค๊ดต่อจากนี้แล้ว
Code (PHP)
<?php
//--- edit.php ------------------------------ ไฟล์ที่ 2
//
Code (PHP)
<?php
//---- up_form.php ----------------- ไฟล์ที่ 3
<!doctype html>
<html>
....
...
แยกไฟล์ แบบนี้ครับ
ปล. อันนี้เป็น แค่วิธีการ แยก / จัดสรรไฟล์ เป็นพื้นฐาน
จะได้ประโยชน์มากๆ เมื่อไฟล์มีขนาดใหญ่ กว่า 4096 byte( ขนาด 1 เซคเม้นต์ในการอ่าน harddisk แต่ละครั้ง ของ ระบบ buffer ntfs มาตรฐาน)
ถ้าไฟล์ ใหญ่พอที่สามารถอ่านได้ในครั้งเดียว ก็จะเร็วขึ้น
ประวัติการแก้ไข 2021-11-01 20:50:09
Date :
2021-11-01 20:32:18
By :
Chaidhanan
ขอบคุณครับ
Date :
2021-11-02 17:59:51
By :
TeeTs
Load balance : Server 04