Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何仅显示在每个年级级别上“未通过”评语的学生_Php - Fatal编程技术网

Php 如何仅显示在每个年级级别上“未通过”评语的学生

Php 如何仅显示在每个年级级别上“未通过”评语的学生,php,Php,我希望任何人都能帮助我。 我只想显示在每一个年级级别上“未通过”评语的学生。此代码的问题在于,即使是在3年级时有“通过”标记的学生,由于在2年级时有“未通过”标记,它仍会显示每个年级的未通过学生列表 注册函数\u old.php <?php include "php/database.php"; $data=array(); $sel_grade_level = $_SESSION['grade_level'] - 1; $school_year = $_SESSION['

我希望任何人都能帮助我。 我只想显示在每一个年级级别上“未通过”评语的学生。此代码的问题在于,即使是在3年级时有“通过”标记的学生,由于在2年级时有“未通过”标记,它仍会显示每个年级的未通过学生列表

注册函数\u old.php

<?php  
include "php/database.php";  

$data=array();

$sel_grade_level = $_SESSION['grade_level'] - 1;


$school_year = $_SESSION['sy_start']."-".$_SESSION['sy_end'];


$q = mysqli_query($con, "SELECT * FROM students, students_enrolled WHERE 
                        students.student_id = students_enrolled.student_id AND 
                        students_enrolled.grade_level = '".$sel_grade_level."' AND 
                        students_enrolled.remarks = 'Failed' ORDER BY students.lastname,  
                        students.firstname ASC")or die(mysql_error());

while ($row = mysqli_fetch_object($q)){

    $exist = mysqli_query($con, "SELECT * FROM students_enrolled WHERE 
                                student_id = '".$row->student_id."' AND school_year = '".$school_year."' AND 
                                grade_level = '".$_SESSION['grade_level']."' ")or die(mysql_error());
    if (mysqli_num_rows($exist) == 0){
        $data[] = $row;
    }

}

echo json_encode($data);

?>
这是html代码的一部分

<script type="text/javascript">
counter = 1;
cc = 0;

function refreshr() {
    cc = cc + 1;
    if (cc > counter) { 
        cc = 0;
        window.location='enroll_old.php';
    }
}


$("#clicker").keyup(function () { cc = 0; });

$(document).ready(function() {
    var refff = setInterval("refreshr()", 5000); 
    var url = "enroll_function_old.php";
    $.getJSON(url, function(result) {
        console.log(result);
        $.each(result, function(i, field) {

            var student_id = field.student_id;
            var id = field.id;
            var lastname = field.lastname;
            var firstname = field.firstname;
            var gender = field.gender;
            var birthday = field.birthday;
            var address_barangay = field.address_barangay;
            var remarks = field.remarks;

            $("#listview").append("" + 
                "<tr>" +
                    "<td></td>" +
                    "<td>" + firstname + " " + lastname + "</td>" +
                    "<td>" + gender + "</td>" +
                    "<td>" + birthday + "</td>" +
                    "<td>" + address_barangay + "</td>" +
                    "<td><a href='php/enroll_old_old.php?id=" + student_id + "'><button type='button' class='btn btn-info btn-xs'>Add to Class</button></a></td>" +
                "</tr>" +
                "");

        });
    });
});
</script>

如果我理解正确的话,你可以显示学生名单,同样的事情是所有成绩都不及格。如果它们至少有一个已通过,则您不希望显示它们

我的方法是在MySQL查询的NOT in子句中使用一个子查询:

从学生id不在的学生中选择*从备注“失败”的已注册学生中选择学生id

首先,我们让所有的学生说一句与失败不同的话。
然后,我们得到所有的学生,除了我们之前选择的学生以外。

与逻辑错误无关,您在mysqli\u查询中使用mysql\u错误,这将不起作用。请参阅提供一些表的示例内容、代码生成的内容以及您希望它生成的内容。从你的描述来看,你不完全清楚你想要什么,什么是错的。