2013-02-18 45 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語句

無論如何,不​​建議在數據庫中存儲數組/逗號分隔值。你可以嘗試規範你的數據庫。