Как вы объединяете повторяющийся код внутри функций?

Я пытался создать класс для консолидации следующих функций, но я не совсем понимаю подход, как бы я подходил к следующим функциям, чтобы исключить необходимость каждый раз запрашивать БД и просто вызывать отдельные блоки эха?

function get_pages_new() {
$cxn    = mysqli_connect('localhost', 'root', '', 'northern') or die(mysqli_error($cxn));
$query = ("SELECT * FROM `pages` ORDER BY `page_id` ASC") or die(mysqli_error($cxn));
$getnews = mysqli_query($cxn, $query);

while ($row = mysqli_fetch_assoc($getnews)) {
$page_id        = $row['page_id'];
$page_title     = $row['page_title'];
$admin          = $row['admin_only'];

echo "<li><a href="."add_page.php?page_id=".$page_id.">$page_title</li></a>";
}
};

function get_pages_edit() {
$cxn    = mysqli_connect('localhost', 'root', '', 'northern') or die(mysqli_error($cxn));
$query = ("SELECT * FROM `pages` ORDER BY `page_id` ASC") or die(mysqli_error($cxn));
$getnews = mysqli_query($cxn, $query);

while ($row = mysqli_fetch_assoc($getnews)) {
$page_id        = $row['page_id'];
$page_title     = $row['page_title'];
$admin          = $row['admin_only'];

echo "<li><a href="."edit_page.php?page_id=".$page_id.">$page_title</li>   </a>";
}
};

function get_pages_delete() {
$cxn    = mysqli_connect('localhost', 'root', '', 'northern') or die(mysqli_error($cxn));
$query = ("SELECT * FROM `pages` ORDER BY `page_id` ASC") or die(mysqli_error($cxn));
$getnews = mysqli_query($cxn, $query);

while ($row = mysqli_fetch_assoc($getnews)) {
$page_id        = $row['page_id'];
$page_title     = $row['page_title'];
$admin          = $row['admin_only'];

echo "<li><a href="."delete_page.php?page_id=".$page_id.">$page_title</li></a>";
}
};

Спасибо

-1

Решение

Передайте параметр, содержащий ссылку:

    function get_pages($link) {
$cxn    = mysqli_connect('localhost', 'root', '', 'northern') or  die(mysqli_error($cxn));
$query = ("SELECT * FROM `pages` ORDER BY `page_id` ASC") or die(mysqli_error($cxn));
$getnews = mysqli_query($cxn, $query);

while ($row = mysqli_fetch_assoc($getnews)) {
$page_id        = $row['page_id'];
$page_title     = $row['page_title'];
$admin          = $row['admin_only'];

echo "<li><a href='".$link."?page_id=".$page_id."'>".$page_title."</li></a>";
}
};

Где $ link это add_page.php, edit_page.php или remove_page.php. Если я неправильно прочитал ваш код и каждая функция выполняет отдельный запрос, это должно сработать 🙂

2

Другие решения

$ Создайте метод для этого вместо класса:

function extractIdTitleAdminFromEntry($entry) {
return [
'page_id'    => $entry['page_id'],
'page_title' => $entry['page_title'],
'admin_only' => $entry['admin_only'],
];
}

Теперь вы можете сделать это внутри ваших циклов while:

list($page_id, $page_title, $admin_only) = extractIdTitleAdminFromEntry($row);

Вы даже можете изменить его так, чтобы список свойств был динамическим:

function extractIdTitleAdminFromEntry($entry, $properties) {
$values = [$key];
foreach ($properties as $key) {
$values[$key] = isset($entry[$key] ? $entry[$key] : null;
}
return $values;
}

list($page_id, $page_title, $admin_only) = extractIdTitleAdminFromEntry(
$row,
['page_id', 'page_title', 'admin_only']
);
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector