tinyqc/v1/inc/report.php
mahdahar ff90e0eb29 Initial commit: Add CodeIgniter 4 QC application with full MVC structure
- CodeIgniter 4 framework setup with SQL Server database config
- Models: Control, Test, Dept, Result, Daily/ Monthly entry models
- Controllers: Dashboard, Control, Test, Dept, Entry, Report, API endpoints
- Views: CRUD pages with modal dialogs, dashboard, reports
- Database: Migrations for control test and daily/monthly result tables
- Legacy v1 PHP application preserved in /v1 directory
- Documentation: AGENTS.md, VIEWS_RULES.md for development guidelines
2026-01-14 16:49:27 +07:00

74 lines
2.8 KiB
PHP

<?php
function getData($control, $dates, $testid, $lastday) {
require('../config.php');
$cont = explode("|",$control);
$control = $cont[0];
$lot = $cont[1];
$sql = "select name, ct.mean, ct.sd from DICT_CONTROL dc left join CONTROL_TEST ct on dc.id=ct.controlid where dc.id='$control' and ct.testid='$testid'";
$stmt = sqlsrv_query( $conn1, $sql );
if( $stmt == false) { die( print_r( sqlsrv_errors(), true) ); }
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC );
$data['name'] = $row[0];
$data['mean'] = $row[1];
$data['sd'] = $row[2];
$sql = "select dr.resdate, dr.resvalue, dr.rescomment from DAILY_RESULT dr
left join CONTROL_TEST ct on ct.testid=dr.testid and ct.controlid=dr.controlid
where dr.testid='$testid' and dr.controlid='$control' and convert(varchar(7), dr.resdate, 126)='$dates'
order by resdate asc";
//echo "$sql";
//echo "$testid - $control <br/>";
$data['control'] = $control;
$data['lot'] = $lot;
$stmt = sqlsrv_query( $conn1, $sql );
if( $stmt == false) { die( print_r( sqlsrv_errors(), true) ); }
while ( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC ) ) {
$day = date_format($row[0],"j");
$data['result'] [$day] = $row[1];
if(is_numeric($row[1])) {
$data['resultx'] [$day] = ( $row[1] - $data['mean'] ) / $data['sd'];
} else { $data['resultx'] [$day] = 0; }
}
// mean and sd
$data['+2s'] = $data['mean'] + (2*$data['sd']);
$data['-2s'] = $data['mean'] - (2*$data['sd']);
$data['cv'] = number_format($data['sd'] / $data['mean'] * 100,3);
// sample mean and sd
$num_of_elements = count($data['result']);
$variance = 0.0;
$data['means'] = array_sum($data['result'])/$num_of_elements;
foreach($data['result'] as $i) {
if(is_numeric($i)) { $variance += pow(($i - $data['mean']), 2); }
}
$data['sds'] = (float)sqrt($variance/$num_of_elements);
$data['means'] = number_format($data['means'],3);
$data['sds'] = number_format($data['sds'],3);
if($data['means'] != 0) {
$data['cvs'] = number_format($data['sds'] / $data['means'] * 100,3);
}else { $data['cvs'] = 0; }
$data['bias'] = abs($data['mean']- $data['means']);
$data['bias'] = number_format($data['bias'] / $data['mean'] * 100,3);
$data['te'] = $data['bias'] + ( 2 * $data['cvs'] );
ksort($data['result']); ksort($data['resultx']);
return $data;
}
$control1 = $_POST['control1'];
if(isset($_POST['control2'])) { $control2 = $_POST['control2']; }
else { $control2 = 0; }
if(isset($_POST['control3'])) { $control3 = $_POST['control3']; }
else { $control3 = 0; }
$dates = $_POST['dates'];
$lastday = date("t", strtotime($dates));
$testid = $_POST['test'];
if( $control3 != 0) { require("report_3c.php"); }
else if( $control2 != 0) { require("report_2c.php"); }
else { require("report_1c.php"); }