เมือกดadd เพิ่มรายการสั่งสินค้ากดแล้วรีเซ็ตหน้าทำให้รายการและชื่อหายต้องพิมใหม่ แก้ยังใงครับและสินค้าพอเพิ่มรายการสั่งที่สองราคาไม่เเสดง(โปเจคจบครับขอความกรุณาครับ)
[
Code (PHP)
<?php
include('menutop.php');?>
<!--start program-->
<script src='jquery-3.1.1.min.js' type='text/javascript'></script>
<!-- jQuery UI -->
<link href='jquery-ui.min.css' rel='stylesheet' type='text/css'>
<script src='jquery-ui.min.js' type='text/javascript'></script>
<?php
// php select option value from database
$hostname = "localhost";
$username = "root";
$password = "";
$databaseName = "shop";
// connect to mysql database
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
// mysql select query
//$query = "SELECT * FROM member";
$query1 = "SELECT * FROM paymant";
$query2 = "SELECT * FROM product";
// for method 1
//$result1 = mysqli_query($connect, $query);
$result2 = mysqli_query($connect, $query1);
$result3 = mysqli_query($connect, $query2);
?>
<div class="container" align="center">
<form id="id" name="documents" method="post" action="" style="width: auto; margin-left:10%;">
<div class="panel panel-default panel-table" style="width:60rem;">
<div class="row">
<div class="row clearfix">
<div class="col-md-12">
<div class="modal-header">
<h4 class="modal-title"> สร้างรายการขาย </h4> </div>
<div class="modal-header">
<div class="row">
<div class="col-sm-4">
<div class="row">
<div class="col-sm-10 form-group">
<label>ชื่อลูกค้า</label>
<input type="text" id='autocomplete' class="form-control" required placeholder="ชื่อสินค้า"/>
</div>
<div class="col-sm-10 form-group" align = "center" >
<label>เบอร์โทรศัพท์ลูกค้า</label>
<input type="text" id='selectuser_id2' class="form-control" required placeholder="เบอร์โทรศัพท์ลูกค้า"/>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="row">
<div class="col-sm-10 form-group">
<label>นามสกุล</label>
<input type="text" id='selectuser_id' class="form-control" required placeholder="นามสกุล"/>
</div>
<div class="col-sm-18 form-group">
<label>ที่อยู่ลูกค้า</label>
<textarea id='selectuser_id3' rows="2" cols="40" class="form-control" placeholder="ที่อยู่ลูกค้า"></textarea>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="row">
<div class="col-sm-10 form-group">
<label>รหัสลูกค้า</label>
<input type="text" id='selectuser_id1' class="form-control" required placeholder="รหัสลูกค้า"/>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="col-sm-7 form-group">
<label>สถานะการจ่าย</label>
<select name="pay_id" class="form-control" required>
<?php while($row1 = mysqli_fetch_array($result2)):;?>
<option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>
<?php endwhile;?>
</select>
</div>
</div>
<center><div class="panel-heading"></center>
<table class="table table-bordered table-hover" id="tab_logic">
<thead>
<tr class="w3-table-all" style="background-color:#CCFFFF;color:black">
<th class="text-center"> # </th>
<th class="text-center"> สินค้า </th>
<th class="text-center"> จำนวน </th>
<th class="text-center"> ราคา </th>
<th class="text-center"> ราคารวม </th>
</tr>
</thead>
<tbody>
<tr id='addr0'>
<td>1</td>
<td>
<select name="pd_id" id="pd_id" class="form-control" required>
<?php while($row1 = mysqli_fetch_array($result3)):;?>
<!-- เพิ่ม attribute เพื่อเก็บราคาจากฐานข้อมูล เปลี่ยน $row1['price'] เป็นชื่อคอลัมน์ที่เก็บราคาสินค้า -->
<option value="<?php echo $row1[0];?>" pd_retail="<?php echo $row1['pd_retail'];?>"><?php echo $row1[1];?></option>
<?php endwhile;?>
</select>
</td>
<td><input type="number" name='qty[]' placeholder='Enter Qty' class="form-control qty" step="0" min="0"/></td>
<td><input type="number" name='pd_retail[]' placeholder='Enter Unit pd_retail' class="form-control pd_retail" step="0.00" min="0"/></td>
<td><input type="number" name='total[]' placeholder='0.00' class="form-control total" readonly/></td>
</tr>
<tr id='addr1'></tr>
</tbody>
</table>
<div class="row clearfix">
<div class="col-md-12">
<button id="add_row" class="btn btn-default pull-left">Add Row</button>
<button id='delete_row' class="pull-right btn btn-default">Delete Row</button>
</div>
</div>
<div class="row clearfix" style="margin-top:20px">
<div class="pull-right col-md-4">
<table class="table table-bordered table-hover" id="tab_logic_total">
<tbody>
<tr class="w3-table-all" style="background-color:#CCFFFF;color:black">
<th class="text-center">Sub Total</th>
<td class="text-center"><input type="number" name='sub_total' placeholder='0.00' class="form-control" id="sub_total" readonly/></td>
</tr>
<tr>
<th class="text-center">Tax</th>
<td class="text-center">
<div class="input-group mb-2 mb-sm-0">
<input type="number" class="form-control" id="tax" placeholder="0">
<div class="input-group-addon">%</div>
</div>
</td>
</tr>
<tr>
<th class="text-center">Tax Amount</th>
<td class="text-center"><input type="number" name='tax_amount' id="tax_amount" placeholder='0.00' class="form-control" readonly/></td>
</tr>
<tr>
<th class="text-center">Grand Total</th>
<td class="text-center"><input type="number" name='total_amount' id="total_amount" placeholder='0.00' class="form-control" readonly/></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<input type="submit" value="ตกลง" class="btn btn-primary" >
<a href="manage_sale.php"><button type="button" class="btn btn-danger">ยกเลิก</button></a>
<a :href="" class="btn btn-warning" ><i class="ti-printer"></i> ต้นฉบับ</a>
</div>
<script>
$(document).ready(function () {
option_list('addr0');
var i = 1;
$("#add_row").click(function () {
b = i - 1;
$('#addr' + i).html($('#addr' + b).html()).find('td:first-child').html(i + 1);
$('#tab_logic').append('<tr id="addr' + (i + 1) + '"></tr>');
option_list('addr' + i);
i++;
});
$("#delete_row").click(function () {
if (i > 1) {
$("#addr" + (i - 1)).html('');
i--;
}
calc();
});
$(".product").on('change', function () {
option_checker(this)
});
$('#tab_logic tbody').on('keyup change', function () {
calc();
});
$('#tax').on('keyup change', function () {
calc_total();
});
// ย้าย onchange ของ select มาไว้ใน ready() ด้วยกันโค้ดจะได้ดูเป็นสัดส่วน
$( "pd_id" ).change(function () {
document.getElementById("loc").innerHTML="You selected: "+document.getElementById("pd_id").value;
});
// แต่แนะนำให้ใช้ id selector ป้องกันเผื่ออยากใส่ select option ในหน้านี้เพิ่มเติมภายหลัง
$("#pd_id").change(function () {
// ดึงราคาจาก attribute (price) ของ select option ที่มีสถานะเป็น selected มาแสดงใน column ราคา
$("#addr0 input[name='pd_retail[]']").val($(this).find('option:selected').attr('pd_retail'));
});
});
function option_checker(id) {
var myOption = $(id).val();
var s = 0;
$('#tab_logic tbody tr select').each(function (index, element) {
var myselect = $(this).val();
if (myselect == myOption) {
s += 1;
}
});
if (s > 1) {
alert(myOption + ' as been added already try new..')
}
}
function option_list(id) {
}
function calc() {
$('#tab_logic tbody tr').each(function (i, element) {
var html = $(this).html();
var qty = $(this).find('.qty').val();
var pd_retail = $(this).find('.pd_retail').val();
$(this).find('.total').val(qty * pd_retail);
calc_total();
});
}
function calc_total() {
total = 0;
$('.total').each(function () {
total += parseInt($(this).val());
});
$('#sub_total').val(total.toFixed(2));
tax_sum = total / 100 * $('#tax').val();
$('#tax_amount').val(tax_sum.toFixed(2));
$('#total_amount').val((tax_sum + total).toFixed(2));
}
</script>
<script type='text/javascript' >
$( function() {
$( "#autocomplete" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "fetchData.php",
type: 'post',
dataType: "json",
data: {
search: request.term
},
success: function( data ) {
response( data );
}
});
},
select: function (event, ui) {
$('#autocomplete').val(ui.item.label); // display the selected text
$('#selectuser_id').val(ui.item.value); // save selected id to input
$('#selectuser_id1').val(ui.item.value1); // save selected id to input
$('#selectuser_id2').val(ui.item.valuefi); // save selected id to input
$('#selectuser_id3').val(ui.item.valuef); // save selected id to input
return false;
}
});
// Multiple select
$( "#multi_autocomplete" ).autocomplete({
source: function( request, response ) {
var searchText = extractLast(request.term);
$.ajax({
url: "fetchData.php",
type: 'post',
dataType: "json",
data: {
search: searchText
},
success: function( data ) {
response( data );
}
});
},
select: function( event, ui ) {
var terms = split( $('#multi_autocomplete').val() );
terms.pop();
terms.push( ui.item.label );
terms.push( "" );
$('#multi_autocomplete').val(terms.join( ", " ));
// Id
var terms = split( $('#selectuser_ids').val() );
terms.pop();
terms.push( ui.item.value );
terms.push( "" );
$('#selectuser_ids').val(terms.join( ", " ));
return false;
}
});
});
function split( val ) {
return val.split( /,\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
</script>
Tag : PHP, XAMPP
ประวัติการแก้ไข 2020-09-01 02:17:46 2020-09-02 15:31:18
Date :
2020-09-01 02:13:22
By :
nan433022
View :
1074
Reply :
8
กรณีที่ reset แล้วหาย ให้ศึกษาเรื่อง session
ส่วนรายการที่สองไม่แสดง ให้อ้างอิง object เป็นแบบ class array
Code (JavaScript)
<div class="input_div" >abcd</div>
<div class="input_div" >xyz</div>
<script>
alert( $('.input_div').eq(1).html());
</script>
Date :
2020-09-01 08:45:42
By :
Chaidhanan
https://jsfiddle.net/508fm9o4/
การใช้ js (jquery) เก็บ html บรรทัดแรกมา append ต่อบรรทัดล่าง ถ้าตัวเนื้อหา html มันไม่มีกำหนด value="123" อะไรแบบนี้ มันก็ไม่มีทางที่จะเพิ่มแล้วแสดงราคาได้ เพราะมันเอา html ไม่ได้เอาสิ่งที่ user เพิ่มมาทีหลังซึ่งอยู่ใน browser
ถ้าจะเอาสิ่งที่ user เพิ่มมาก็ต้องไล่วนเอา .value() ของบรรทัดแรกมาใส่อีกทีหนึ่งหลังจากเพิ่มบรรทัดแล้ว
แบบนี้
https://jsfiddle.net/508fm9o4/1/
ประวัติการแก้ไข 2020-09-01 10:19:29
Date :
2020-09-01 10:14:39
By :
mr.v
หัวข้อบอก โปเจคจบ แต่ใน คห.3 ว่าไม่ค่อยมีพื้นฐาน...
คหสต.ไม่ได้ว่าหรือตำหนิ แต่อยากแนะนำจากใจจริง
ถ้าโปรเจคยังไม่ต้องส่งและนำเสนออาจารย์ภายในระยะเวลาอันใกล้นี้ เช่น ไม่ได้ส่งใน 1-2 สัปดาห์
ควรเริ่ม ทบทวนพื้นฐาน HTML, PHP, JS (, CSS) ...ไม่งั้นรอดยาก
https://www.w3schools.com/html/ (มีทุกภาษากดเลือกที่เมนูด้านบน ถ้าไม่เข้าใจใช้ google translate...etc)
https://www.thaicreate.com/php.html (แบบภาษาไทย ตำราเก่าแล้วแต่คำสั่งพื้นฐานยังใช้ได้เหมือนเดิม)
https://www.thaicreate.com/jquery.html (แบบภาษาไทย ตำราเก่าแล้วแต่คำสั่งพื้นฐานยังใช้ได้เหมือนเดิม)
ตำราใหม่ล่าสุด (ถ้าไม่เข้าใจใช้ google translate หรือมาถามในกระทู้)
https://api.jquery.com/
https://learn.jquery.com/using-jquery-core/
https://www.php.net/manual/en/
มีทบทวนก็ต้องมีการเรียนรู้สิ่งใหม่ๆ
1. dynamic website
http://www.genstyles.com/tips-4.html
https://www.youtube.com/results?search_query=%E0%B8%AA%E0%B8%AD%E0%B8%99+dynamic+php
2. การใช้ Developer Tools
https://medium.com/@fonfahkhum/%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81%E0%B8%81%E0%B8%B1%E0%B8%9A-google-chrome-dev-tools-%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-dev-tools-%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%96%E0%B8%AD%E0%B8%B0-a7b6dd1be27b
3. ภาษาอังกฤษ
4. Search Engine i.e. google yahoo bing, ...
5. สำคัญที่สุด คือ คำค้น เช่น ที่คุณถามต้องแก้ส่วนไหน หรืออาจสงสัยว่า session คืออะไร id, name, value คืออะไร ก็แค่ใส่คำค้นตามภาษา ใน search engine หรือ youtube ก็จะได้คำตอบที่เป็นพื้นฐาน ให้เราได้เรียนรู้อย่างมากมาย เช่น php session, html id, html name, html value, jquery selector...
ฯลฯ
ไม่ใช่ถามหาโค้ดอย่างเดียวโดยที่ยังไม่ได้ใช้ความพยายามให้ถึงที่สุด...แบบนี้บ้านผมเรียกขี้เกียจ
ส่วนคำถามของคุณลองใช้ Developer Tools ของ browser ดู <tr id='addrX '> ของแต่ละตัวหลังจากที่กด Add Row จะเห็นภาพชัดเจนว่า เนื้อหาใน td ของ ตัวที่สองและสามได้มาไม่ครบเหมือนตัวแรก element ไหนขาดก็ค่อยไปเขียนเพิ่มในส่วน dynamic code
ประวัติการแก้ไข 2020-09-01 22:17:48
Date :
2020-09-01 22:13:34
By :
PhrayaDev
- มันทำได้หลายท่าเลยระบบแบบนี้ ถ้าทำแนวที่ทำอยู่ตอนนี้ไม่ได้ ให้ไปแนวๆ shopping cart เลยครับ
- หน้าสรุปค่อยมาเปลี่ยน price and quantify
- ส่วนเรื่องการคำนวนหน้าสรุป ยกไปให้ ajax&jquery เลยครับ
ปล.สำคัญที่สุดของระบบนี้ ถ้าเป็น php คือ Session ถ้าเป็น js คือ localStorage
Date :
2020-09-02 09:47:36
By :
Genesis™
ขอบคุณทุกคำแนะนำครับ
Date :
2020-09-02 13:44:16
By :
nan433022
Load balance : Server 01