0

我有两个包含信息的 mysql 表:

一个表存储页面信息,例如其名称和位置,以及一个数组列,用于存储以数组格式存储的每页显示的小部件:1,2,3,4

另一个表是实际的小部件表,其中小部件信息和 id 作为其标识符例如:1,2,3,4

我需要:

  1. 从页表中获取数组数据
  2. 循环遍历该数组并显示小部件表中的内容。

我一直在使用 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.
                }

            }
    }
4

1 回答 1

0
  1. 从页表中获取数组数据:( SELECT array_column_name FROM table_store_page WHERE id=your_id使用这个sql来获取数组)

  2. 在 php 中执行 SQL 语句可能使用mysql_query

无论如何,从不推荐在数据库中存储数组/逗号分隔的值。您可以尝试规范化您的数据库。

于 2013-02-18T16:58:04.597 回答