ページ付けと列の並べ替えの可能性を使用して、いくつかのテーブルを拡張しました。これまでのところすべて正常に動作していますが、最大10ページでまったく同じコードを使用できるので、関数を使用することを考えましたが、すべての部分に関数を使用することが合理的かどうか(パフォーマンスなど)はわかりません。いくつかのことを組み合わせる必要がある場合は、アドバイスが必要です。
現在、1ページのコードは次のようになっています(すべての数値が関数である可能性があります)。
$limit = 30;
1.1。
$sql = 'SELECT
COUNT(`news_id`)
FROM
`news`';
$stmt = $db->prepare($sql);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
$stmt->free_result();
$stmt->close()
2.2。
if ($count === 0)
{
$max_pages = 1;
}
else
{
$max_pages = (int)ceil($count/$limit);
}
3.3。
if (isset($_GET['page']))
{
if (preg_match('/^[0-9]{1,}$/', $_GET['page'])
&& ($_GET['page'] > 1
&& $_GET['page'] <= $max_pages))
{
$current_page = (int)$_GET['page'];
$offset = ($current_page - 1) * $limit;
}
else
{
header('location: http://' .SERVERNAME. '/admin/news/');
exit;
}
}
else
{
$current_page = 1;
$offset = 0;
}
4.4。
$valid_sort = array('id', 'date', 'title');
if (isset($_GET['sort']))
{
if(in_array($_GET['sort'], $valid_sort))
{
$sort = $_GET['sort'];
}
else
{
header('location: http://' .SERVERNAME. '/admin/news/');
exit;
}
}
else
{
$sort = 'id';
}
5.5。
$valid_order = array('asc', 'desc');
if (isset($_GET['order']))
{
if(in_array($_GET['order'], $valid_order))
{
$current_order = $_GET['order'];
}
else
{
header('location: http://' .SERVERNAME. '/admin/news/');
exit;
}
}
else
{
$current_order = 'desc';
}
4と5はほとんど同じなので、ここでは異なるパラメーターを使用して同じ関数を呼び出すことができますが、それでも最大5つの関数を呼び出すことが本当に意味があるかどうかはわかりません。
最後に、次の変数が必要です。$limit, $count, $max_pages, $current_page, $offset, $sort, $current_order
編集:明確にするために、問題は関数がどのように機能するか、またはここでそれらを使用できるかどうかではありません..問題は、関数が私がそれでやりたいことにどのくらい複雑である必要があるかということです。たとえば、120行と8つのパラメーターを使用して1つの関数を作成できますが、1つの関数/ページを呼び出すだけで済みます...または短くシンプルに保つことができます(1つの目的/変数に1つの関数)。より多くの関数/ページを呼び出します。