Хотя l oop не показывает первый элемент при использовании «oci_fetch», чтобы проверить, что массив не пуст в PHP - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь скрыть содержимое пустой таблицы, проверяя, массив пустой или нет

if (oci_fetch($stid_non) > 0){

, но в то время как l oop не отображается первый элемент, когда я использую условие if для проверки не- пустой массив. ниже мой код ...

oci_execute($stid_non);

    if (oci_fetch($stid_non) > 0){

        print "<table class=\"table table-bordered table-striped\" id=\"myTable\">";
        print "<tr class=\"header\"><td>Entry User ID</td><td>User Name</td><td>Entry Date</td></tr>";

        while($ST_ARRAY_NON = oci_fetch_array($stid_non)) 
        {
            print "<tr>";
                print "<td>$ST_ARRAY_NON[0]</td>";          
                print "<td>$ST_ARRAY_NON[1]</td>";          
                print "<td>$ST_ARRAY_NON[4]</td>";
            print "</tr>";
        }       
        print "</table>";
    }
    else {
        print "Empty Value in Array";
    }

oci_close($conn);

Отображение результата без отображения первого элемента. Это означает, что если результат должен быть 10 строк, но он показывает 9 строк, удалив первый элемент.

  • Кстати, если я уберу " if (oci_fetch ($ stid_non)> 0) {", то это показывает фактический результат.

Может Кто-нибудь, пожалуйста, помогите мне решить проблему. Спасибо за продвижение

1 Ответ

1 голос
/ 20 апреля 2020

Как видите, строка

if (oci_fetch($stid_non) > 0){

извлекает первую строку, поэтому эта строка не читается в основном l oop. Поскольку это используется для отображения заголовков только при наличии некоторых данных, я изменил код так, чтобы был флаг, указывающий, отображались ли заголовки. Это значение равно true после того, как в первой строке отображаются заголовки.

Также после l oop, если флаг заголовка все еще равен false, строки не отображаются ...

oci_execute($stid_non);

$headerDisplayed = false;    
while($ST_ARRAY_NON = oci_fetch_array($stid_non))
{
    if ( $headerDisplayed === false )
    {
        print "<table class=\"table table-bordered table-striped\" id=\"myTable\">";
        print "<tr class=\"header\"><td>Entry User ID</td><td>User Name</td><td>Entry Date</td></tr>";
        $headerDisplayed = true;
    }
    print "<tr>";
    print "<td>$ST_ARRAY_NON[0]</td>";
    print "<td>$ST_ARRAY_NON[1]</td>";
    print "<td>$ST_ARRAY_NON[4]</td>";
    print "</tr>";
}

if ( $headerDisplayed )
{
    print "</table>";
}
else {
    print "Empty Value in Array";
}

я бы тоже убрал строку

oci_close($conn);
...