我有两个包含信息的 mysql 表:
一个表存储页面信息,例如其名称和位置,以及一个数组列,用于存储以数组格式存储的每页显示的小部件:1,2,3,4
另一个表是实际的小部件表,其中小部件信息和 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];
}
}
更新:想出了一个适合我的解决方案。
保留逗号分隔值的原因是因为我可以每页有一个小部件或每页 15 个小部件,并且每个小部件都可以即时添加。从管理方面我希望能够选择每个页面可以拥有的小部件。
将数据保存在逗号分隔值中时,所有数据都位于一列“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.
}
}
}