0

私は Codeigniter で CMS に取り組んでおり、タイトル、投稿コンテンツなどの通常のフィールドがあります (ページはこのように Wordpress に似ています)。

image_id、path、size などの基本的なフィールドを持つ MySQL テーブルに ajax 経由で画像を保存するページに画像アップローダーがあります。

item_id と image_id の両方を必要とするアイテムと画像の関係を格納する別のテーブルがあります。

私が抱えている問題は、ページが作成/保存されるまで item_id がわからないことです。そのため、ユーザーが [投稿の作成] ページに移動してそこから画像をアップロードした場合、item_id がまだないため、関係を追加できません。

私が考えているいくつかのこと:

  • 誰かが Create Post ページにアクセスするたびに、MySQL テーブルに item_id だけの空白の投稿が自動的に作成され、非表示フィールドに保存されます。これに関して私が抱えている問題は、ユーザーが [投稿を作成] をクリックしただけで入力しないと、データベースが空の投稿でいっぱいになる可能性があることです。

  • 画像テーブルに画像を保存しますが、[作成] ボタンがクリックされたときのためにすべての ID の配列も保存します。そのボタンがクリックされたら、画像の関係を追加します。

  • 投稿のタイトルが入力されるまで画像アップローダーを非表示にし、ページの保存をトリガーします

Wordpress はこれを解決したようですが、それが何をするのかわかりません。

誰にもより良い提案がありますか?

4

2 に答える 2

2

特定の投稿への参照を必要としないように、画像テーブルを構造化することをお勧めします。画像と投稿の関係を別のテーブルに入れます。「投稿の作成」画面で、画像アップローダーに新しく挿入された画像の ID を返させ、投稿を送信するときに、新しい投稿 ID と画像 ID を画像と投稿の関係のテーブルに追加します。これにより、複数の投稿で 1 つの画像にリンクするなど、より柔軟に行うことができます。

--編集:読み直すと、これはすでにあなたがそれらを保存している方法のように思えます。もしそうなら、問題はないはずです。投稿の送信時に画像と投稿の関係を追加するだけです。孤立した画像が心配な場合は、以下を参照してください。--

誰かが画像をアップロードし、投稿せずにウィンドウを閉じた場合、これが孤立した画像につながる可能性があることは間違いありません. ただし、画像テーブルが「いっぱい」になることは心配しません。MySQL テーブルには何百万もの行が含まれていても、十分に機能します。

未使用の画像ファイルの収集について懸念がある場合は、アップロード日がたとえば 1 週間よりも古く、画像が関連付けられていない場合に、画像ファイル (および関連するテーブル エントリ) を削除する定期的なメンテナンス ジョブを実行できます。任意の投稿。

于 2012-07-17T15:44:18.910 に答える
1

十分に単純なようです:

1つのフォームを使用

投稿されたデータを収集する

記事の挿入-レコード挿入ID

画像の挿入-画像IDの記録

IDを使用してリレーションシップテーブルに挿入します

編集

ajaxを使用して画像をアップロードしているため、戻り値を使用して、挿入された画像IDを非表示のフォームフィールドに読み込むことができます。

于 2012-07-17T15:20:52.437 に答える