PHP проверяет, присутствует ли значение в цикле while, и введите значение, затем прервите - PullRequest
0 голосов
/ 19 февраля 2019

Я использую PHPspreadsheet и все работает хорошо.Однако у меня есть проблема при создании листа входа, когда никто не работает в определенный день, и тогда все записи в моем шаблоне Excel не синхронизируются.Вопрос: Как проверить первое значение (StaffName) в цикле - если оно пустое, замените его на «Никто не работает», а затем прервите цикл и дайте ему перейти к следующему циклу во вторник.Спасибо Код выглядит следующим образом:

$sql="SELECT StaffName, MonStart, MonFInish, MonA FROM print_signin_mon 
where AreaID= '$AreaID'";
$rsSql=db_query($sql,$conn);

$baseRow = 6;
$r=0;

while ($data2 = db_fetch_array($rsSql)){
$row = $baseRow + $r;
$spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);

$spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
    ->setCellValue('B' . $row, $data2['StaffName'])
    ->setCellValue('E' . $row, $data2['MonStart']) 
    ->setCellValue('G' . $row, $data2['MonFInish'])
    ->setCellValue('M' . $row, $data2['MonA']);

    $r= $r+1;
}
$spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

После долгих проб и ошибок мне удалось получить результат.Чтобы достичь своей цели, я вынул 'IF' из цикла и добавил его после.Таким образом, если нет данных, выполняется следующее и добавляет строку, однако она всегда добавляет строку, даже если есть данные.Таким образом, не делая то, что я спросил, т.е. проверьте данные в цикле и введите значение, а затем больше.Но это дает мне удовлетворительный результат. Спасибо Эндрю за вклад.

//Monday
$sql="SELECT StaffName, MonStart, MonFInish, MonA FROM print_signin_mon where AreaID= 
'$AreaID'";
$rsSql=db_query($sql,$conn);

                $baseRow = 6;
                $r=0;

                while ($data2 = db_fetch_array($rsSql)){
                     $row = $baseRow + $r;
                     $spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
//


                     $spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)

                          ->setCellValue('B' . $row, $data2['StaffName'])
                          ->setCellValue('E' . $row, $data2['MonStart']) 
                          ->setCellValue('G' . $row, $data2['MonFInish'])
                          ->setCellValue('M' . $row, $data2['MonA'])
                                 ->setCellValue('N' . $row, '..');

                        $r= $r+1;
                    }
    //          $spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
    //if (empty($data2['StaffName'])) {
    if(empty(array_column($rsSql,'StaffName'))) {
                    $row = $baseRow + $r;
                    $spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
                    $spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
                    ->setCellValue('B' . $row, '');

    //$r++;
    $spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
    //continue;
}
//END Monday
0 голосов
/ 19 февраля 2019

Не знаю, правильно ли я вас понял, но я попробую.

Если StaffName пусто, установите другое значение ячейки и переходите к следующей итерации:

$sql="SELECT StaffName, MonStart, MonFInish, MonA FROM print_signin_mon where AreaID= '$AreaID'";
$rsSql=db_query($sql,$conn);

$baseRow = 6;
$r=0;

while ($data2 = db_fetch_array($rsSql)){
    $row = $baseRow + $r;
    $spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);

    if (empty($data2['StaffName'])) {
        $spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
            ->setCellValue('B' . $row, 'No one Working');

        $r++;
        continue;
    }

    $spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
        ->setCellValue('B' . $row, $data2['StaffName'])
        ->setCellValue('E' . $row, $data2['MonStart']) 
        ->setCellValue('G' . $row, $data2['MonFInish'])
        ->setCellValue('M' . $row, $data2['MonA']);

    $r++;
}

$spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
...