0

(やや) 特定のシナリオで PHP を使用して、2 つのページ (ページ A からページ B) にデータを渡す最良の方法を見つけようとしています。

ページ A:タイトル付きの画像のギャラリー。このページを作成するには、PHP ファイルで、画像 ID、画像の場所、および画像のタイトルを保持する images テーブルに対してデータベース呼び出しを行います。テーブルに存在するすべての画像を取得し、for ループを使用してそれらをすべて画面にエコーします。ページ B を指す各画像のアンカー タグに href を作成します。

ページ B:画像の拡大表示。ユーザーがページ A の画像をクリックすると、画像が大きく表示された新しいページに移動します。

これを実現するために、私は現在、ページ A の画像を含む各アンカーに、画像 ID を含むパラメーターを使用して href を配置しています。次に、ページ B で、渡された ID を使用して別のデータベース呼び出しを行い、画像のタイトル、場所などを再度取得します。

前のページで必要なデータをすべて取得した後で、2 回目のデータベース呼び出しを行うのは間違っているように思えます。私の考えでは、私にはすべてが悪いと思われる適切なオプションが3つしかありません。

  • 複数のデータベース クエリ- 上で説明したように。効率が悪いようです。

  • GET - ページ A の href に画像 ID を含めるだけでなく、必要なすべてのパラメーターを href に含めます。実際には 3 つ以上のパラメーターがあり、15 以上の値を渡す必要がある場合があることに注意してください。これほど巨大な URL を持っていて、URL に画像の場所などを渡すのは間違っているようです。

  • POST - の方法で各画像のページにフォームを用意しますPOSTPage Aにフォームから渡す必要がある各パラメータのフォームに隠しフィールドを配置しますPage B。繰り返しますが、不要なマークアップを大量に持つことは、私には本当に悪い考えのように思え、非常に面倒になります。

これらの方法のいずれか、またはより良いアイデアについて意見を持っている人はいますか? 開発が進むにつれて、効率性と、同じことを何度も行うデータベース呼び出しを何度も行うことが自分にとって意味をなさないことに疑問を抱くようになります。1 つの画像に対して 1 つのデータベース呼び出しを 1 回行うことができ、そのセッションで再度行う必要がないようにしたいと考えています。

JavaScript / jQuery(私にとってはオプションであることに注意してください)

ありがとう!

4

3 に答える 3

1

私はあなたがしていることをするだけですが、そのために関数を使用します。関数は

SELECT * FROM table WHERE id = $imageid

必要な画像の ID を渡し、値がない場合は$imageidすべて表示します。このように、ページ A でこれを使用して画像を取得し、ID で POST または GET を使用するだけで、同じ関数を実行して ID の結果を取得できます。

そのようにするのはそれほど面倒ではありませんが、繰り返しますが、それは私が行う方法です。

全体的に次のようなことをしています:

function getImage ($imageid) {

  if($imageid == ""){
    $result = mysqli_query($con,"SELECT * FROM table");
    return $result;

  } else {
    $result = mysqli_query($con,"SELECT * FROM table WHERE id = $imageid");
    return $result;

  }
}
于 2013-09-27T07:05:54.123 に答える
1

サーバーからデータを取得するために毎回 HTTP リクエストを行う必要があるのは、Web の現実です。ページ ブラウザをリロードすると、そのデータを再度取得するための HTTP リクエストが再度作成されます。HTML5には、上記の問題に対する多くの解決策があります...

  1. Web ストレージ - クライアント側で値をキーと値のペアとして保存
  2. Web SQL データベース - SQL と同じ
  3. IndexedDB - Web ストレージと Web SQL データベースの間のどこか

画像から base64 文字列を作成し、その文字列を Web Storage または WebSQL データベースに保存する必要があります。画像のコードを JavaScript ファイルで base64 に記述し、HTML5 API を使用して文字列をデータベースに保存できます。

このページを見てください -- http://www.html5rocks.com/en/features/storage

于 2013-09-27T07:24:15.700 に答える