我尝试创建一个类来合并以下函数但是我不完全理解这个方法,我将如何处理以下函数以消除在每次调用单独的echo块时查询DB的需要?
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>";
}
};
由于
答案 0 :(得分:2)
传入包含链接的参数:
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。除非我误读了你的代码并且每个函数都在运行一个单独的查询,否则这应该有效:)
答案 1 :(得分:1)
$为其创建一个方法而不是类:
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']
);