この質問を何と呼べばよいかわかりません。私はそれについて多くのことを考えてきました、そして私が選んだものがそれを十分にカバーしているとは思いませんが、それは私が管理できる最高のものでした. それが非常に誤解を招くか間違っている場合はご容赦ください。
個人用の小さなCMSを作成していますが、トラブルに遭遇しました。
情報は MySQL データベースに保存され、テーブルにはcid、page、およびcontの 3 つの列があります。
cid は、特定のコンテンツの識別子です。テキストのメイン領域とテキストのサブ領域など、ページに複数のコンテンツがある場合、これらの行のcidは異なりますが、コンテンツが同じページにあるため、ページは同じです。
CMS のインデックス ページでは、データベースに存在するすべての異なるページをリンクとして表示しています。ユーザーは、コンテンツを変更したいページへのリンクをクリックします。
さて、ここに私の問題があります:
データベースからのデータを表示する場合、ページが同じでcidが異なる行は、論理的には別のリンクとして表示されます。
それは混乱しているように聞こえました。私は別の言い方をします:
必要なのは、結果に別の結果と同じページがある場合、これら 2 つが 1 つのリンクにマージされ、2 つの別個のリンクとして表示されないことです。
データベースは次のようになります。
+------------+----------+-----------------------------------------+
| cid | page | cont |
+-----------------------------------------------------------------+
| page1-main | page1 | This is the first page on this website! |
| page2-main | page2 | This is the second page! |
| page2-sub | page2 | This is sub-content! |
+------------+----------+-----------------------------------------+
先ほど言ったように、同じページを持つ行をwhile ループで 1 つの結果にマージする必要があります。これは、2 つの異なる結果に分離されるためです。これは私のループとクエリです:
$query = mysqli_query("SELECT * FROM content");
while($row = mysqli_fetch_array($query))
{
?>
<a href="edit.php?p=<?php echo $row['page'];?>">Link!</a>
<?php
}
もちろん、同じページを持っていても、2 つの結果が表示されます。それが私がしなければならないPHPなのか、それともMySQLクエリにあるのかはわかりません。私は SQL には少し慣れていませんが、PHP にはかなりの経験があります。
私はいくつかのifsについて考えてきました。同様に、表示されるすべての新しい結果を変数に保存してからそれらを比較し、以前に発生した結果が再び発生した場合、それは表示されないか何か。しかし、私は知りません。
誰かがここで私を助けてくれたら素晴らしいことです。