0

情報を含む 2 つの mysql テーブルがあります。

1 つのテーブルには、名前や場所などのページ情報と、配列形式で格納されたページごとに表示するウィジェットを格納するための配列列が格納されます: 1,2,3,4

もう 1 つのテーブルは、ウィジェット情報と 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];
                    }
            }

更新:私に役立つ解決策を見つけました。

コンマで区切られた値を保持する理由は、ページごとに 1 つのウィジェットまたはページごとに 15 のウィジェットを持つことができ、各ウィジェットをその場で追加できるためです。また、管理側からは、各ページに含めることができるウィジェットを選択できるようにしたいと考えています。

すべてのデータが 1 つの列「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. おそらくmysql_queryを使用して、phpでSQLステートメントを実行します

とにかく、データベースに配列/カンマ区切りの値を保存することは決して推奨されません。データベースの正規化を試すことができます。

于 2013-02-18T16:58:04.597 に答える