PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

รบกวนช่วยดูโค้ด แจ้งเตือนสินค้าเกินสต็อก ให้หน่อยคะ

รบกวนช่วยดูโค้ด แจ้งเตือนสินค้าเกินสต็อก ให้หน่อยคะ
รบกวนช่วยดูโค้ด แจ้งเตือนสินค้าเกินสต็อก ให้หน่อยคะ ว่าผิดตรงไหน
เพราะไม่ว่าจะใส่สินค้าเกินจำนวนสต็อกหรือไม่เกิน มันก็แจ้งเตือนเป็น ท่านกรอกสินค้าเกินจำนวน เหมือนมันจะไม่ได้เข้าไปเช็คในสต็อกก่อนคำนวณ

function calculate_price(){ //คำนวณราคาสินค้า
   $dbcon = connect_db();	
   $sql3 = "SELECT bStock FROM tbbook WHERE bId='".$arrItems[$i]."'";
   $resultsql = mysqli_query($dbcon,$sql3);
	$a = mysqli_fetch_array($resultsql,MYSQL_ASSOC);
	$stock =$a["bStock"];
	$arrquality = explode("|",  $_SESSION["quality"] ) ;
	  if($arrquality >$stock){
	             	process_message("สั่งซื้อสินค้าเกินจำนวน","shopping_process1.php");
	}else if($arrquality <=$stock){
	       $arrData = $_POST["qualty"];
	       $_SESSION["quality"] = NULL;
	        for($i=0 ; $i < count($arrData) ; $i++ ){
		  if($i == 0){
		       $_SESSION["quality"] = $arrData[$i];
                      	process_message("คำนวนสินค้าเรียบร้อยแล้ว","shopping_process1.php");
		  }else{
		       $_SESSION["quality"] = $_SESSION["quality"] ."|".$arrData[$i];
		  }
	  }
	}
}


โดย:  Porn111517 IP: 171.4.212.xxx วันที่: 26-09-2014 เวลา: 23:24:16

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

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


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


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 15
คำอธิบายตามความเห็นที่ 11
ต้องส่งค่าตัวแปร ID เข้าไปในฟังก์ช่ัน 


โดย:  Ninenik IP: 124.121.249.xxx วันที่: 30-09-2014
 ความคิดเห็นที่ 14
ต้อง where อะไรคะ ที่จะเป็นไอดีไของสินค้าที่เลือกมาเพื่อออกค่าจำนวนสต็อกสินค้า



$sql3 = "SELECT productStock FROM tblproducts  where  productID  = .............";


โดย:  Porn111517 IP: 49.49.36.xxx วันที่: 30-09-2014 เวลา: 15:04:48
 ความคิดเห็นที่ 13


ใช้ ถ้าค่าไม่ออกมาแสดง ว่า การดึงข้อมูลยังไม่ถูกต้อง 
วิธีการทดสอบแบบนี้ถูกต้องแล้ว ให้ไล่ดูทีละจุด ทีละค่า

โดย:  Ninenik IP: 1.46.81.xxx วันที่: 30-09-2014
 ความคิดเห็นที่ 12
งั้นถามอีกแบบนึงคะ
พอลองตรวจสอบ var_dump ค่า $quality1 ออก  แต่ค่า $stock1 ไม่ออก
select ไม่ถูกหรือยังไงคะ 



$dblink = connect_db() ;  

$sql3 = "SELECT productStock FROM tblproducts ";;

	$stock1 = $row["productStock"]; //จำนวนใน Stock
	$quality1 = $_SESSION["quality"]  ;//จำนวนสั่งซื้อ
	
	var_dump($stock1,$quality1);
	
	 if($stock1 < $quality1 ){
	             	process_message("สั่งซื้อสินค้าเกินจำนวน สินค้ามี  " .$stock1.  " ชิ้น จำนวนที่สั่งซื้อคือ ". $quality1." ", "shopping_process1.php");
					
	}
}


โดย:  Porn111517 IP: 171.5.63.xxx วันที่: 29-09-2014 เวลา: 20:41:45
 ความคิดเห็นที่ 11
ดูการใช้งานฟังก์ชั่นอย่างง่าย 

<?php
// แบบง่าย ส่งท้งจำนวนที่สั่ง และจำนวนสต็อก
function check_stock($qty,$stock){
	if($qty>$stock){
		echo "สั่งซื้อสินค้าเกินจำนวน";
	}else{
		echo "คำนวนสินค้าเรียบร้อยแล้ว";
	}
}

check_stock(1,3);  
// ผลลัพธ์ "คำนวนสินค้าเรียบร้อยแล้ว"

check_stock(4,3);  
// ผลลัพธ์ "สั่งซื้อสินค้าเกินจำนวน";
?>
 
 
<?php
// แบบง่าย ส่งค่าเฉพาะจำนวนที่สั่ง และไอดีสินค้า  ส่วนสต้อกคำนวณในฟังก์ชั่น
function check_stock($qty,$proID){
    $dbcon = connect_db();     
    $sql3 = "SELECT bStock FROM tbbook WHERE bId='".$proID."'";  
    $resultsql = mysqli_query($dbcon,$sql3);  
    $a = mysqli_fetch_array($resultsql,MYSQL_ASSOC);  
    $stock =$a["bStock"];      
	if($qty>$stock){
		echo "สั่งซื้อสินค้าเกินจำนวน";
	}else{
		echo "คำนวนสินค้าเรียบร้อยแล้ว";
	}
}

check_stock(1,$proID);  
?>
 
 
ค่า $qty ต้องเป็นค่าที่เราส่งเข้าไป 
ส่วนโค้ดที่ถามมา เขียนผิดรูปแบบ เพราะไม่มีการส่งค่าเข้าไปในฟังก์ชั่น 
 
ดูโค้ดง่าย
 
<?php
session_start();
$_SESSION['ddd']=2;
$i=1;
function ddd(){
    echo $i;
    echo "<br>";    
    echo $_SESSION['ddd'];
}
echo "<br>";
ddd();
?>
 
ค่า $i จะไม่ถูกแสดง เพราะเราไม่ได้ส่งค่าเข้าไป 
ส่วนค่า $_SESSION['ddd'] จะแสดงถึงแม้จะไม่ได้มีการส่งค่าเข้าไป
 
ส่วนจากคำถาม การเทียบค่า
 
$arrquality = explode("|",  $_SESSION["quality"] ) ;  
      if($arrquality >$stock){  
      
      แบบนี้ก็ไม่ถูกต้อง $arrquality จะเป็นตัวแปร array จะไม่สามารถ
      เอาไปเทียบค่ามากกว่า น้อยกว่า ตามโค้ดที่ใช้ได้
      
      รูปแบบการเขียนโค้ดผิดหลายที่หลายจุด ลองไล่ดู และทำความเข้าใจอีกที



โดย:  Ninenik IP: 1.47.19.xxx วันที่: 28-09-2014
 ความคิดเห็นที่ 10
ถ้ากดปุ่มคำนวณสินค้าใหม่  หรือ ปุ่มลบสินค้า แล้วก็จะเข้าสู่หน้า นี้  เพื่อเช็คอะคะ ถ้าเช็คไรผ่านก็จะให้กรอกที่อยู่ที่จัดส่ง


<?php 	require_once("templateshopping.php") ;  require_once("../includes/function.php") ;
require_once("includes/shopping_function.php");	
show_header( "ยืนยันการสั่งซื้อ" ) ;   show_menu() ; 


if ( $_POST["btnDelete"] ) {  
	 if ( empty ( $_POST["chkDel"] ) ) {
		$msg = "เลือกรายการที่ต้องการลบก่อน" ;			
	 }  else {
		delete_items() ;
		calculate_price() ; 
		$msg = "ลบรายการที่เลือกเรียบร้อยแล้ว" ;			
	 }

	process_message( $msg, "shopping_process1.php" ) ;
	
} elseif ( $_POST["btnCalculate"] ) {  	
	$_SESSION["Shipping"] = $_POST["rdoShip"] ;
	calculate_price() ; 
	$msg = "คำนวณราคาสินค้าเรียบร้อยแล้ว" ;			
	process_message( $msg, "shopping_process1.php" ) ;
			
} else { 	
	check_authen( "member" ) ;	
	calculate_price() ;   
	$dblink = connect_db() ;  
	$sql = " SELECT * FROM tblMembers WHERE mUserName = '" . $_SESSION["ssMember"] . "'" ;
	$resultSql = mysqli_query( $dblink, $sql ) ;
	mysqli_close( $dblink ) ;
	$row = mysqli_fetch_array( $resultSql, MYSQL_ASSOC ) ;   	?>
  
  <script language="javascript" src="../javascript/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
function chk_form(){
	$(":input + span.require").remove();
	$(":input").each(function(){
		$(this).each(function(){	
			if($(this).val()==""){
				$(this).after("<span class=require>* จำเป็นต้องกรอก</span>");
			}
		});
	});
	if($(":input").next().is(".require")==false){
		return true;
	}else{
		return false;
	}
}
</script>  
 


โดย:  Porn111517 IP: 49.49.39.xxx วันที่: 27-09-2014 เวลา: 20:37:03
 ความคิดเห็นที่ 9

<?php  $dblink = connect_db() ;  
    
    for ( $i = 0 ; $i < count( $arrItems ) ; $i++ ) {
        $sql = " SELECT * FROM tblproducts WHERE productID = '" . $arrItems[$i] . "'" ;
        $resultSql = mysqli_query( $dblink, $sql ) ;
        $book = mysqli_fetch_array( $resultSql, MYSQL_ASSOC ) ; 
            
        $sqlPB = " SELECT proDiscount FROM tblPromotionBook AS pb, tblPromotions AS p WHERE pb.proID = p.proID AND productID = '" . $book["productID"] . "' AND ExpireDate IS NULL" ;
        $resultPB = mysqli_query( $dblink, $sqlPB ) ;
        $rowsPB = mysqli_num_rows( $resultPB ) ;   
        if ( $rowsPB > 0 ) {
            $rowsPB = mysqli_fetch_array( $resultPB, MYSQL_ASSOC ) ;
			$sale = calculate_salePrice($book["productPrice"] , $rowsPB["proDiscount"]) ;
        } else {
            $sale = $book["productPrice"] ;  
        }
        
        $total_quality =  $total_quality + $arrQuality[$i] ;
        $price = $sale * $arrQuality[$i] ; 
        $total_weight = $total_weight + ( $book["productWeight"] * $arrQuality[$i] ) ;	
        $total_price = $total_price + $price ;  	
		
		?>

        
        <tr bgcolor="#FFFFCC" valign="top">
            <td align="center" bgcolor="#FFFFFF"><input type="checkbox" name="chkDel[]" value="<?php echo $arrItems[$i] ; ?>" ></td>
            <td align="center" bgcolor="#FFFFFF"><a href="<?php echo "show_bookdetail.php?isbn=" . $book["productID"] ; ?>" class="menu">
                <img src="<?php echo '../includes/display.php?id=' . $book["productID"] . '&table=tblproducts&column=productID' ; ?>" width="100" border="100" /><br/>
                <?php echo $book["productID"] ; ?></a>
            </td>
            <td align="right" bgcolor="#FFFFFF"><?php echo number_format( $sale, 2 ) ; ?> </td>
            <td align="right" bgcolor="#FFFFFF"><?php echo number_format( $book["productWeight"], "," ) ; ?></td>
            <td align="right" bgcolor="#FFFFFF"><?php echo $book["productStock"] ;?> / <input type="text" name="txtQualty[<?php echo $i  ; ?>]" value="<?php echo $arrQuality[$i] ; ?>"  size="2" OnKeyPress="return chkNumber(this)">
			</td>
            <td align="right" bgcolor="#FFFFFF"><?php echo number_format( $book["productWeight"] * $arrQuality[$i], ","  ) ; ?></td>
            <td align="right" bgcolor="#FFFFFF"><?php echo number_format( $price, 2 ) ;  ?> </td>
        </tr>
    <?php } ?>
        <tr bgcolor="#FFFFCC">
            <td colspan="4" align="right" bgcolor="#DBDBDC">รวม</td>
            <td align="right" bgcolor="#DBDBDC"><?php echo $total_quality ; ?></td>
            <td align="right" bgcolor="#DBDBDC"><?php echo number_format( $total_weight , "," ) ; ?></td>
            <td align="right" bgcolor="#DBDBDC" style="color:red"><?php echo number_format( $total_price, 2 ) ; ?> </td>
        </tr>
        <tr bgcolor="#FFFFCC" height="20"><td colspan="7" align="center" bgcolor="#FFFFFF">&nbsp;</td></tr>

โค้ดนี้เป็นหน้าที่กรอกจำนวนสินค้าที่สั่ง
ตอนนี้ทำได้แค่โชว์จำนวนสินค้าคงเหลือ แต่ถ้าสั่งเกินยังสั่งซื้อได้

โดย:  Porn111517 IP: 49.49.39.xxx วันที่: 27-09-2014 เวลา: 20:33:43
 ความคิดเห็นที่ 8
งั้นข้ามเรื่องฟังก์ชั่นไป 

ลองเอาโค้ด เก็บจำนวน ที่สัง
และโค้ดจำนวน stock มาดู เผื่อแนะนำเพิ่มเติมได้

โดย:  Ninenik IP: 1.47.19.xxx วันที่: 27-09-2014
 ความคิดเห็นที่ 7
เอาใหม่ค่ะ 
การเรียกใช้งานฟังก์ชั่น เรียกใช้ภายในไฟล์เดียวกัน โค้ดตัวนี้อยู่ข้างบน
ส่วนฟังค์ชั่นอยู่ล่างลงมาหน่อย
มันก็สามารถคำนวณได้ แค่ติดตรงอยากให้มัน เช็ตสั่งซื้อสินค้าเกินจำนวนคะ

if ( $_POST["btnDelete"] ) {  
	 if ( empty ( $_POST["chkDel"] ) ) {
		$msg = "เลือกรายการที่ต้องการลบก่อน" ;			
	 }  else {
		delete_items() ;
		calculate_price() ; 
		$msg = "ลบรายการที่เลือกเรียบร้อยแล้ว" ;			
	 }

	process_message( $msg, "shopping_process1.php" ) ;
	
} elseif ( $_POST["btnCalculate"] ) {  	
	$_SESSION["Shipping"] = $_POST["rdoShip"] ;
	calculate_price() ; 
	$msg = "คำนวณราคาสินค้าเรียบร้อยแล้ว" ;			
	process_message( $msg, "shopping_process1.php" ) ;






โดย:  Porn111517 IP: 49.49.39.xxx วันที่: 27-09-2014 เวลา: 19:13:40
 ความคิดเห็นที่ 6

การเรียกใช้ เรียกใช้ฟังก์ชั่นในไฟล์เดียวกัน โค้ดตัวนี้อยู่ข้างบน
 
ส่วนฟังค์ชั่นอยู่ล่างลงมาหน่อย
 
มันก็สามารถคำนวณได้ แค่ติดตรงอยากให้มัน เช็ตสั่งซื้อสินค้าเกินจำนวนคะ
if ( $_POST["btnDelete"] ) { if ( empty ( $_POST["chkDel"] ) ) { $msg = "เลือกรายการที่ต้องการลบก่อน" ; } else { delete_items() ; calculate_price() ; $msg = "ลบรายการที่เลือกเรียบร้อยแล้ว" ; } process_message( $msg, "shopping_process1.php" ) ; } elseif ( $_POST["btnCalculate"] ) { $_SESSION["Shipping"] = $_POST["rdoShip"] ; calculate_price() ; $msg = "คำนวณราคาสินค้าเรียบร้อยแล้ว" ; process_message( $msg, "shopping_process1.php" ) ; งง จริง

โดย:  Porn111517 IP: 49.49.39.xxx วันที่: 27-09-2014 เวลา: 19:11:27
 ความคิดเห็นที่ 5
แง่ว



ตัวแปรนี้เข้าไปอยู่ในฟังก์ชั่น ได้ยังไง

$_POST["txtQualty"]

ทำไมฟังก์ชั่นถึงไม่มีการกำหนด parameter

ตัวอย่างการกำหนด paremeter

function calculate_price($arrData) {   
//	$arrData = $_POST["txtQualty"];
	$_SESSION["quality"] = NULL ;

	for ( $i = 0 ; $i < count( $arrData ) ; $i++  ) {
		if ($i == 0) {
			$_SESSION["quality"] = $arrData[$i] ;  
		} else {
			$_SESSION["quality"] = $_SESSION["quality"] . "|" .  $arrData[$i] ; 
						
		}
	}
} 


แล้วหน้าเรียกใช้งานฟังก์ชั่น ทำงานอย่างไร

ตัวอย่างการเรียกใช้

calculate_price($_POST["txtQualty"]);


ส่วนการเทียบจำนวนเกินสต็อก เห็นการเก็บค่าเป็น string ใน session ก็ไม่แน่ใจว่าจะแนะนำแบบไหน
ปกติ จำนวนที่สั่งก็น่าจะเก็บเป็นตัวเลข

ไว้ทำเป็นบทความ แนะนำต่อไป







โดย:  Ninenik IP: 1.47.19.xxx วันที่: 27-09-2014
 ความคิดเห็นที่ 4
งั้นช่วยดูโค้ดนี้ให้หน่อยคะ เราสามารถแทรกโค้ด แจ้งเตือนสินค้าเกินสต็อก ได้ยังไงบ้างคะ
ตัวนี้ สามารถคำนวณราคาได้แล้ว แต่ขาดแจ้งเตือนสินค้าเกินสต็อก
function calculate_price() {   
	$arrData = $_POST["txtQualty"];
	$_SESSION["quality"] = NULL ;

	for ( $i = 0 ; $i < count( $arrData ) ; $i++  ) {
		if ($i == 0) {
			$_SESSION["quality"] = $arrData[$i] ;  
		} else {
			$_SESSION["quality"] = $_SESSION["quality"] . "|" .  $arrData[$i] ; 
						
		}
	}
} 

 

โดย:  Porn111517 IP: 223.207.132.xxx วันที่: 27-09-2014 เวลา: 12:52:26
 ความคิดเห็นที่ 3
ฟังก์ชั่น จะมีตอนรับ และตอนส่งค่า

ตอนรับค่าเรียก parameter ตอนส่งค่า เรียก argument

function myfunc($aaa,$bbb){
   echo $aaaa."  -  ".$bbb."<br>";
}


$aaa กับ $bbb คือตอนรับค่า ไปใช้ในฟังก์ชั่น 

   echo $aaaa."  -  ".$bbb."<br>";


ค่าตัวแปรใน ฟังก์ชั่นจะมีขึ้นลอยๆ ไม่ได้ มันจะไม่มีค่า ถ้าไม่ได้กำหนด


ส่วนตอนใช้งาน หรือการเรียกใช้

<?php
$data=6;
myfunction(2,$data);
?>


2 กับ $data คือ argument ที่ส่งเข้าไปใช้งานในฟังก์ชั่น



โดย:  Ninenik IP: 1.46.81.xxx วันที่: 27-09-2014
 ความคิดเห็นที่ 2
$arrItems[$i
$_POST["qualty"]

สองตัวนี้มันรับค่ามาจากไฟล์ ตะกร้าสินค้า ที่กรอกจำนวนสินค้าไม่ใช่หรือคะ เข้าใจถูกรึเปล่านี่ 


โดย:  Porn111517 IP: 171.4.212.xxx วันที่: 26-09-2014 เวลา: 23:47:26
 ความคิดเห็นที่ 1
ในฟังก์ชั่น มีการรับค่าตัวแปร แต่ทำไม ไม่มีกำหนด

อย่าง $arrItems[$i] หรือ $_POST["qualty"]

ไม่เห็นมีการกำหนด parameters เพื่อรับค่า

function($aaa,$bbb){
....



โดย:  Ninenik IP: 1.46.81.xxx วันที่: 26-09-2014