2013-02-18 46 views
0

我有两个MySQL表的信息:访问阵列数据

一个表存储页面信息,如它的名字和位置,以及一个数组列来存储哪些部件每页显示的存储阵列格式:1,2,3,4

其他表是实际的部件表与微件信息和ID作为其标识符例如:1,2,3,4

我需要:

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

我一直努力用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. 
       } 

      } 
    } 
+1

数据库设计有三条规则:normalize,normalize,normalize – 2013-02-18 16:50:46

+0

显示您到目前为止所尝试的内容,我们将尝试帮助解决该问题。但我们不会为你做你的工作。 – 2013-02-18 16:51:31

+1

我建议你正确设计数据库模式或者使用[PHP的'serialize()'函数](http://www.php.net/manual/en/function.serialize.php)。 – 2013-02-18 16:51:42

回答

0
  1. 从页表中获取数组数据: SELECT array_column_name FROM table_store_page WHERE id=your_id(使用SQL来获取在阵列)

  2. 执行可能使用mysql_query

在PHP中的SQL语句

无论如何,不​​建议在数据库中存储数组/逗号分隔值。你可以尝试规范你的数据库。