0

1 回目または 2 回目の試行でテストに合格した学生の割合を特定しようとしています。コードは正しいと思いますが、結果をエコーし​​ても出力が得られません。

<?php
$NREMT1 = "SELECT nremtcognitive FROM course_students WHERE nremtcognitive = '1' ";
$NREMT2 = "SELECT nremtcognitive FROM course_students WHERE nremtcognitive >= '2' ";
$completed = "SELECT studentstatus FROM course_students WHERE studentstatus >='4'";

$getNREMT1 = mysql_query($NREMT1);
$fetchNREMT1= mysql_num_rows($getNREMT1);
$getNREMT2 = mysql_query($NREMT2);
$fetchNREMT2= mysql_num_rows($getNREMT2);
$getcompleted = mysql_query($completed);
$fetchcompleted= mysql_num_rows($getcompleted);

function percent($fetchNREMT1, $fetchNREMT2, $fetchcompleted) {
    $NREMT1count= $fetchNREMT1/$fetchcompleted;
    $NREMT1percent= $NREMT1count * 100;
    $NREMT1result = number_format($NREMT1percent,0);

    $NREMT2count= $fetchNREMT2/$fetchcompleted;
    $NREMT2percent= $NREMT2count * 100;
    $NREMT2result = number_format($NREMT2percent,0);
}
echo $NREMT1result;
echo $NREMT2result;

?>
4

3 に答える 3

0

percent関数をどこでも呼び出していません。

それを呼び出して、何かを返すようにする必要があります。作成を避けて、同じコードを同じ場所に置くことができます。

 $NREMT1count= $fetchNREMT1/$fetchcompleted;
 $NREMT1percent= $NREMT1count * 100;
 $NREMT1result = number_format($NREMT1percent,0);

 $NREMT2count= $fetchNREMT2/$fetchcompleted;
 $NREMT2percent= $NREMT2count * 100;
 $NREMT2result = number_format($NREMT2percent,0);

 echo $NREMT1result;
 echo $NREMT2result;

functionの概念があまり明確ではないようです。ドキュメントをご覧ください。

于 2013-03-26T16:14:59.833 に答える
0

あなたの問題は、関数が呼び出されないため、内部で宣言された変数がpercent()初期化されないことです。これを試して:

<?php
$NREMT1 = "SELECT nremtcognitive FROM course_students WHERE nremtcognitive = '1' ";
$NREMT2 = "SELECT nremtcognitive FROM course_students WHERE nremtcognitive >= '2' ";
$completed = "SELECT studentstatus FROM course_students WHERE studentstatus >='4'";

$getNREMT1 = mysql_query($NREMT1);
$fetchNREMT1= mysql_num_rows($getNREMT1);
$getNREMT2 = mysql_query($NREMT2);
$fetchNREMT2= mysql_num_rows($getNREMT2);
$getcompleted = mysql_query($completed);
$fetchcompleted= mysql_num_rows($getcompleted);

percent($fetchNREMT1, $fetchNREMT2, $fetchcompleted);

function percent($fetchNREMT1, $fetchNREMT2, $fetchcompleted) {
    $NREMT1count= $fetchNREMT1/$fetchcompleted;
    $NREMT1percent= $NREMT1count * 100;
    $NREMT1result = number_format($NREMT1percent,0);

    $NREMT2count= $fetchNREMT2/$fetchcompleted;
    $NREMT2percent= $NREMT2count * 100;
    $NREMT2result = number_format($NREMT2percent,0);

    echo $NREMT1result;
    echo $NREMT2result;
}
?>

また、関数のファミリが現在非推奨であることも注目に値しmysql_*ます。MySQLi または PDO の使用を検討する必要があります。

于 2013-03-26T16:16:16.460 に答える
0

クエリを変更するだけです。テストされていませんが、これで始められるはずです:

SELECT 
    SUM(IF(CONVERT(nremtcognitive, UNSIGNED INTEGER) >= 2)) / COUNT(*) 
FROM course_students;
于 2013-03-26T16:18:04.027 に答える