Как вернуть базу данных из функции, которая будет использоваться во включенном файле? - PullRequest
0 голосов
/ 20 сентября 2018

У меня заканчиваются варианты, и я не уверен, что делаю не так.Я хочу автоматизировать извлечение данных из таблицы и разбивать их на страницы в процессе.код работает безупречно сам по себе, но как только я делаю его частью функции (для автоматизации процесса), он выходит из строя.Кажется, я не могу «извлечь» данные из функции.Я ожидаю, что после запуска функции я смогу получить доступ к результатам с помощью переменной $result, но это не сработает.Что я делаю неправильно?Страница, на которой я пытаюсь отобразить вывод, включена в страницу, на которой я запускаю функцию.

function generateDataTable(string $table) {
    global $PDO;

    if(isset($_GET['page']) && !empty($_GET['page']) && ctype_digit($_GET['page'])) { $pageNumber = $_GET['page']; } else { $pageNumber = dataPageNumber; }
    if(isset($_GET['list']) && !empty($_GET['list']) && ctype_digit($_GET['list'])) { $listnumber = $_GET['list']; } else { $listNumber = dataListNumber; }

    if(!empty($_GET['sortby']) && ctype_alnum($_GET['sortby'])) { $sortBy = $_GET['sortby']; } else { $sortBy = 'id'; }
    if(!empty($_GET['sortorder']) && ctype_alnum($_GET['sortorder'])) { $sortOrder = $_GET['sortorder']; } else { $sortOrder = 'ASC'; }

    $rowsCount = getRowsCount($table);
    $lastPage = ceil($rowsCount/$listNumber);

    if ($pageNumber > $lastPage) { $pageNumber = $lastPage; }
    if ($pageNumber < 1) { $pageNumber = 1; }

    $rowsLimitLow = ($pageNumber - 1) * $listNumber;
    $rowsLimitHigh = $listNumber;

    $query = $PDO->prepare("SELECT * FROM $table ORDER BY $sortBy $sortOrder LIMIT $rowsLimitLow, $rowsLimitHigh");
    $query->execute();
    $result = $query->fetchAll();

    return $result;
}

это страница, на которой я запускаю функцию и включаю страницу просмотра (шаблон)где я пытаюсь получить доступ к результатам.

generateDataTable('carrier');

include(DIR_ROOT.'/views/data/default.php');

вот как я пытаюсь получить доступ к результатам:

<?php
                foreach($result as $item) {
                    echo '<tr>
                        <td><input type="checkbox" value="'.$carrier['id'].'"></td>
                        <td class="expand"><a href="index.php?module=data&action=view&carrier='.$item['id'].'">'.$item['name'].'</a></td>
                        <td>'.$item['iata_code'].'</td>
                        <td>'.$item['icao_code'].'</td>
                        <td>'.$item['country'].'</td>
                    </tr>';
                }
            ?>

Я знаю, что это связано с областью действияиз моих переменных, но я попробовал все, и это все еще не работает.на другие подобные вопросы были ответы, но в разных ситуациях.Я попытался объявить $results[] и создать массив со всеми столбцами следующим образом:

$results[] = array($result['id'], $result['name'] etc)

, но это тоже не удалось.Есть мысли?

1 Ответ

0 голосов
/ 20 сентября 2018

Вам необходимо присвоить возвращаемое значение функции переменной:

$result = generateDataTable('carrier');
...