验证 table 行是否在每个字段中都有数据

validate if table row has data in every fields

我想验证每个字段中的当前行是否有数据,如果没有则不显示任何数据。请帮我。此外,建议在显示 table 数据时使用 echo,或者我应该坚持使用 html。提前致谢!我一直在网上搜索,但找不到一些答案。哈哈

$ct_list = mysqli_query($conn,"select * from ct LEFT JOIN station on ct.station_id=station.station_id LEFT JOIN dilg_emp on dilg_emp.station_id=station.station_id where dilg_emp.dilg_emp_id= $session_id"); 
if (mysqli_num_rows($ct_list) > 0){
    while ($ct_row_list = mysqli_fetch_array($ct_list)) {
        $ct_FName = $ct_row_list['ct_FName'];
        $ct_MName = $ct_row_list['ct_MName'];
        $ct_LName = $ct_row_list['ct_LName'];
        $ct_SName = $ct_row_list['ct_SName'];
        $ct_address = $ct_row_list['ct_address'];
        $ct_birthday = $ct_row_list['ct_birthday'];
        $ct_age = $ct_row_list['ct_age'];
        $ct_gender = $ct_row_list['ct_gender'];
        $ct_level_educ = $ct_row_list['ct_level_educ'];
        $ct_course = $ct_row_list['ct_course'];
        $ct_school = $ct_row_list['ct_school'];
        $ct_prev_covid = $ct_row_list['ct_prev_covid'];
        $ct_training_date = $ct_row_list['ct_training_date'];
        $ct_deployment_date = $ct_row_list['ct_deployment_date'];
        $ct_prev_emp = $ct_row_list['ct_prev_emp'];
        echo "<tr>
            <td>".
        $x++."
            </td>
            <td>
                $ct_FName $ct_MName $ct_LName $ct_SName
            </td>
            <td> 
                $ct_address
            </td>
            <td> 
                $ct_birthday
            </td>
            <td>
                $ct_age
            </td>
            <td>
                $ct_gender
            </td>
            <td>
                $ct_level_educ
            </td>
            <td>
                $ct_course
            </td>
            <td>
                $ct_school
            </td>
            <td>
                $ct_prev_covid
            </td>
            <td>
               $ct_training_date
            </td>
            <td>
                $ct_deployment_date
            </td>
            <td>
                $ct_prev_emp
            </td>
        </tr>";
    }
}else{    
    echo "<tr><td><b>Nothing to display</b></td></tr>";
}

您可以遍历行数组,将空值替换为 No data

$optional_fields = ["ct_SName"];
while ($ct_row_list = mysqli_fetch_array($ct_list)) {
    foreach ($ct_row_list as $name => &$value) {
        if (in_array($name, $optional_fields)) {
            continue;
        } elseif (empty($value)) {
            $value = "No data";
        }
    }
    // rest of your code goes here

很难准确地说出你的意思,如果某行有空列则跳过该行?

如果你在查询中 select 15 列或者你知道 SELECT * 将 return 15 列,然后过滤掉空的,看看是否有 15:

if (mysqli_num_rows($ct_list) > 0) {
    while ($ct_row_list = mysqli_fetch_array($ct_list)) {
        if (count(array_filter($ct_row)) == 15) {
            echo "<tr>
            <td>$x++</td>
            <td>$ct_FName $ct_MName $ct_LName $ct_SName</td>"; //etc...
        }
    }
}

您也可以勾选跳过:

        if (count(array_filter($ct_row)) < 15) {
            continue;
        }
        //echo your HTML