PHP & sqlsrv: отформатированные строки запроса в таблицу - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь записать данные из запроса в таблицу HTML, используя PHP и MS SQL.Я могу успешно записать данные текстовых, целочисленных и плавающих полей в таблицу.Однако, когда я пытаюсь отформатировать столбцы даты, кажется, что весь процесс прерывается.

    <?php           
echo "<table id='stakeholderTable' class='display nowrap'>
     <thead>
        <tr>";
            foreach ($array as $colmn) {
                echo '<th><strong>' . $colmn . '</strong></th>';
            }
        echo "</tr>
    </thead>";

    echo '<tbody>';
        $sel_result = sqlsrv_query($con,$query);
        while($sel_row = sqlsrv_fetch_array($sel_result)) {
            echo '<tr>';
                foreach ($array as $colmn) {
                    $colmn2 = str_replace("'", "", $colmn);
                    $joe = str_replace("tbl_actor.", "", $colmn2);
                    $joe = str_replace("tbl_commitment.", "", $joe);
                    if($joe == 'com_date' || $joe == 'com_due') {
                        echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
                    }else{
                        echo '<td>' . $sel_row[$joe] . '</td>';
                    }
                }
            echo '</tr>';
        }
    echo '</tbody>'; 
echo '</table>';
?>

Код, приведенный выше, работает, пока значение не является датой (com_date или com_due).Если значением является дата, первая строка таблицы будет напечатана в правильном формате, но никакие последующие строки не будут напечатаны, и Javascript страницы перестанет работать.

Похоже, проблема связана со строкой:

echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';

но я не могу понять, что с ним не так.

Любая помощь будет принята с благодарностью

Приветствия,

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Хорошо.Догадаться.Я вызывал метод для пустых ячеек.Мне пришлось проверить нулевые значения перед запуском кода.

Изменить:

foreach ($array as $colmn) {
    $colmn2 = str_replace("'", "", $colmn);
    $joe = str_replace("tbl_actor.", "", $colmn2);
    $joe = str_replace("tbl_commitment.", "", $joe);
    if($joe == 'com_date' || $joe == 'com_due') {
        echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
    }else{
        echo '<td>' . $sel_row[$joe] . '</td>';
    }
}

Кому:

foreach ($array as $colmn) {
    $colmn2 = str_replace("'", "", $colmn);
    $joe = str_replace("tbl_actor.", "", $colmn2);
    $joe = str_replace("tbl_commitment.", "", $joe);
    if($joe == 'com_date' || $joe == 'com_due') {
        if(!empty($sel_row[$joe])){
            echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
        }else{
            echo '<td>' . $sel_row[$joe] . '</td>';
        }
    }else{
        echo '<td>' . $sel_row[$joe] . '</td>';
    }
}
0 голосов
/ 18 декабря 2018

Даты, вероятно, уже являются строковыми объектами в php, поэтому вам придется создавать объекты дат, а затем форматировать их.PS Я бы оставил это как комментарий, но мне не хватает репутации.

...