0
我有两个MySQL表的信息:访问阵列数据
一个表存储页面信息,如它的名字和位置,以及一个数组列来存储哪些部件每页显示的存储阵列格式:1,2,3,4
其他表是实际的部件表与微件信息和ID作为其标识符例如:1,2,3,4
我需要:
- 从页表中获取阵列数据
- 循环访问该数组并显示小部件表中的内容。
我一直努力用foreach语句:
每个页面的URL格式如下index.php页面= thispage &路线= thisroute从而$ _GET [ '页']
$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.
}
}
}
数据库设计有三条规则:normalize,normalize,normalize – 2013-02-18 16:50:46
显示您到目前为止所尝试的内容,我们将尝试帮助解决该问题。但我们不会为你做你的工作。 – 2013-02-18 16:51:31
我建议你正确设计数据库模式或者使用[PHP的'serialize()'函数](http://www.php.net/manual/en/function.serialize.php)。 – 2013-02-18 16:51:42