2016-06-15 15 views
-1

私は、それを設定するためのいくつかのパラメータを取るHTMLテーブルをフォーマットするjavascriptを持っています。私はまた、レポート名、説明、SQL、フッター、権限、レポートのステータス、およびいくつかのレポート固有のパラメータのフィールドを含む、私のレポートの定義を含むmysqlのレポートテーブルを持っています。私は配列としてパラメータを構築して、その配列をjavascriptパラメータに変換するプロセスに渡される前に他のプロセスによって上書きされるデフォルトを設定することができます。配列を文字列PHPとして保存するには?

私たちは、テーブルの情報に基づいてレポートを作成するためにPHPを使用し、「デフォルトパラメータ」の配列を「レポート固有パラメータ」の配列にマージします。レポート定義をデータベースに入れる前に、デフォルトのパラメータ配列とレポート固有のパラメータ配列をマージしたarray_mergeを使用した各レポートの関数がありました。

例えば

$defaultparameters = array (
        'base_path' => "'/inc/plugin/'", 
        'btn_reset' => "'true'", 
        'enable_default_theme' => "'true'"); 
$thisReportParameters = array (
        'extensions' => "[{ name: 'sort', types: ['String', 'String', 'String','String', 'String','String', 'Number']},'col_2'=> "'multiple'",'col_3'=> "'select'"); 
$parameters = array_merge ($defaultparameters,$thisReportParameters); 

この配列は、そのページにJavaScriptを構築する関数に渡されます。 これで、すべてのレポートをテーブルに入れました。レポート固有のパラメータを連想配列に引き出すことができません。 デフォルトのパラメータは、レポートオブジェクトのプロパティとしてレポートクラスに設定されるようになりました。データベースから追​​加のレポート固有のパラメータを配列に結合して2つを結合したいと考えています。 'col_2' => '' multiple '"を追加すると、データベースに" col_3' => "'select'"を返し、配列全体に文字列全体を要素[0]として配列に返します。
私はjavascriptの設定の最後にDBから文字列を追加すると考えられますが、これはすでにデフォルトで定義されたすべての設定を上書きしないでしょう

Array([col2] =>"'multiple'",[col_3]=> "'select'") 

とは対照的に、

Array ([0] => "'col_2'=> "'multiple'"'col_3'=> "'select'"") 

すなわち設定の配列であるので、最初に配列に追加する必要があります。そのため、マージ時にキーが同じデフォルトの値を上書きします。

レポート固有のオプションは、形式が多種多様であるため、それぞれのフィールドを作成することはできません。

私は文字列を爆発させた後、ペアを解析して配列を構築しようと考えましたが、値に "、"をつけて爆発を台無しにするかもしれません。

あり、これを達成するための本当にきちんとした方法は、おそらくですが、現時点では、それは私をエスケープ...

は、任意の提案は

C

+0

データを追加するコードを表示する必要があります –

答えて

0

あなたは可能性がserializeあなたの配列を歓迎します。

また、あなたのDBがポストグルの場合は、JSONの方が良いかもしれない、という方には、encodeというオプションがあります。そのようなものがいくつか組み込まれていて、必要に応じて他の言語を使ってデータを扱う方が簡単です。これまでに発生します。

いずれにしても、データを適切に消毒してからDBに格納してください。

関連する問題