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