 |
สอบถามเรื่องคำสั่ง SQL ของ MySQL ที่แสดงสถิติแจ้งซ่อมของแต่ละแผนก แบบรายเดือน ว่ามีการแจ้งซ่อมกี่ครั้ง |
|
 |
|
|
 |
 |
|
ได้ลองเขียนเองดูบ้างหรือยังครับ
|
 |
 |
 |
 |
Date :
2013-09-18 16:35:21 |
By :
pokultra |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ยังทำไม่ได้เลยค่ะ ใครพอจะช่วยได้บ้างมั้ยคะ 
โค้ดตอนนี้นะคะ
Code (PHP)
<?php require_once('Connections/data.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_data, $data);
$query_Recordset1 = "SELECT * FROM repairform_tb";
$Recordset1 = mysql_query($query_Recordset1, $data) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<div align="center">
<table bgcolor="" border="1" width="450" style="font-weight:bold;">
<tr bgcolor="" height="30" align="center">
<form action="" method="post">
<td colspan="6" align="center">ค้นหา :
<select name="selMonth" id="selMonth">
<option value="">เลือกเดือน</option>
<option value="01" <? if($selMonth=='01') echo " selected='selected'" ?> >มกราคม</option>
<option value="02" <? if($selMonth=='02') echo " selected='selected'" ?> >กุมภาพันธ์</option>
<option value="03" <? if($selMonth=='03') echo " selected='selected'" ?> >มีนาคม</option>
<option value="04" <? if($selMonth=='04') echo " selected='selected'" ?> >เมษายน</option>
<option value="05" <? if($selMonth=='05') echo " selected='selected'" ?> >พฤษภาคม</option>
<option value="06" <? if($selMonth=='06') echo " selected='selected'" ?> >มิถุนายน</option>
<option value="07" <? if($selMonth=='07') echo " selected='selected'" ?> >กรกฎาคม</option>
<option value="08" <? if($selMonth=='08') echo " selected='selected'" ?> >สิงหาคม</option>
<option value="09" <? if($selMonth=='09') echo " selected='selected'" ?> >กันยายน</option>
<option value="10" <? if($selMonth=='10') echo " selected='selected'" ?> >ตุลาคม</option>
<option value="11" <? if($selMonth=='11') echo " selected='selected'" ?> >พฤศจิกายน</option>
<option value="12" <? if($selMonth=='12') echo " selected='selected'" ?> >ธันวาคม</option>
</select>
<select name="selYear" id="selYear">
<option value="">เลือกปี</option>
<option value="2014">2557</option>
<option value="2013">2556</option>
</select>
<input type="submit" name="Submit" value="ค้นหา" />
</td>
</form>
</tr>
<tr bgcolor="" height="50" align="center"><td colspan="6">
<? echo " รายงานสรุปการแจ้งซ่อม</br>เดือน " . $selMonth." " . $selYear ; ?>
</td></tr>
<tr bgcolor="" height="30" align="center"><td colspan="6">
รายงานการแจ้งซ่อม
</td></tr>
<tr bgcolor="" height="30" align="center">
<td border="0" width="40%">ชื่อฝ่าย/แผนก</td>
<td border="0" width="20%">จำนวนแจ้งซ่อม</td>
</tr>
<?
$sql = mysql_query("SELECT DISTINCT Department FROM repairform_tb");
while($show=mysql_fetch_array($sql))
{
$sql2 = mysql_query("SELECT * FROM repairform_tb where Department = '$F1[Department]'");
$count=mysql_num_rows($sql2);
$sql3 =mysql_query("SELECT Date,SUM(Num_invoice) FROM repairform_tb GROUP BY month(Date)");
$count1=mysql_num_rows($sql3);
?>
<tr>
<td width="274" align="left" bgcolor="#66FF00"><?=$show[Department]?></td>
<td width="210" align="center" bgcolor="#66FF00"><?="$count ครั้ง"?></td>
</tr>
<?
}
?>
<tr>
<td width="274" align="left" bgcolor="#FFFFFF"><div align="right">ผลรวมการแจ้งซ่อมทั้งหมด</div></td>
<td width="210" align="center" bgcolor="#66FF00"><?="$count1 ครั้ง"?></td>
</tr>
</table>
</div>
</body>
</html><?php
mysql_free_result($Recordset1);
?>

|
 |
 |
 |
 |
Date :
2013-10-10 11:26:01 |
By :
Kanjana33 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
นอกเรื่อง : ทำไม phpmyadmin รูปภาพ หน้าตา ไม่คุ้นตาเลย มันคืออะไรอ่ะครับ สวยดี อยากได้ ๆ
|
 |
 |
 |
 |
Date :
2013-10-10 11:57:10 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
*----* ขออนุญาติตอบแบบแหวกแนว  
1. เมื่อเลือกเดือนเข้ามา ค่าที่ได้มาต้องเป็น 01 - 12 (มกราคม-ธันวาคม) ปีก็ พศ-543 จะได้เข้าหลัก yyyy-dd-mm
2. เอาเดือนที่ได้มา (สมมุติส่งเดือน 10 พ.ศ.2556 เข้ามา)
*** แก้ใขเพิ่มเติม แนะนำให้ลองไปเปิดไฟล์ใหม่มาเปล่าๆ
Code (PHP)
// นำเข้าพวกไฟล์ connect DB ต่างๆ
$date_start=2013-10-01 // เริ่มวันที่ 1 ตายตัว รับตัวแปรแค่ปีและเดือนจากผู้ใช้ วันไม่ต้องเรากำหนดเป็น1
$date_end=2013-10-31 // จบวันที่ 31ตายตัว รับตัวแปรแค่ปีและเดือนจากผู้ใช้ วันไม่ต้องเรากำหนดเป็น31
//คำสั่ง SQL หาวันที่ทั้งหมดในเดือนปีที่ต้องการ โดยจัดกลุ่มตาม Department จะเป็นอันได้ว่าเราได้ Department มาชนิดละ 1 แถว
$sql="SELECT * FROM repairform_tb WHERE DateR BETWEEN '$date_start' AND '$date_end' GROUP BY Department ";
$dbquery= mysql_db_query($sql);
$num_rows= mysql_num_rows($dbquery); //นับแถวจำนวน Department ที่ได้
$i=0;
while ($i<$num_rows){ //เปิดลูปที่ 1
$result=mysql_fetch_array($dbquery); //mysql_fetch_array หารายชื่อ Department ที่มีอยู่ทั้งหมด
$Department =$result['Department']; // $Department เท่ากับผลลัพท์ของ Department
//SQL2 หาจำนวนที่มีของ Department นั้นๆในวันเดือนปีที่ต้องการ ที่mysql_fetch_array ได้ในลูป 1
$sql2="SELECT * FROM repairform_tb WHERE Department = '$Department' AND DateR BETWEEN '$date_start' AND '$date_end' ";
$dbquery2= mysql_db_query($sql2);
$num_rows2= mysql_num_rows($dbquery2); //หาจำนวนที่มีของ Department ในเดือนปีที่ต้องการ
echo "แผนก $Department จำนวน $num_rows2 ครั้ง"; //แสดงค่าที่พบ ในแต่ละแผนก
$sum_numrows+=$num_rows2; // เก็บค่ารวมทั้งหมด
$i++;}// ปิด while
echo $sum_numrows; // echo ค่ารวมไว้นอกลูปเพราะมันแสดงครั้งเดียว
|
ประวัติการแก้ไข 2013-10-11 18:28:02 2013-10-11 18:28:02
 |
 |
 |
 |
Date :
2013-10-11 18:16:22 |
By :
meannerss |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$dbquery= mysql_db_query($sql); //แบบนี้
$dbquery= mysql_db_query($dbname,$sql); //แบบนี้
$dbquery= mysql_query($sql); // แบบนี้
มันจะเกี่ยวกันไหมอ่ะ
|
ประวัติการแก้ไข 2013-10-13 14:09:13
 |
 |
 |
 |
Date :
2013-10-13 14:06:41 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ว่าล่ะ ก็ไม่มี database ไงครับ
ลืม include ไฟล์ ที่ใช้ติดต่อ DB ไงครับ
ประมาณนี้
$host="localhost";
$user="root";
$pw="123456";
$dbname="ฐานข้อมูลของคุณครับ";
mysql_connect($host,$user,$pw) or die("ติดต่อ Host ไม่ได้");
mysql_select_db($dbname) or die("ติดต่อฐานข้อมูลไม
ลืมใส่โค้ดอะไรหรือเปล่า ลองค่อย ๆ แก้ให้หาย Error ส่วนเรื่องนับจำนวน ก็มีคนช่วยตอบไปแล้ว ค่อย ๆ ไล่ Code ดูอย่างใจเย็นครับ
|
ประวัติการแก้ไข 2013-10-14 14:23:31
 |
 |
 |
 |
Date :
2013-10-14 14:21:48 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองอีกครั้งครับ ทีนี้เห็นที่ผิดละ
Code (PHP)
<?
require_once('Connections/data.php'); // นำเข้าพวกไฟล์ connect DB ต่างๆ
$date_start="2013-03-01";// เริ่มวันที่ 1 ตายตัว รับตัวแปรแค่ปีและเดือนจากผู้ใช้ วันไม่ต้องเรากำหนดเป็น1
$date_end="2013-03-31"; // จบวันที่ 31ตายตัว รับตัวแปรแค่ปีและเดือนจากผู้ใช้ วันไม่ต้องเรากำหนดเป็น31
//คำสั่ง SQL หาวันที่ทั้งหมดในเดือนปีที่ต้องการ โดยจัดกลุ่มตาม Department จะเป็นอันได้ว่าเราได้ Department มาชนิดละ 1 แถว
$sql="SELECT * FROM repairform_tb WHERE Date BETWEEN '$date_start' AND '$date_end' GROUP BY Department ";
$dbquery= mysql_db_query($database_data,$sql);
$num_rows= mysql_num_rows($dbquery); //นับแถวจำนวน Department ที่ได้
$i=0;
while ($i<$num_rows){ //เปิดลูปที่ 1
$result=mysql_fetch_array($dbquery); //mysql_fetch_array หารายชื่อ Department ที่มีอยู่ทั้งหมด
$Department =$result['Department']; // $Department เท่ากับผลลัพท์ของ Department
//SQL2 หาจำนวนที่มีของ Department นั้นๆในวันเดือนปีที่ต้องการ ที่mysql_fetch_array ได้ในลูป 1
$sql2="SELECT * FROM repairform_tb WHERE Department = '$Department' AND Date BETWEEN '$date_start' AND '$date_end' ";
$dbquery2= mysql_db_query($database_data,$sql2);
$num_rows2= mysql_num_rows($dbquery2); //หาจำนวนที่มีของ Department ในเดือนปีที่ต้องการ
echo "แผนก $Department จำนวน $num_rows2 ครั้ง"; //แสดงค่าที่พบ ในแต่ละแผนก
$sum_numrows+=$num_rows2; // เก็บค่ารวมทั้งหมด
$i++;}// ปิด while
echo $sum_numrows; // echo ค่ารวมไว้นอกลูปเพราะมันแสดงครั้งเดียว
?>
|
 |
 |
 |
 |
Date :
2013-10-14 14:29:35 |
By :
meannerss |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2013-10-14 16:19:20 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ปรับนิดนึงนะครับกรณีเดือนนี้ไม่มีรายการนั้นเลย แต่เดือนก่อนมี ถ้าเราอยากให้มันโชว์ 0 ครั้ง จากเดิมที่มันจะไม่โชว์เลย
//คำสั่ง SQL หาวันที่ทั้งหมดในเดือนปีที่ต้องการ โดยจัดกลุ่มตาม Department จะเป็นอันได้ว่าเราได้ Department มาชนิดละ 1 แถว
$sql="SELECT * FROM repairform_tb WHERE Date BETWEEN '$date_start' AND '$date_end' GROUP BY Department ";
ปรับเป็น
$sql="SELECT * FROM repairform_tb GROUP BY Department ";
ถ้าเอาอันนี้มาทุกแผนกที่มีครับ อันไหนเดือนนี้ไม่มีจะขึ้น 0 ครั้ง
|
 |
 |
 |
 |
Date :
2013-10-14 17:06:38 |
By :
meannerss |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$date_start="2013-03-01";// เริ่มวันที่ 1 ตายตัว รับตัวแปรแค่ปีและเดือนจากผู้ใช้ วันไม่ต้องเรากำหนดเป็น1
$date_end="2013-03-31"; // จบวันที่ 31ตายตัว รับตัวแปรแค่ปีและเดือนจากผู้ใช้ วันไม่ต้องเรากำหนดเป็น31
ทำสองบรรทัดนี้ให้ได้ครับ..... รับเดือน ปี มา ก็รับ GET , POST มา ทำยังไงก็ได้หาวิธีให้ยัดค่าเดือนปีที่เลือกมาเข้าไปในตัวแปรสองตัวข้างบนให้ได้
|
 |
 |
 |
 |
Date :
2013-10-15 11:27:09 |
By :
meannerss |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เจ้าของกระทู้ครับ ผมขอ code หน้านี้ที่สมบูณร์แล้วมาดูเป็นตัวอย่างหน่อยครับ ขอบคุณครับ
|
 |
 |
 |
 |
Date :
2014-03-06 22:09:13 |
By :
pongtave |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2014-03-07 00:05:09 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|