我有两个包含信息的mysql表:
一个表存储页面信息,如名称和位置,以及一个数组列,用于存储以数组格式存储的每页显示的小部件:1,2,3,4
另一个表是实际的小部件表,其中包含小部件信息和id作为其标识符ex:1,2,3,4
我需要:
我一直在处理foreach声明:
每个页面的网址都遵循以下格式: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.
}
}
}
答案 0 :(得分:0)
从页面表中获取数组数据:
SELECT array_column_name FROM table_store_page WHERE id=your_id
(使用此sql获取数组)
无论如何,数据库中的存储数组/逗号分隔值永远不会推荐。您可以尝试规范化数据库。