Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > รบกวนช่วยดูโค้ดตัดสต็อกแบบดูวันย้อนหลังได้ให้หน่อยครับ



 

รบกวนช่วยดูโค้ดตัดสต็อกแบบดูวันย้อนหลังได้ให้หน่อยครับ

 



Topic : 087039



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์




ผมทำสต็อกสินค้าแล้วมีการเบิกของเอาของเข้า แล้วตอนที่จะดูยอดย้อนหลังถ้าวันที่ย้อนหลังมีการเบิกหรือของเข้าก็ไม่มีปัญหาคับแต่ถ้าวันย้อนหลังที่เราเลือกไปของนั้นไม่มีการเบิกหรือว่าเอาของเข้าก็จะทำให้ข้อมูลผิดพลาดคับผมตอนนี้ผมไม่รู็จะเขียนยังไงดีคับรบกวนผู้รู้แนะนำทีคับ จากภาพลองดู วัสดุ AAA นะคับ ย้อนไปดูวันที่ 18 ไม่มีปัญหาคับ แต่วันที่ 19 ไม่มีการเบิกของหรือของเข้า ตรงนี้ถ้าไม่มีการเบิกหรือเข้าผมไม่รู้จะเขียนโคดยังไงดีคับข้อมูลก็เลยผิด ผมควรจะเขียนโคดอย่างไรหรือออกแบบฐานข้อมูลแบบไหนดีคับรบกวนพี่ๆแนะนำผู้น้อยทีคับ

ฐานข้อมูล

โค้ดหน้าดูรายการวัสดุ
Code (PHP)
<table  border="0" cellpadding="3" cellspacing="1" bgcolor="gray" align="center" width="90%"> 
	<tr height="25" bgcolor="#D9DBD9">		
		<td class="font1" align="center" width="5%">ลำดับ</td>
		<td class="font1" align="center" width="45%">ชื่อวัสดุ</td>
		<td class="font1" align="center" width="10%">ยอดยกมา</td>
		<td class="font1" align="center" width="10%">เบิกใช้</td>
		<td class="font1" align="center" width="10%">ของเข้า</td>
		<td class="font1" align="center" width="10%">คงเหลือ</td>	
	</tr>
	<!--แบ่งหน้า-->
	<?
	require_once"connect.inc.php"; 
	$i=1;  
	$sql_mat="select * from material";     
	$result_mat=mysql_query($sql_mat);     
	$numItem=mysql_num_rows($result_mat);  
	$numCol=2;  
	$remainCol=$numCol-($numItem%$numCol);
	
$Num_Rows = mysql_num_rows($result_mat);

$Per_Page = 10;   // Per Page

$Page = $_GET["Page"];
if(!$_GET["Page"])
{
	$Page=1;
}

$Prev_Page = $Page-1;
$Next_Page = $Page+1;

$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{
	$Num_Pages =1;
}
else if(($Num_Rows % $Per_Page)==0)
{
	$Num_Pages =($Num_Rows/$Per_Page) ;
}
else
{
	$Num_Pages =($Num_Rows/$Per_Page)+1;
	$Num_Pages = (int)$Num_Pages;
}
?>
	<!--แบ่งหน้า-->
	<?
	    $i=0;
		require_once"connect.inc.php";
		$count=1;
		$sql_mat="select * from material ".$where." order by m_id ASC LIMIT $Page_Start , $Per_Page";
		$numItem=mysql_num_rows($result_mat);  
		$numCol=2;  
		$remainCol=$numCol-($numItem%$numCol);
		$result_mat=mysql_db_query($dbname,$sql_mat);
			while($record_mat=mysql_fetch_array($result_mat)){

             //ดึงข้อมูลจากตาราง โดยมีเงื่อนไขให้ m_id = record_mat ที่ได้มาจากการ select ครั้งแรก
             $sql="select * from material_out where m_id='$record_mat[m_id]' and m_out_date='$_GET[FromYY]-$_GET[FromMM]-$_GET[FromDD]' order by m_out_id DESC";
			 $result=mysql_db_query($dbname,$sql);
			$record=mysql_fetch_array($result);
			$num=mysql_num_rows($result);
			$amount=$record[m_amount_now];  //จำนวนวัสดุคงเหลือจาก m_out		
				if($num==0){
					$amount=$record_mat[m_amount]; // ถ้าวัสดุนั้นยังไม่เคยโดนเบิก 
					}

			//ดึงข้อมูลการเบิกโดยการรวมค่าที่อยู่ในrecordเก็บไว้ใน ตัวแปร total 
			$sql_s="select sum(m_out_amount) as total from material_out where m_id='$record_mat[m_id]' and m_out_date='$_GET[FromYY]-$_GET[FromMM]-$_GET[FromDD]'";
			$result_s=mysql_query($sql_s);
			$record_s=mysql_fetch_array($result_s);
			$num_s=mysql_num_rows($result_s);
			if($record_s[total]==""){
				$take="-";
			}else{
				$take=$record_s[total];
			}
            //ดึงข้อมูลการเพิ่มจำนวนวัสดุเก็บไว้ในตัวแปร total2
			$sql_p="select sum(m_in_amount) as total2 from material_in where m_id='$record_mat[m_id]' and m_in_date='$_GET[FromYY]-$_GET[FromMM]-$_GET[FromDD]'";
			$result_p=mysql_query($sql_p);
			$record_p=mysql_fetch_array($result_p);
			$num_p=mysql_num_rows($result_p);
			if($record_p[total2]==""){
				$plus="-";
			}else{
				$plus=$record_p[total2];
			}


			/// ดึงข้อมูล ยอดยกมา จากตาราง material_out
			$sql_Y="select * from material_out where m_id='$record_mat[m_id]' and m_out_date='$_GET[FromYY]-$_GET[FromMM]-$_GET[FromDD]' order by m_out_id ASC";
			 $result_Y=mysql_db_query($dbname,$sql_Y);
			$record_Y=mysql_fetch_array($result_Y);
			$num_Y=mysql_num_rows($result_Y);
			
			/// ดึงข้อมูล ยอดยกมา จากตาราง material_in
			$sql_i="select * from material_in where m_id='$record_mat[m_id]' and m_in_date='$_GET[FromYY]-$_GET[FromMM]-$_GET[FromDD]' order by m_in_id DESC";
			 $result_i=mysql_db_query($dbname,$sql_i);
			$record_i=mysql_fetch_array($result_i);
			$num_i=mysql_num_rows($result_i);
			/// หาค่ายอดยกมา
			if($record_Y[m_out_time]>$record_i[m_in_time]){
				$remain=$record_Y[m_amount_now]; // จำนวนคงเหลือหลังจากเบิกแล้ว
				$yokma=$remain+($record_s[total]-$record_p[total2]);
			}else if($record_i[m_in_time]>$record_Y[m_out_time]){
				$remain=$record_i[m_amount_now];//จำนวนคงเหลือหลังจากเพิ่ม
				$yokma=$remain+($record_s[total]-$record_p[total2]);
			}else{
				$yokma=$record_mat[m_amount]; // ถ้าวัสดุยังไม่เคยโดนเบิก
			}
			
		    //สร้างตัวแปรเก็บค่าวันที่เลือกจาก form และเก็บค่าวันปัจจุบันเพื่อหาค่าคงเหลือ
			$date_select="$_GET[FromYY]-$_GET[FromMM]-$_GET[FromDD]";
			$date_today=date("Y-m-d");
			if($date_today==$date_select){
				$amount_s=$record_mat[m_amount];
			}else{
				//เก็บค่ายอดคงเหลือให้ยอดยกมา ลบกับ ยอดรวมเบิกใช้ แล้วบวกกับยอดรวมของเข้า 
				$amount_s=$yokma-$record_s[total]+$record_p[total2];
			}		
				$i++;
	?>
	<? if($i%$numCol==1){ ?>  
	<tr height="25" bgcolor="#FFFFFF"  onmouseover="this.bgColor='#FFFFCC'" onmouseout="this.bgColor='#FFFFFF'" >
		<td class="font1" align="center" width="5%"> <?=$count?></td>
		<td class="font1" align="left" width="45%"><?=$record_mat[m_name]?></td>
		<td class="font1" align="center" width="10%"><?=$yokma?></td>
		<td class="font1" align="center" width="10%"> <font class="font_red"><?=$take?></td></font>
		<td class="font1" align="center" width="10%"><font class="font_green"><?=$plus?></td></font>
		<td class="font1" align="center" width="10%"><?=$amount_s?></td>
	</tr>
	<?$count++;}?>
	<input type="hidden" name="hdnCount" value="<?=$i;?>">	
   <? $i++; } ?>    
</table>





Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-11-21 16:08:00 By : vampirearmmy View : 1808 Reply : 5
 

 

No. 1



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


หรือว่าคำถามของผมงงไปนะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-21 20:17:15 By : vampirearmmy
 


 

No. 2



โพสกระทู้ ( 3,156 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


อันที่จริงต้องมีการปิดบัญชีรายวัน ก่อนเลิกงานทุกวันครับ

การปิดบัญชีรายวันจะเป็นการสรุปยอด รับ จ่ายและคงเหลือ

ถ้าเราทำก็จะมีข้อมูลของทุกๆวันแล้วล่ะ น่าจะช่วยแก้ปัญหาได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-22 06:28:52 By : sakuraei
 

 

No. 3



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนแรกก็คิดไว้เหมือนกันคับถ้าปิดบัญชีรายวัน user ก็ต้องเป็นคนปิดใช่ไหมครับจะสร้างความลำบากให้กับ user ที่ใช้งานหรือเปล่า จะทำให้โปรแกรมเราไม่น่าใช้หรือเปล่าครับ ขอบคุณครับสำหรับคำตอบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-22 09:17:08 By : vampirearmmy
 


 

No. 4



โพสกระทู้ ( 3,156 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ไม่หรอกครับโปรแกรมบัญชีสำเร็จรูปหลายๆรายก็ใช้วิธีนี้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-22 11:10:16 By : sakuraei
 


 

No. 5



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าผมจะสร้าง ฟิล เก็บข้อมูลอีก ฟิลหนึ่ง ไว้ในตาราง Material ไว้เก็บค่าวัสดุที่มีการเปลี่ยนแปลง แยกกับจำนวนวัสดุที่ใส่เข้าไปตอนแรกแบบว่าตอนเราเอาวัสดุเพิ่มใหม่ก็ให้ก็ให้ไปเก็บไว้ทั้งสองฟิลเลยแต่เวลาเบิกใช้หรือของเข้าก็ให้ไปกระทำกับอีกฟิลนึงให้อีกฟิลเก็บไว้เป็นค่าเริ่มต้นแบบนี้จะเป็นการเก็บข้อมูลซ้ำซ้อนแล้วแก้ปัญหาได้หรือเปล่าครับ ผมกลัวว่าวันไหนพนักงานลืมปิดยอดจะทำให้ไม่มีข้อมูลรึเปล่าครับ อันนี้โปรเจคจบแรกเลยคับผมไม่มีประสบการณ์เลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-22 13:40:38 By : vampirearmmy
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนช่วยดูโค้ดตัดสต็อกแบบดูวันย้อนหลังได้ให้หน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่