Я пытался создать класс для консолидации следующих функций, но я не совсем понимаю подход, как бы я подходил к следующим функциям, чтобы исключить необходимость каждый раз запрашивать БД и просто вызывать отдельные блоки эха?
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>";
}
};
Спасибо
Передайте параметр, содержащий ссылку:
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. Если я неправильно прочитал ваш код и каждая функция выполняет отдельный запрос, это должно сработать 🙂
$ Создайте метод для этого вместо класса:
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']
);