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 : 112709



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



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




รบกวนหน่อยหน่อยค่ะ คือกำลังหาผลรวมและคำนวนหาเปอร์เซ็นต์การเข้าเรียนของนักเรียน
เลยลองนำตัวอย่างจากบทความมาประยุกต์ใช้ มันติดปัญหานับจำนวนเป็น 0 หมดเลยค่ะ
ช่วยดูให้หน่อยค่ะ

ะะ


อ้างอิงจากบทความนี้ https://www.thaicreate.com/community/php-array-report.html




Code (PHP)
<html>
<head>
<title>รายงานการมาเรียน</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<style>
.number{ text-align : right;}
.number div{ 
    background: #91F7A4; 
    color : #ff0000;
}

#test_report th{ background-color : #21BBD6; color : #ffffff;}

#test_report{
    border-right : 1px solid #eeeeee;
    border-bottom : 1px solid #eeeeee;
}

#test_report td,#test_report th{
    border-top : 1px solid #eeeeee;
    border-left : 1px solid #eeeeee;
    padding : 2px;
}

#txt_year{ width : 70px;}

.fail{ color : red;}

</style>
</head>
<body>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">

    <table>

        <tr>

            <td>ระบุเดือน-ปี : </td>

            <td>

                <select name="txt_month">

                    <option value="">--------------</option>

                    <?php

                    $month = array('01' => 'มกราคม', '02' => 'กุมภาพันธ์', '03' => 'มีนาคม', '04' => 'เมษายน', 

                                    '05' => 'พฤษภาคม', '06' => 'มิถุนายน', '07' => 'กรกฎาคม', '08' => 'สิงหาคม', 

                                    '09' => 'กันยายน ', '10' => 'ตุลาคม', '11' => 'พฤศจิกายน', '12' => 'ธันวาคม');

                    $txtMonth = isset($_POST['txt_month']) && $_POST['txt_month'] != '' ? $_POST['txt_month'] : date('m');

                    foreach($month as $i=>$mName) {

                        $selected = '';

                        if($txtMonth == $i) $selected = 'selected="selected"';

                        echo '<option value="'.$i.'" '.$selected.'>'. $mName .'</option>'."\n";

                    }

                    ?>

                </select>

            </td>

            <td>

                <select name="txt_year">

                    <option value="">--------------</option>

                    <?php

                    $txtYear = (isset($_POST['txt_year']) && $_POST['txt_year'] != '') ? $_POST['txt_year'] : date('Y');


                    $yearStart = date('Y');

                    $yearEnd = $txtYear-5;


                    for($year=$yearStart;$year > $yearEnd;$year--){

                        $selected = '';

                        if($txtYear == $year) $selected = 'selected="selected"';

                        echo '<option value="'.$year.'" '.$selected.'>'. ($year+543) .'</option>'."\n";

                    }

                    ?>

                </select>

            </td>

            <td><input type="submit" value="ค้นหา" /></td>

        </tr>

    </table>

</form>

<?php


//รับค่าตัวแปรที่ส่งมาจากแบบฟอร์ม HTML

$year = isset($_POST['txt_year']) ? mysql_real_escape_string($_POST['txt_year']) : '';
$month = isset($_POST['txt_month']) ? mysql_real_escape_string($_POST['txt_month']) : '';

if($year == '' || $month == '') exit('<p class="fail">กรุณาระบุ "เดือน-ปี" ที่ต้องการเรียกรายงาน</p>');


//เปิดการเชื่อมต่อฐานข้อมูล
mysql_connect("localhost","root","root");
mysql_select_db("project");
mysql_query("SET NAMES UTF8");

//ดึงข้อมูลนักเรีนนทั้งหมด

$allEmpData = array();
$strSQL = "SELECT stu_id,stu_name FROM `student_data` ";
$qry = mysql_query($strSQL) or die('ไม่สามารถเชื่อมต่อฐานข้อมูลได้ Error : '. mysql_error());
while($row = mysql_fetch_assoc($qry)){
    $allEmpData[$row['stu_id']] = $row['stu_name'];
}


//เรียกข้อมูลการมาเรียนของเดือนที่ต้องการ 

$allReportData = array();
$strSQL = "SELECT id_attendance, DAY(`date`) AS inclass_id, COUNT(*) AS inclass_id FROM `attendance` ";
$strSQL.= "WHERE `inclass_id` LIKE '901' ";
$strSQL.= "GROUP by id_attendance,DAY(`date`)";
$qry = mysql_query($strSQL) or die('ไม่สามารถเชื่อมต่อฐานข้อมูลได้ Error : '. mysql_error());
while($row = mysql_fetch_assoc($qry)){
    $allReportData[$row['id_attendance']][$row['date']] = $row['inclass_id'];
}


echo "<table border='0' id='test_report' cellpadding='0' cellspacing='0'>";
echo '<tr>';//เปิดแถวใหม่ ตาราง HTML
echo '<th>รายชื่อนักเรียน</th>';

//วันที่สุดท้ายของเดือน

$timeDate = strtotime($year.'-'.$month."-01");  //เปลี่ยนวันที่เป็น timestamp
$lastDay = date("t", $timeDate);                //จำนวนวันของเดือน


//สร้างหัวตารางตั้งแต่วันที่ 1 ถึงวันที่สุดท้ายของดือน

for($day=1;$day<=$lastDay;$day++){
    echo '<th>' . substr("0".$day, -2) . '</th>';
	
}
echo '<th>'.จำนวนครั้ง.'</th>';
echo '<th>'.เปอร์เซนต์เข้าเรียน.'</th>';
echo "</tr>";


foreach($allEmpData as $id_attendance=>$stu_name){

    echo '<tr>';//เปิดแถวใหม่ ตาราง HTML
    echo '<td>'. $stu_name .'</td>';

    //เรียกข้อมูลการมาเรียนของนักเรียนแต่ละคน ในเดือนนี้

    for($j=1;$j<=$lastDay;$j++){

        $inclass_id = isset($allReportData[$id_attendance][$j]) ? '<div>'.$allReportData[$id_attendance][$j].'</div>' : 0;

        echo "<td class='number'>" ,$inclass_id, "</td>";


    }
   echo '<td>'. $row[0] .'</td>'; //ช่องนับจำนวนวันที่นักเรียนเข้าเรียนภายใน 30 วัน
   echo '<td>'. $xxx .'</td>'; //ช่องคำนวนเปอร์เซนต์การเข้าเรียนของนักเรียน 
   echo '</tr>';//ปิดแถวตาราง HTML
  
   
   
}
echo "</table>";
mysql_close();//ปิดการเชื่อมต่อฐานข้อมูล
?>




Tag : PHP, MySQL, Report Others







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-11-20 22:06:28 By : llooll View : 1111 Reply : 11
 

 

No. 1

Guest


เบื่อจริงๆ พวก 2 เพศเนี่ย

คงนึกว่าปลอมเป็นตัวเมียแล้วจะมีคนมาช่วยมั้ง






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-21 08:43:30 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2014-11-21 08:43:30
รายละเอียดของการตอบ ::
555++ จริงครับ คนในบอร์ดนี้เป็นแบบที่ว่าจริงๆ เห็นผู้หญิงเป็นไม่ได้.. จะรีบเข้ามาตอบทันที

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-21 08:47:27 By : cowboycnx
 

 

No. 3



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



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


ลองเอาคำสั่งนี้ไปรันบน phpmyadmin ดูก่อนดีกว่าครับ มีข้อมูลไหม

Code (SQL)
SELECT id_attendance, DAY(`date`) AS inclass_id, COUNT(*) AS inclass_id FROM `attendance` 
WHERE `inclass_id` LIKE '901' GROUP by id_attendance,DAY(`date`)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-21 09:07:48 By : cowboycnx
 


 

No. 4



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : cowboycnx เมื่อวันที่ 2014-11-21 08:47:27
รายละเอียดของการตอบ ::
เพื่อ บางคนเข้าไปด้วยนะครับ 5555 ผมไม่ยอมรับตรงนี้ เดี๋ยวหัวแบะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-21 09:48:07 By : Chaidhanan
 


 

No. 5



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



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


ตอบความคิดเห็นที่ : 4 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-11-21 09:48:07
รายละเอียดของการตอบ ::
แหมมม... แม่บ้านไม่ตามมาถึงที่นี่หรอกครับ 5555+

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-21 09:49:50 By : cowboycnx
 


 

No. 6



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



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


เอิ่มมม งงเลยค่ะ ใช้อ่ะไรวัดหรอค่ะว่าหนูเป็นอีกเพศ ??


ดึงออกมาได้แล้วค่ะว่าทั้งเดือนเข้าเรียนวันที่เท่าไหร่บ้างง ช่วยแนะวิธีที่จะนับผลรวมทั้งเดือนของแต่ละคนให้หน่อยได้ไหมค่ะ ??
ขอบคุณมากค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-25 11:05:44 By : llooll
 


 

No. 7



โพสกระทู้ ( 2,258 )
บทความ ( 5 )

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

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

Apply จาก SQL ของคุณนิดเดียวครับ

Code (SQL)
select count(*) as total from tb_name where date_column between 'date_from' and 'date_to' and stu_id = 'รหัสนักศึกษา'

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-25 11:14:40 By : Manussawin
 


 

No. 8



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



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


ขอบคุณสำหรับคำแนะนำมากเลย ค่ะ แต่มั้นก้ยังไม่ออกค่ะ ตรงช่องผลรวม

ดด


Code (PHP)
<?php

//รับค่าตัวแปรที่ส่งมาจากแบบฟอร์ม HTML
$year = isset($_POST['txt_year']) ? mysql_real_escape_string($_POST['txt_year']) : '';
$month = isset($_POST['txt_month']) ? mysql_real_escape_string($_POST['txt_month']) : '';

if($year == '' || $month == '') exit('<p class="fail">กรุณาระบุ "เดือน-ปี" ที่ต้องการเรียกรายงาน</p>');

//เปิดการเชื่อมต่อฐานข้อมูล
//mysql_connect("localhost","root","abcd1234");  //ข้อมูลนี้ได้มาจากตอนติดตั้งเว็บเซิร์ฟเวอร์
mysql_connect("localhost","root","root");  //ข้อมูลนี้ได้มาจากตอนติดตั้งเว็บเซิร์ฟเวอร์
mysql_select_db("project");
mysql_query("SET NAMES UTF8");


echo "<table border='0' id='test_report' cellpadding='0' cellspacing='0'>";
echo '<tr>';//เปิดแถวใหม่ ตาราง HTML
echo '<th>รายชื่อนักเรียน</th>';


//วันที่สุดท้ายของเดือน
$timeDate = strtotime($year.'-'.$month."-01");  //เปลี่ยนวันที่เป็น timestamp
$lastDay = date("t", $timeDate);   				//จำนวนวันของเดือน

//สร้างหัวตารางตั้งแต่วันที่ 1 ถึงวันที่สุดท้ายของดือน
for($day=1;$day<=$lastDay;$day++){
	echo '<th>' . substr("0".$day, -2) . '</th>';
}
echo '<th>ผลรวม</th>';
echo '<th>คิดเปอร์เซนต์</th>';
echo "</tr>";

//เรียกข้อมูลการเข้าเรียนของเดือนที่ต้องการ 
//++ ต้องดึงมาจากฐานข้อมูลผู้ใช้ ++
$strSQL = "SELECT stu_id,stu_name,stu_lname FROM `student_data` ";
$qry = mysql_query($strSQL) or die('ไม่สามารถเชื่อมต่อฐานข้อมูลได้ Error : '. mysql_error());
while($row = mysql_fetch_assoc($qry)){
	echo '<tr>';//เปิดแถวใหม่ ตาราง HTML
	echo '<td>'. $row['stu_name'] .'&nbsp;'. $row['stu_lname'] .'</td>';
	
	//เรียกข้อมูลการมาเรียนของนักเรียนแต่ละคน ในเดือนนี้
	for($j=1;$j<=$lastDay;$j++){
		$d = substr("0".$j, -2);
		$strSQL = "SELECT COUNT(*) AS Num FROM `attendance` ";
		$strSQL.= "WHERE `date` = '$year-$month-$d' AND stu_id = '". $row['stu_id'] ."' ";
		$strSQL.= "AND`inclass_id` LIKE '901' ";
		$strSQL.= "GROUP by DAY(`date`)";
		$qry2 = mysql_query($strSQL) or die('ไม่สามารถเชื่อมต่อฐานข้อมูลได้ Error : '. mysql_error());
		$row2 = mysql_fetch_assoc($qry2);
		$Num = ($row2['Num'] > 0) ? '<div>'. $row2['Num'] . '</div>' : 0;
		
		echo "<td class='number'>", $Num, "</td>";
		
		
		
		///////////////////////////////นับผลรวม เข้าเรียนทั้งหมดกี่วันในแต่ละเดือน///////////////////////////////////////////
		$strSQL = "select count(*) as Num from attendance where date between 'date' and 'date' and stu_id = 'stu_id'";
		$qry1 = mysql_query($strSQL) or die('ไม่สามารถเชื่อมต่อฐานข้อมูลได้ Error : '. mysql_error());
		$row1 =  mysql_fetch_assoc($qry1);		
		$Num1 = $row2['$Num'];
		}
		


	echo "<td class='number'>", $Num1, "</td>";  ///// ผลลัพธ์ เข้าเรียนทั้งหมดกี่วันในแต่ล่ะเดือน ///////
	echo "<td class='number'>", $Num2, "</td>";  ///// ผลลัพธ์ คำนวน % จากการเข้าเรียนทั้งหมดกี่วันในแต่ล่ะเดือน ///////
	echo '</tr>';//ปิดแถวตาราง HTML
}
echo "</table>";

mysql_close();//ปิดการเชื่อมต่อฐานข้อมูล
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-25 11:48:46 By : llooll
 


 

No. 9



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



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

ลองดูครับเพื่อช่วยได้Code (PHP)
$schoolQRY = mysql_query("select * from ตารางข้อมูล where ฟิลที่ต้องการ='".$row['ฟิลที่ต้องการ']."'");
     echo "<td><center>".number_format(mysql_num_rows($schoolQRY))."</center></td>";
	//echo '<td>'. $row[0] .'sss</td>'; //ช่องนับจำนวนวันที่นักเรียนเข้าเรียนภายใน 30 วัน
   echo '<td>'. $xxx .'</td>'; //ช่องคำนวนเปอร์เซนต์การเข้าเรียนของนักเรียน 
   echo '</tr>';//ปิดแถวตาราง HTML


ในส่งนการหาเปอร์เซ็นต์ก็แบบเดี่ยวกัน คือ จำนวนนักเรียนต่อเดือนคูณร้อยหารจำนวนเดือน
เช่น
Code (PHP)
echo "<td><center>".number_format(mysql_num_rows($schoolQRY)*100/จำนวนเดือน,2). " % "."</center></td>";
  // echo '<td>'. $xxx .'</td>'; //ช่องคำนวนเปอร์เซนต์การเข้าเรียนของนักเรียน 


จะได้แบบนี้
------


ประวัติการแก้ไข
2014-11-25 12:18:53
2014-11-25 12:20:06
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-25 11:56:32 By : LAGO
 


 

No. 10



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



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


ขอบคุณมากเลยค่ะ คุณ LAGO ช่วยได้เยาะเลยค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-25 12:46:58 By : llooll
 


 

No. 11

Guest


ตอบความคิดเห็นที่ : 10 เขียนโดย : llooll เมื่อวันที่ 2014-11-25 12:46:58
รายละเอียดของการตอบ ::
ยังไม่หยุดแอ๊บอีก เป็นผู้ชายก็มีคนตอบนะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-25 16:27:02 By : ห้ามตอบเกินวันละ 2 กระทู้
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
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 01
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 อัตราราคา คลิกที่นี่