สอบถามทำ Insert และ Update พร้อมกัน กับวิธีเรียก CSS ให้มาครบครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามทำ Insert และ Update พร้อมกัน กับวิธีเรียก CSS ให้มาครบครับ

สอบถามทำ Insert และ Update พร้อมกัน กับวิธีเรียก CSS ให้มาครบครับ
ขอถาม 2 คำถามน่ะครับ
คำถามแรก
พอดีกำลังทำเว็บขายสินค้า แล้วเวลาที่ลูกค้าไม่ได้ชำระเงินตามเวลาที่กำหนด ก็จะให้ระบบเปลี่ยนสถานะเป็นยกเลิกอัตโนมัตืครับ ซึ่งในโค้ดผมๆ ใช้คำสั่ง Insert การยกเลิกเข้าไปในตาราง order_cancel และใช้คำสั่ง Update เข้าไปปรับสถานะในตาราง order ครับ
ซึ่งจากที่ผมได้ทดสอบคือเมื่อเรากดเข้าไปในหน้าออร์เดอร์นั่้นมันจะ Insert ในตาราง order_cancel ก่อน แล้วต้องรีเฟรชจออีกรอบมันถึงจะ Update ปรับสถานะในตาราง order
ผมต้องการจะทำทั้งสองอย่างพร้อมกันโดยไม่ต้องรีเฟรชอีกรอบ ต้องแก้ไขอย่างไรดีครับ?


<?php 
include_once("header.php"); 

?>  



</script>
<title>รายการสั่งซื้อ</title>

<body>
         
  <?php

 $perpage = 15;
 if (isset($_GET['page'])) {
 $page = $_GET['page'];
 } else {
 $page = 1;
 }    
 $start = ($page - 1) * $perpage;
  
$member_id = $_SESSION['member_id'];
    
    $search = "";
          
    if(isset($_POST["search_bt"])){        
    
    $search = $_POST["search"];  
    $type = $_POST["type"]; 
        if($search==""){
            echo "<script>alert('โปรดใส่ข้อมูลที่ต้องการค้นหา')</script>";
            echo "<script>window.location='member-orders.php'</script>";
        }elseif($type==""){
            echo "<script>alert('โปรดเลือกประเภทที่ต้องการค้นหา')</script>";
            echo "<script>window.location='member-orders.php'</script>";
        }    
        

     $select = "Select * From orders Where member_id='$member_id' and $type Like '%$search%' Order By order_id DESC";    
        
    }else{              
    
    $select = "Select * From orders Where member_id='$member_id' Order By order_id DESC Limit {$start} , {$perpage} ";  
    
    }
      
    $query = mysqli_query($link,$select) or die(mysqli_error($link));

 ?>
    
     <div class="container theme-showcase" role="main">
    <div class="row">
  <div class="">     
             
<FORM method="POST"> 

<div class="panel panel-mbrown">
    <div class="panel-heading">
        <h3 class="panel-title"><b><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> รายการสั่งซื้อ</b></h3>
            <p align="right">
                <a href="profile.php" class="btn btn-default"><span class="glyphicon glyphicon-user" aria-hidden="true"></span> ไปหน้าโปรไฟล์</a></p>
    </div>
   
    
    
    <div class="table-responsive">
    <div>    
    <table class="table table-bordered table-striped table-hover" id="responsive-example-table" cellspacing="0">
      <thead>  
        <tr class="info_brown">
        <th width="100"><center>รหัสออร์เดอร์</center></th>    
        <th width="80"><center>สินค้าที่สั่งซื้อ</center></th>  
        <th width="100"><center>วันที่สั่งซื้อ</center></th>
        <th width=""><center>สถานะออร์เดอร์</center></th>
        <th width="100"><center>ใบสั่งซื้อ</center></th>    
        <th width="200"><center>การชำระเงินและการจัดส่ง</center></th>      
        <th width="140"><center>แจ้งยกเลิกสั่งซื้อ</center></th>   
        </tr>
      </thead>
    <tbody>

   <?php  
        function DateDiff($strDate1,$strDate2) //คำนวณเวลา
	 {
				return (strtotime($strDate2) - strtotime($strDate1))/  ( 60 * 60 * 24 );  // 1 day = 60*60*24
	 }
        
        while ($data = mysqli_fetch_array($query)) { 
     
    $p_status = "";     
    $status = $data['status'];
    $buy_date = $data['buy_date'];
    $today = date("Y-m-d H:i");
    $order_id = $data['order_id'];        
            

  $dayd = DateDiff("$buy_date","$today");
    
      if($status == "1"){
          $p_status = "รอการชำระเงิน";
      }elseif($status == "2"){
          $p_status = "ชำระเงินเรียบร้อย รอการจัดส่ง";
      }elseif($status == "3"){
          $p_status = "จัดส่งเรียบร้อย";
      }elseif($status == "4"){
          $p_status = "การสั่งซื้อถูกยกเลิกโดยลูกค้า"; 
      }elseif($status == "5"){
          $p_status = "การสั่งซื้อถูกยกเลิกเพราะเลยกำหนดชำระเงิน";
      }else{
      }
    
    
 
          ?>      
  <tr>
      
    <td><?php echo $order_id ;?></td>
      
    <td><center><a href="member-orders_detail.php?id=<?php echo md5(md5(md5($order_id))) ;?>" class="btn btn-sm btn-primary" target="_blank"><span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> สินค้าที่สั่งซื้อ</a></center></td>   
      
    <td><center><?php echo $data['buy_date'];?><br>
        <?php //echo $dayd; 
            $statusz = "5";
            $cause = "2"; 
            $cancel_date = date("Y-m-d H:i:s"); 
            $admin_id = "1";
            
            if(($dayd>=7)and($status==1)){  //ไม่เกิน7วัน
                $last = $dayd-"7";
                //echo "เกินกำหนด7วัน "." (เกินมาแล้ว".number_format($last,0)."วัน)";
                
            $update = "Update orders Set status='$statusz' Where order_id=$order_id  ";
            mysqli_query($link,$update) or die(mysqli_error($link));
            
            $insert = "Insert Into order_cancel (cause,cancel_date,order_id,admin_id) Values ('$cause','$cancel_date','$order_id','$admin_id')";
            mysqli_query($link,$insert) or die(mysqli_error($link));
                
            }else{
                //echo "ยังไม่เกินกำหนด";
        }?>
        </center></td>
      
      
      
    <td><center><?php echo $p_status;?></center></td>
    
    <td><center><a href="order_paper.php?id=<?php echo md5(md5(md5($order_id))); ?>" class="btn btn-sm btn-info" target="_blank"><span class="glyphicon glyphicon-print" aria-hidden="true"></span> ปริ้นใบสั่งซื้อ</a></center></td> 
      
    <td><center><a href="member-orders_pay-ship.php?id=<?php echo md5(md5(md5($order_id))); ?>" class="btn btn-sm btn-primary" ><span class="glyphicon glyphicon-paste" aria-hidden="true"></span> การชำระเงิน และ<br><i class="fa fa-truck" aria-hidden="true"></i> การจัดส่ง</a></center></td>   
       
      <?php 
           
    
            $select1 = "Select orders.*, order_cancel.* From orders Inner Join order_cancel On order_cancel.order_id=orders.order_id Where orders.order_id = '$order_id '";
            $query1 = mysqli_query($link,$select1) or die(mysqli_error($link));
            $data1 = mysqli_fetch_array($query1); 
      ?>
    <td><center>
        <?php 
                 $cancel_date = $data1['cancel_date'];
                 if(($status == "2")or($status == "3")){
                     echo "ไม่มี";
                         
                 }elseif($cancel_date == ""){ ?> 
        
        <a href="member-orders_cancel.php?id=<?php echo md5(md5(md5($order_id)));?>" class="btn btn-sm btn-warning"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> กดยกเลิก</a>
        
         <?php 
                  }else{
                      echo $data1['cancel_date'];
                  }?>
        </center></td>  
  </tr>
        
 <?php } ?>          
   
 
      </tbody>
    </table>
    </div></div></div>
           
 </FORM>
    
     </div></div></div>        
   
<?php mysqli_close($link); ?> 
    
  <!-- footer -->
<?php include_once("footer.php"); ?>

</body>

</html>



<u>
คำถามที่สอง

</u>คือผมใส่ link CSS ไว้ในไฟล์ header.php แล้ว include_once("header.php"); มาแต่ละหน้าอีกที  
ปัญหาคือ บาง link CSS ไม่ทำงานครับ  แต่ถ้าเอามาใส่ในหน้านั้นตรงๆก็แสดงได้ปกติครับ  จะต้องแก้ไขอย่างไรดีครับ?

 
<!doctype html>
<html>

<head>
  <link rel="shortcut icon" type="image/x-icon" href="<?php echo $base_path; ?>/img/system/Massage-48.png" />    
  <meta http-equiv=Content-Type content="text/html; charset=utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">    
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <link rel="stylesheet" href="<?php echo $base_path; ?>/css/bootstrap.min.css">
  <link rel="stylesheet" href="<?php echo $base_path; ?>/css/style-by_NO.css">   
  <link rel="stylesheet" href="<?php echo $base_path; ?>/css/font-awesome.min.css">
  <link rel="stylesheet" href="<?php echo $base_path; ?>/css/stacktable.css"><!--ตัวแบ่งคอลัมน์เมื่อจอเล็ก-->
  <script src="<?php echo $base_path; ?>/js/jquery-3.1.1.min.js"></script>
  <script src="<?php echo $base_path; ?>/js/bootstrap.min.js"></script>
  <script src="<?php echo $base_path; ?>/js/stacktable.js" type="text/javascript"></script>      
  <script src="<?php echo $base_path; ?>/ckeditor/ckeditor.js" type="text/javascript"></script>
      
<!--Start scroll-to-top-->
    <script>
$(document).ready(function(){

	// hide #back-top first
	$("#back-top").hide();
	
	// fade in #back-top
	$(function () {
		$(window).scroll(function () {
			if ($(this).scrollTop() > 100) {
				$('#back-top').fadeIn();
			} else {
				$('#back-top').fadeOut();
			}
		});

		// scroll body to 0px on click
		$('#back-top a').click(function () {
			$('body,html').animate({
				scrollTop: 0
			}, 800);
			return false;
		});
	});

});
</script>

    <!--End scroll-to-top-->
 
<!--fancyBox-->    
<?php include_once("fancyBox/fancybox.php"); ?>    
    
</head>


NO ON 25-10-2016 23:34:28

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
วิธีการที่จะไม่ต้องให้รีเฟรซ เพื่อให้เห็นว่าสถานะเปลี่ยนแล้ว ต้องรันนอกลูป while ก่อนหนึ่งครั้ง 
เพราะตอนที่เราแสดง ค่าจะเป็นค่าเดิมที่คิวรี่มา ทั้งที่จริงๆ แล้วค่าได้อัพเดทไปแล้ว

แต่โดยปกติการรันค่าเพื่ออัพเดทสถานะในกรณีแบบนี้ เขาจะใช้วิธีการสร้างไฟล์สำหรับอัพเดทสถานะไว้
แล้วใช้ cronjob ให้ไปรันไฟล์ที่ต้องการ เป็นทุก ชัวโมง นาที แล้วแต่จะกำหนด 


ปัญหาที่สองต้องเช็ค path ว่าลิ้งค์กรณี include มีการเรียกไฟล์ถูกต้องหรือไม่ ดูให้วิวซอร์สตอนรันไฟล์นั้น
แล้วแก้ไข path ไฟล์ให้ถูกต้อง


ninenik 26-10-2016
 ความคิดเห็นที่ 2
ขอบคุณมากครับ
พอดีเป็นโปรเจ็คเรียนส่ง ใช้โฮสของมหาลัย ทางมหาลัยไม่ให้ปรับตั้งค่าอะไรได้เลย

ส่วนเรื่องpath ผมวิวซอร์สดูแล้ว การเรียกไฟล์ถูกต้อง แต่มันมาไม่ครบ ตอนนี้ผมใช้วิธีแก้โดยการไฟล์ไหนไม่มา ก็เอาใส่ในหน้านั้นๆตรงๆแบบไม่ผ่านไฟล์ include_once("header.php"); ไปแล้วครับ


NO ON 26-10-2016 11:16
 ความคิดเห็นที่ 3
ผมขอสอบถามปัญหาเพิ่มน่ะครับ
ผมกำลังทำสรุปยอดขายสินค้า ประจำวัน/เดือน/ปีครับ
พอดีผมไม่รู้จะใช้คำสั่งอะไรแก้ปัญหาตรงที่มีรายการสินค้าเหมือนกันให้รวมเป็นแถวเดียว ทั้งชื่อสินค้า,จำนวนสินค้า และราคา เรียงตามวันที่ซื้อครับ

ตารางที่ใช้มี
1. ตาราง products เก็บสินค้าที่ขาย -> product_id(คีย์หลัก), product_name(ชื่อสินค้า)
2. ตาราง orders เก็บออร์เดอร์ลูกค้า -> order_id(คีย์หลัก), buy_date(วันที่ซื้อ), status(สถานะสั่งซื้อโดยที่สินค้าที่จัดส่งแล้วจะstatus = "3")
3.ตาราง order_details เก็บรายละเอียดสินค้าที่ลูกค้าซื้อ -> detail_id(คีย์หลัก), order_id, product_id, pieces(จำนวนที่ซื้อ), pay_price(ราคาต่อชิ้น)

อันนี้เป็นรูปภาพตารางแสดงที่ผมทำได้ในตอนนี้


อันนี้เป็นโค้ดตามในภาพครับ

<?php
$member_id = $_SESSION['member_id'];
$search_Date = "";
$search_YM = "";

if(isset($_POST["search_bt"])){

$search_Date = $_POST["search_Date"];
$search_YM = $_POST["search_YM"];


if(($search_Date=="")and($search_YM!="")){
$select = "Select orders.*, order_details.*, products.* From orders, order_details, products Where orders.order_id=order_details.order_id and order_details.product_id=products.product_id and orders.status='3' and DATE_FORMAT(orders.buy_date,'%Y-%m') = '$search_YM' Order By orders.buy_date DESC ";
}elseif(($search_Date!="")and($search_YM=="")){
echo "<script>alert('โปรดกรอกเดือนและปีด้วย.')</script>";
echo "<script>window.location='admin-seller.php'</script>";
}elseif(($search_Date=="")and($search_YM=="")){
echo "<script>alert('โปรดกรอกรายละเอียดค้นหาก่อน.')</script>";
echo "<script>window.location='admin-seller.php'</script>";
}else{
$select = "Select orders.*, order_details.*, products.* From orders, order_details, products Where orders.order_id=order_details.order_id and order_details.product_id=products.product_id and orders.status='3' and DATE_FORMAT(orders.buy_date,'%Y-%m') = '$search_YM' and DATE_FORMAT(orders.buy_date,'%d') = '$search_Date' Order By orders.buy_date DESC ";
}

}else{

$select = "Select orders.*, order_details.*, products.* From orders, order_details, products Where orders.order_id=order_details.order_id and order_details.product_id=products.product_id and orders.status='3' Order By orders.buy_date ";
//3table

}

unset($_SESSION["Sumtotal"]);

$query = mysqli_query($link,$select) or die(mysqli_error($link));

?>

<div class="container theme-showcase" role="main">
<div class="row">
<div class="">


<FORM method="POST" enctype="multipart/form-data" id="myform" name="form">

<div class="panel panel-mbrown">
<div class="panel-heading">

<h3 class="panel-title"><b>ข้อมูลการขายสินค้า &nbsp;
<?php if(($search_Date=="")and($search_YM!="")){
echo $search_YM;
}elseif(($search_Date!="")and($search_YM!="")){
echo $search_YM."-".$search_Date;
}else{ }
?>
</b></h3><br>

<div id="no_print"><!--no print-->
<form class="form-inline">
<div class="form-group"><center>

<input type="month" class="form-control1" id="month-year" placeholder="ปีค.ศ.-เดือน เช่น 2016-10" value="<?php echo $search_YM; ?>" style="color: black; width: 200px;" maxlength="7" name="search_YM" data-toggle="tooltip" data-placement="top" title="กรอก ปีค.ศ.-เดือน เช่น 2016-10">

<input type="number" class="form-control1" id="date" placeholder="วันที่" style="color: black;" value="<?php echo $search_Date; ?>" maxlength="2" name="search_Date" data-toggle="tooltip" data-placement="top" title="กรอก วันที่">


<button type="submit" class="btn btn-success" value="search" name="search_bt"><span class="glyphicon glyphicon-search" aria-hidden="true"></span> ค้นหา</button>
<p class="help-block" style="color: white;"><b>*ค้นหาตาม ปีค.ศ.-เดือน-วันที่ หรือ ค้นหาตาม ปีค.ศ.-เดือน ก็ได้*</b></p>
</center></div>
</form>
</div>
</div>


<div class="table-responsive">
<div>

<table class="table table-bordered table-striped table-hover" id="//responsive-example-table" cellspacing="0">


<thead>
<tr class="info_brown">
<th width="80"><center>รหัสสินค้า</center></th>
<th width="180"><center>วันที่สั่งซื้อ</center></th>
<th width=""><center>สินค้า</center></th>
<th width="120"><center>ราคา/ชิ้น</center></th>
<th width="100"><center>จำนวน</center></th>
<th width="120"><center>ราคารวม</center></th>
</tr>
</thead>
<tbody>

<?php

while ($data = mysqli_fetch_array($query)) {

$SumTotal = 0 ;
$total_price = 0 ;
$pieces = $data['pieces'];
$price = $data['pay_price'];
$total_price = $price * $pieces;
$_SESSION["Sumtotal"] = $_SESSION["Sumtotal"] + $total_price; //หาผลราคารวมทั้งหมด

?>
<tr>

<td><?php echo $data['product_id'];?></td>

<td><center><?php echo $data['buy_date'];?></center></td>

<td><?php echo $data['product_name'];?></td>

<td align="right"><?php echo number_format($price,2);?> บาท</td>

<td align="right"><?php echo $pieces;?></td>

<td align="right"><?php echo number_format($total_price,2);?> บาท</td>


</tr>
<?php } ?>
<table class="table">
<tr>
<td align="right"><h3> ราคารวมสุทธิ :</h3></td>
<td><h3><?php echo number_format($_SESSION["Sumtotal"],2);?> บาท</h3></td>
</tr>
</table>
</tbody>
</table>
</div></div></div>
</FORM>


NO ON 26-10-2016 12:02
 ความคิดเห็นที่ 4
น่าจะใช้ GROUP BY ลองดูสองเนื้อหานี้เป็นแนวทาง
 
แนวทางคำสั่ง sql หาผลรวมในชุดรายการข้อมูลเรียงตามวันที่ 
 
แนวทางการแทรกแถว ผลรวมในตารางข้อมูลต่อเนื่อง ด้วย php 


ninenik 26-10-2016
 ความคิดเห็นที่ 5
ทำได้แล้วครับ ขอบคุณมากครับ


NO ON 26-10-2016 14:28
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ