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,038

HOME > PHP > PHP Forum > ช่วยแก้ไขโค๊ดการค้นหาข้อมูลแสดงในปีงบประมาณ ให้ด้วยครับ !!



 

ช่วยแก้ไขโค๊ดการค้นหาข้อมูลแสดงในปีงบประมาณ ให้ด้วยครับ !!

 



Topic : 044099



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



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




ขอขอบคุณพี่ๆ ทุกท่านไว้ล่วงหน้ามา ณ ที่นี้เลยนะครับ

จากรูป :
searchYQ

----------------------------
จากโค๊ด:
<?php
$connDB = mysql_connect("localhost","root","123");
$dbName = "db_depart";
mysql_query("SET NAMES tis-620", $connDB);
mysql_query("USE $dbName");
?>
<script type="text/javascript" language="JavaScript1.2">
function fncSubmit(){
if(document.testReqSupp.MQ.value != 0 && testReqSupp.YQ.value == 0){
alert(' กรุณาเลือกปีงบประมาณด้วย !! ');
document.testReqSupp.YQ.focus();
return false;
}
}
</script><style type="text/css">
<!--
body,td,th {
font-family: Tahoma, sans-serif, serif, MS Serif;
font-size: 13px;
color: #000000;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<form action="testReqSupp.php" method="get" enctype="multipart/form-data" name="testReqSupp" onsubmit="JavaScript:return fncSubmit();">
<table width="650" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="77" colspan="2" valign="top"><table width="100%" border="0" cellpadding="1" cellspacing="2" class="border">
<tr>
<td height="22" colspan="4" align="center" bgcolor="#0782CB"><b>รายงานเวลารับเรื่องการแจ้งปัญหา/บริการ</b></td>
</tr>
<tr>
<td width="39%" align="right">เดือน :</td>
<td width="11%">
<?php // select Month
echo "<select name=\"MQ\" id=\"MQ\" class=\"listMenuYQ\">";
echo "<option value=\"0\" selected=\"selected\">-- ทุกเดือน --</option>";
for($i=1; $i<=12; $i++){
$month = array(1=>"มกราคม",2=>"กุมภาพันธ์",3=>"มีนาคม",4=>"เมษายน",5=>"พฤษภาคม",6=>"มิถุนายน",7=>"กรกฎาคม",8=>"สิงหาคม",9=>"กันยายน",10=>"ตุลาคม",11=>"พฤศจิกายน",12=>"ธันวาคม"); // loop array month
?>
<option value="<?php echo $i; ?>" <?php if($i == $_REQUEST['MQ']){echo "selected";} ?>><?php echo $month[$i]; ?></option>
<?php } ?></td>
<td width="14%" height="18" align="right">ปีงบประมาณ :</td>
<td width="36%">
<?php // select year
// Connect Table :> tb_tb_userreq
$sqlYQ = "SELECT reqYQ FROM tb_testreqsupp GROUP BY reqYQ ORDER BY reqYQ DESC";
$resYQ = mysql_query($sqlYQ) or die ("$msgAlert");
echo "<select name=\"YQ\" id=\"YQ\" class=\"listMenuYQ\">";
echo "<option value=\"0\" selected=\"selected\">-- ทุกปี --</option>";
// loop while year
while($roYQ = mysql_fetch_array($resYQ)){
?>
<option value="<?php echo $roYQ['reqYQ']; ?>"<?php if($roYQ['reqYQ'] == $_REQUEST['YQ']){echo "selected";} ?>><?php echo $roYQ['reqYQ']; ?></option>
<?php }
echo "</select>";
?>
</td>
</tr>
<tr>
<td width="39%" height="25">&nbsp;</td>
<td colspan="2" align="center"><input name="search" type="submit" value=" ค้นหา "></td>
<td width="36%">&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td height="57" colspan="2" valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="1">
<tr>
<td height="29" align="center" bgcolor="#0782CB"><b>ลำดับการแจ้ง</b></td>
<td width="29%" height="29" align="center" bgcolor="#0782CB"><b>วัน-เวลา</b><span class="txt-HSmall"> (ที่แจ้ง)</span></td>
<td width="28%" height="29" align="center" bgcolor="#0782CB"><b>วัน-เวลา</b><span class="txt-HSmall"> (รับทราบ)</span></td>
<td align="center" bgcolor="#0782CB"><b>ระยะเวลาที่รับทราบ</b> <br>
<span class="txt-HSmall">(วัน, ชั่วโมง : นาที : วินาที)</span></td>
</tr>
<?php // search data
$sql = "SELECT * FROM tb_testreqsupp ";
if($_REQUEST['MQ'] == "" && $_REQUEST['YQ'] == "" ){ // ไม่เลือกอะไรเลย (ค่าปกติ) แสดงข้อมูลเดือนและปีปัจจุบัน (ครั้งแรกที่เปิด)
$sql .= "WHERE DATE(reqSupp) BETWEEN '".date('Y-m-01')."' AND '".date('Y-m-d')."' ORDER BY reqID";

}elseif($_REQUEST['MQ'] == "0" && $_REQUEST['YQ'] == "0"){ // เลือกทุกเดือน, เลือกทุกปี
$sql .= "ORDER BY reqID";

}elseif($_REQUEST['MQ'] != "0" && $_REQUEST['YQ'] != "0"){ // เลือกเดือน, เลือกปี
$sql .= "WHERE YEAR(reqSupp) = '".($_REQUEST['YQ']-543)."' && month(reqSupp)= '".$_REQUEST['MQ']."' ORDER BY reqID";

}elseif($_REQUEST['MQ'] == "0" && $_REQUEST['YQ'] != "0"){ // ไม่เลือกเดือน, เลือกปี
$sql .= "WHERE YEAR(reqSupp) = '".($_REQUEST['YQ']-543)."' ORDER BY reqID";
}

//
$res = mysql_query($sql) or die ("$sql");
while($row= mysql_fetch_array($res)){
$bgColor = ($i++ %2) ? '#DFECF9':'#EEF5FD'; // สลับสีแถว
?>
<tr bgcolor="<?php echo $bgColor;?>">
<td width="14%" height="20" align="center"><?php echo $row['reqID']; ?></td>
<td width="29%" height="20" align="center">
<?php // วันเวลา (ที่แจ้งปัญหา)
$reqDate = $row['reqDate'];
$dateDT = explode(" ",$reqDate);
$dateDA = explode("-",$dateDT[0]);
echo $dateDA[2]."/".$dateDA[1]."/".($dateDA[0]+543)."&nbsp;&nbsp;".$dateDT[1];
// echo $reqDate;
?></td>
<td width="28%" height="20" align="center"><?php // วันเวลา (รับทราบปัญหา)
$reqSupp = $row['reqSupp'];
$dateWT = explode(" ",$reqSupp);
$dateDW = explode("-",$dateWT[0]);
echo $dateDW[2]."/".$dateDW[1]."/".($dateDW[0]+543)."&nbsp;&nbsp;".$dateWT[1];
// echo $reqSupp;
?></td>
<?php // คำนวณหาค่าต่างระยะวัน/เวลา : เวลาที่รับทราบ
$sqlRT = mysql_query("SELECT TIMESTAMPDIFF(SECOND,'$reqDate','$reqSupp') AS diff FROM tb_testreqsupp");
$resRT = mysql_fetch_array($sqlRT);
$diff = $resRT['diff'];
$diffSeconds = $diff%60; // คำนวณ วินาที
$diffMinutes = (int)($diff/60)%60; // คำนวณ นาที
$diffHours = (int)($diff/(60*60))%24; // คำนวณ ชั่วโมง
$diffDay = (int)($diff/(60*60))/24; // คำนวณ วัน
?>
<td width="29%" align="right">
<?php echo sprintf("%2d",$diffDay)." วัน, ".sprintf("%02d",$diffHours).":".sprintf("%02d",$diffMinutes).":".sprintf("%02d",$diffSeconds); ?>
&nbsp;</td>
</tr>
<?php } ?>
</table></td>
</tr>
</table>
</form>
</body>
</html>
---------------------------

จากโค๊ดข้างบน ส่วนที่เป็นตัวอักษรสีดำ ผมไม่รู้ว่าจะเขียนโค๊ดอย่างไร ที่ให้ค้นหาตามปีงบประมาณ แล้วเช่น ข้อมูลในเดือนตุลาคม - ธันวาคม 2551 นั้น จะต้องไปแสดงในปีงบประมาณ 2552 นะครับ รบกวนช่วยเหลือผมด้วยนะคับ...



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-06-16 14:29:45 By : pukmtec View : 3712 Reply : 6
 

 

No. 1



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



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


ผมเคยเจอปัญหานี้เหมือนกันเคยเขียนเว็บให้โรงพยาบาลแห่งหนึ่ง ให้แสดงข้อมูลในปีงบประมาณ นั้นๆ

แก้โดยสร้าง function ขึ้นมาหนึ่งตัวเพื่อกำหนดว่า เดือน ดังกล่าวควรอยู่ในงบประมาณใด
ตอนเราจะหาว่าเป็นปีงบประมาณใด เราต้อง ใช้ ตัวแปล 2 ตัวคือ เดือน และ ปี
เช่น

เดือน 11 ปี 2552 ก็ต้องเป็นปีงบประมาณ 2553
หรือ เดือน 1 ปี 2553 ก็ต้องเป็นปีงบประมาณ 2553
หรือ เดือน 10 ปี 2553 ก็ต้องเป็นปีงบประมาณ 2554
เป็นต้น

เราก็เขียน Function ไว้เป็นตัวเก็บไว้ไฟล์นึง จะใช้มันก็เรียกผ่านตัวแปล






Date : 2010-06-16 15:22:40 By : aimoomoo
 


 

No. 2



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



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


รบกวนช่วยแก้ไข หรือเขียนมาให้เห็นอย่างคร่าว ๆ ได้หรือไม่ครับ ขอขอบคุณมาก ๆ ครับ
Date : 2010-06-16 16:27:24 By : pukmtec
 

 

No. 3



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



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


ลองดูนะไม่แน่จัย ว่าครอบคุมเปล่า ประยุคใช้ดู codeที่ เคยทำไม่รู้อยูไหน

Code (PHP)
<?php
$m="2";
$y="2553";

if($m>=10){
$show=$y+1;
	}else{
		if($m>=1){
		$show=$y;
		}
		
}
echo "ปีงบประมาณ $show";

?>

Date : 2010-06-16 18:20:15 By : aimoomoo
 


 

No. 4



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



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


ดูโค๊ดของพี่แล้ว งงสุด ๆ ว่า ตัวแปรแต่ละตัวมาจากไหน แล้วเราจะไม่สามารถกำหนดว่าเป็นปี 2553 แบบเจาะจงตายตัวได้ เพราะปีก็เปลี่ยนไปเรื่อย ๆ นะครับ คงจะเอาโค๊ดพี่มาใช้งานเกี่ยวกับ serach ไม่ได้นะครับ แต่อย่างไรผมก็ขอขอบคุณมาก ๆ
Date : 2010-06-16 18:31:01 By : pukmtec
 


 

No. 5



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


cute-header-03
ขอตอบแบบเป็น PURE SQL แล้วกันนะคะ เพราะส่วนตัวจะ ANTI PHP มากกว่า VB.NET สะอีก
ไม่ได้ว่า PHP ไม่ดี เพียงแต่ไม่ชอบเป็นการส่วนตัวค่ะ

ปัญหานี้ คือ คุณต้องการดึงเจ้าข้อมูลประจำปี มาแสดง
โดยที่ ข้อมูล ปี X คือ ข้อมูลจากวันที่ 1 ตค.ปี x-1 ถึง 30 กย. ปี X เท่านั้นเอง

ปกติจะใช้ MYSQL ใช่ปะคะ
แบบง่ายคือ สร้าง COLUMN ปีงบประมาณขึ้นมา
*แทน date_time_field ด้วยชื่อ field ของคุณค่ะ
Code (PHP)
SELECT 
IF(MONTH(date_time_field)>=10,YEAR(date_time_field)+1 ,YEAR(date_time_field)) 
AS Annual_budget 
FROM tb_testreqsupp
WHERE เงื่อนไขการเลือกข้อมูล


หรือถ้ายาวไปก็เขียน STORE PROCEDURE ไว้สั้นๆดังนี้ค่ะ

Code (PHP)
DELIMITER $$

DROP FUNCTION IF EXISTS `GET_ANNUAL_BUDGET_YEAR` $$
CREATE FUNCTION `GET_ANNUAL_BUDGET_YEAR`
(_VAR_INCOMING_DATE DATETIME)
RETURNS INT
BEGIN

    DECLARE _DATE_MONTH      INT DEFAULT 0 ;
    DECLARE _M_RET           INT DEFAULT 0 ;

    SET _DATE_MONTH = MONTH(_VAR_INCOMING_DATE);

    /* ลำดับของเดือนตุลาคม คือ 10 */
    IF (_DATE_MONTH >= 10) THEN
       /*เป็นปี งปม. ถัดไปชะปะคะ*/
       SET _M_RET = YEAR(_VAR_INCOMING_DATE) +1 ;
    ELSE
       SET _M_RET = YEAR(_VAR_INCOMING_DATE) ;
    END IF ;

    RETURN _M_RET ;

END $$

DELIMITER 


usage ก็ดังนี้ค่ะ
Code (PHP)
SELECT GET_ANNUAL_BUDGET_YEAR(date_time_field) AS Annual_budget 
FROM tb_testreqsupp
WHERE เงื่อนไขการเลือกข้อมูล


เช่นเลือกข้อมูลเฉพาะปีงบประมาณ 2553
ตรง WHERE CLAUSE จะเขียนได้ว่า
WHERE GET_ANNUAL_BUDGET_YEAR(date_time_field) +543 = 2553

543 คือ ผลต่างของ คศ กับ พศ ค่ะ
Date : 2010-06-16 19:12:00 By : blurEyes
 


 

No. 6



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

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

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


แต่โบราณว่ายิ่งเกลียดยิ่งเจอนะ
Date : 2010-06-16 20:25:59 By : tungman
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
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-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่