อยากเขียนรายงานสรุปประจำเดือนอ่ะครับโดยสามารถเลือคนหาในแต่ละเดือนและปีได้แล้วแสดงชื่อคนทีซ่อมและจำนวนที่ออกซ่อมในแต่ละเดือนครับ
ซึ่งในภาพด้านบนในฐานข้อมูลมีแค่ นิวัฒน์ อุทัยดามีอยู่ 1 ครั้งซึ่งถูกแล้วแต่ที่ภาพด้านล่างมันแสดงจำนวนครั้งเป็น 1 และในฐานข้อมูลไม่มีข้อมูลนี้อยู่มันมาได้ยังไงหรือครับ
Code (PHP)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<form action="" method="post">
<td colspan="6" align="center">ค้นหา :
<?
include"connDB.php";
?>
<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="2012">2555</option>
<option value="2013">2556</option>
</select>
<input type="submit" name="Submit" value="ค้นหา" />
</td>
</form>
<table width="500" border="1" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" bgcolor="#CCFF00"><div align="center">สรุปการออกซ่อม</div></td>
</tr>
<tr>
<td bgcolor="#00FFFF"><div align="center">ช่างที่ออกซ่อม</div></td>
<td bgcolor="#00FFFF"><div align="center">จำนวน</div></td>
</tr>
<?php
include("connDB.php");
mysql_query("set NAMES UTF8");
$sql = mysql_query("SELECT editor FROM repair_info");
while($show=mysql_fetch_array($sql))
{
$sql2 = mysql_query("SELECT * FROM repair_info where editor = '$F1[editor]'");
$count=mysql_num_rows($sql2);
$sql3 =mysql_query("SELECT * FROM repair_info where editor=editor" );
$count1=mysql_num_rows($sql3);
?>
<tr>
<td width="274" align="left" bgcolor="#FF9933"><?=$show[editor]?></td>
<td width="210" align="center" bgcolor="#FF9933"><?="$count ครั้ง"?></td>
</tr>
<?
}
?>
<tr>
<td width="274" align="left" bgcolor="#FFFFFF"><div align="right">รวมการออกซ่อมทั้งหมด</div></td>
<td width="210" align="center" bgcolor="#FF9933"><?="$count1 ครั้ง"?></td>
</tr>
</table>
</body>
</html>
รบกวนด้วยครับจะขึ้นสอบพรุ่งนี้แล้วครับต้องการคำปรึกษาด่วนมาก
Date :
2013-02-10 22:43:07
By :
luk101
SELECT editor FROM repair_info มันมีอันนี้ มาด้วยมันก็ออกของ ศุภลักษณ์ มาด้วย...
....ตอนนี้เมา แนะนำได้แค่ว่า ไม่ต้อง SELECT editor FROM repair_info คือไม่ต้องเอาทั้งหมด
Date :
2013-02-10 22:50:37
By :
apisitp
ลองดูนะครับ ไม่ได้ลองทดสอบดูนะไม่มี database
Code (PHP)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<form action="" method="post">
<td colspan="6" align="center">ค้นหา :
<?
include"connDB.php";
?>
<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="2012">2555</option>
<option value="2013">2556</option>
</select>
<input type="submit" name="Submit" value="ค้นหา" />
</td>
</form>
<table width="500" border="1" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" bgcolor="#CCFF00"><div align="center">สรุปการออกซ่อม</div></td>
</tr>
<tr>
<td bgcolor="#00FFFF"><div align="center">ช่างที่ออกซ่อม</div></td>
<td bgcolor="#00FFFF"><div align="center">จำนวน</div></td>
</tr>
<?php
include("connDB.php");
mysql_query("set NAMES UTF8");
$sql0 = mysql_query("SELECT count(*)as countedit0 FROM repair_info where editor <> '' or editor is not null");
$show0 = mysql_fetch_array($sql0);
$sql = mysql_query("SELECT editor,count(*)as countedit FROM repair_info where editor <> '' or editor is not null");
while($show=mysql_fetch_array($sql))
{
?>
<tr>
<td width="274" align="left" bgcolor="#FF9933"><?=$show["editor"];?></td>
<td width="210" align="center" bgcolor="#FF9933"><?=$show["countedit"];?> ครั้ง</td>
</tr>
<?
}
?>
<tr>
<td width="274" align="left" bgcolor="#FFFFFF"><div align="right">รวมการออกซ่อมทั้งหมด</div></td>
<td width="210" align="center" bgcolor="#FF9933"><?=$show0["countedit0"];?> ครั้ง</td>
</tr>
</table>
</body>
</html>
Date :
2013-02-10 22:59:58
By :
nutsuanplu
ถ้าเอาแบบง่ายที่สุด
ก็ SELECT การซ่อมออกมาให้หมด หลังจากนั้นก็เอามาสร้างข้อมูลจำนวนครั้งด้วยการใช้ array
อาจจะดูซับซ้อนกว่าการใช้ query แต่จริงๆ แล้วทำงานเร็วกว่าเท่าตัวเลยครับ เข้าใจง่ายมากๆ ด้วย
Code (PHP)
<table>
<tr>
<th colspan="2">สรุปการออกซ่อม</th>
</tr>
<tr>
<th>ช่างที่ออกซ่อม</th>
<th>จำนวนครั้ง</th>
</tr>
<?php
// อ่านทุกแถวที่ date_finish มีค่าอยู่ในเดือนปัจจุบัน
// โดยเรียงจาก date_start (น้อยไปมาก)
$result = mysql_query("
SELECT * FROM `repair_info`
WHERE MONTH(`date_finish`) = MONTH(NOW())
ORDER BY `date_start`
");
$editor_info = array(); // เอาไว้เก็บชื่อ และจำนวนครั้ง
while ($row = mysql_fetch_assoc($result)) {
if (isset($editor_info[$row['editor']])) { // ถ้ามีช่างซ่อมคนนี้ออกมาแล้ว
$editor_info[$row['editor']]++; // ให้บวกเพิ่มจำนวนครั้งได้เลย
} else {
$editor_info[$row['editor']] = 1; // แต่ถ้ายังไม่มี ต้องกำหนดค่าก่อน
}
}
$total = 0; // จำนวนครั้งทั้งหมด
foreach ($editor_info as $name => $count) { //
?>
<tr>
<td><?php echo $name; ?></td>
<td><?php echo $count; ?></td>
</tr>
<?php
$total += $count;
}
?>
<tr>
<th>รวมทั้งหมด</th>
<td><?php echo $total; ?></td>
</tr>
</table>
Date :
2013-02-11 08:30:38
By :
cookiephp
อ่อ อย่าเอาโค้ดผมไปแปะนะครับ เป็นตัวอย่างให้อ่านทำความเข้าใจ และปรับใช้เอาครับ
Date :
2013-02-11 08:33:37
By :
cookiephp
ก็เพิ่มการตรวจปี เข้าไปด้วยครับ
และใช้ DATE_FORMAT() แทน MONTH() เพราะคุณใช้รูปแบบของเดือนแบบมี 0 นำหน้าเป็นตัวเปรียบเทียบ
Code (PHP)
$result = mysql_query("
SELECT * FROM `repair_info`
WHERE
DATE_FORMAT(`date_finish`, '%Y %m') = '$_POST[selYear] $_POST[selMonth]'
ORDER BY `date_start`
");
Date :
2013-02-11 12:51:32
By :
cookiephp
แต่ถ้าข้อมูลมีหลาย field ละครับเช่น editor1 editor2 editor3 editor4 ต้องเขียนยังไงครับ
Date :
2013-02-14 13:54:02
By :
luk101
ข้อมูลมีหลายฟิลด์นี่หมายความว่ายังไงครับ
มีช่างหลายคน หรืออะไร อธิบายให้ชัดเจนด้วยครับ
แล้วที่ว่าต้องเขียนยังไง จะทำอะไรครับ
กรุณาถามคำถามให้ชัดเจนหน่อยครับ
Date :
2013-02-14 14:03:31
By :
cookiephp
Load balance : Server 04