情報を含む 2 つの mysql テーブルがあります。
1 つのテーブルには、名前や場所などのページ情報と、配列形式で格納されたページごとに表示するウィジェットを格納するための配列列が格納されます: 1,2,3,4
もう 1 つのテーブルは、ウィジェット情報と id を識別子として持つ実際のウィジェット テーブルです。例: 1,2,3,4
する必要がある:
- ページ テーブルから配列データを取得する
- その配列をループして、ウィジェット テーブルのコンテンツを表示します。
私は foreach ステートメントで作業しています:
各ページの URL は次の形式に従います index.php?page=thispage&route=thisroute したがって、$_GET['page']
$page = $_GET['page'];
$order = "SELECT * FROM pages where name='$page'";
$result = mysql_query($order);
while($row = mysql_fetch_array($result)){
$widget = array();
$widget .= $row[3];
}
print_r($widget);
foreach($widget as $w) {
$order = "SELECT * FROM menu where id='$w'";
$result = mysql_query($order);
while($row = mysql_fetch_array($result)){
print $row[1];
}
}
更新:私に役立つ解決策を見つけました。
コンマで区切られた値を保持する理由は、ページごとに 1 つのウィジェットまたはページごとに 15 のウィジェットを持つことができ、各ウィジェットをその場で追加できるためです。また、管理側からは、各ページに含めることができるウィジェットを選択できるようにしたいと考えています。
すべてのデータが 1 つの列「1,2,3,4」にあるカンマ区切りの値でデータを保持する場合。
データを配列に分解し、配列の各値をループすることに固執します。
$page = $_GET['page'];
$order = "SELECT * FROM pages where name='$page'"; //select widgets to show on page
$result = mysql_query($order);
while($row = mysql_fetch_array($result)){
$widget = $row[3];
$string = preg_replace('/\,$/', '', $widget); //remove trailing comma
$array = explode(', ', $string);
foreach($array as $value) //loop over values
{
$order = "SELECT * FROM widget where id='$value'";
$result = mysql_query($order);
while($row = mysql_fetch_array($result)){
print $row[1]; //print data: this will be formated to the specific divs set up.
}
}
}