私のページには、その横に特定の追加情報を表示したいコンテンツのブロックがあります。この情報は複数のページで同じである可能性がありますが、アイテムを1つの特定のアイテムに表示することもできます。
私はさまざまなアプローチについて考えていますが、私の意見では、すべての解決策が網羅的すぎるか、より賢い解決策がないことを想像することはできません。
次の表を検討してください(列名は元のデータベースとは異なります。異なる表で同じ名前を使用していません)。コンテンツに使用しています。
fe_content:
+----+--------+----------+-------------------+
| id | page | pagelink | content |
+----+--------+----------+-------------------+
| 1 | page 1 | page_1 | Content of page 1 |
| 2 | page 2 | page_2 | Content of page 2 |
| 3 | page 3 | page_3 | Content of page 3 |
| 4 | page 4 | page_4 | Content of page 4 |
| 5 | page 5 | page_5 | Content of page 5 |
+----+--------+----------+-------------------+
追加データに対する私のアプローチは次のようなものです。
fe_blocks:
+----+---------+-------+---------+----------+--------------------+
| id | block | order | display | pagelink | content |
+----+---------+-------+---------+----------+--------------------+
| 1 | block 1 | 1 | always | | Content of block 1 |
| 2 | block 2 | 2 | always | | Content of block 2 |
| 3 | block 3 | 1 | single | page_1 | Content of block 3 |
| 4 | block 4 | 3 | always | | Content of block 4 |
| 5 | block 5 | 4 | single | page_3 | Content of block 5 |
+----+---------+-------+---------+----------+--------------------+
だから今、私がページを表示したいとき、私は使用します:
$result = mysql_query("
SELECT content
FROM fe_content
WHERE pagelink = '"._mysql_real_escape_string($_aGET[0])."'
") or die(mysql_error());
$show = mysql_fetch_assoc($result);
echo("<div> ".$show['content']." </div>\n\n<aside>\n");
$result = mysql_query("
SELECT content
FROM fe_blocks
WHERE pagelink = '".mysql_real_escape_string($_aGET[0])."' or display = 'always'
ORDER BY order ASC
") or die(mysql_error());
while($show = mysql_fetch_assoc($result)){
echo("<p>".$show['content']."</p>\n");
}
echo("</aside>");
これは私に望ましいブロックを与えますが、いくつかの障害があります。
私がリクエストしたとするとpage_1
、私の出力は次のようになります
<div> Content of page 1 </div>
<aside>
<p>Content of block 1</p>
<p>Content of block 2</p>
<p>Content of block 3</p>
<p>Content of block 4</p>
</aside>
代わりにこれを取得したいのですが:
<div> Content of page 1 </div>
<aside>
<p>Content of block 3</p>
<p>Content of block 1</p>
<p>Content of block 2</p>
<p>Content of block 4</p>
</aside>
私の望ましい結果は考慮に入れます:
- 重要性。特定のページに表示されるアイテムの順序は、常に表示されるアイテムの順序よりも重要であると見なす必要があります(たとえば、却下)。
- ほとんどいつも。おそらく、いくつかのアイテムは、いくつかを除いて、ほとんどすべてのページに表示されるはずです。将来の変更に関しては、ブロックを表示するページごとに適切なページリンクを含む新しい行をデータベースに挿入するのは便利ではありません。
この状況について誰かが考えていますか?