2

1ページあたり最大30枚の画像を表示するサイトがあります。

ユーザーは画像にコメントすることができ、コメントがある場合は、これらのコメント、または少なくとも最初のいくつかが画像の下に表示されます。

サーバー上のフォルダーにリンクされた画像参照のテーブルがあります。

例えば

image_id // image id
user_id // user who added
image_url // ref to image

次に、すべてのコメント用の別の表

comment_id
image_id // link to images table
comm_poster_id // id of user who posted comment

さて、問題は、情報を一緒に呼び出すための最良の方法は何ですか?理想的には1つの選択で

各画像の下で実際にajax呼び出しを行うことはできません。これは、ページごとに30 dbの呼び出しであり、それを強制終了するため、代替/最良の方法は何ですか?

明確にするために、select画像は1つしかありませんが、もちろん画像に対して複数のコメントが存在する可能性があります

私が十分な情報を与えたことを願っています

編集明確にするために、問題は、このすべての情報をまとめて表示するための最良の方法は何ですか?ページ上のすべての画像をプルする1つのクエリを実行して、画像のコメントが存在する場合はそれをプルすることはできますか?

データをどのように見せたいか…わかりません。私がこのようなことをしたのはこれが初めてなので、可能であればガイダンスが必要です。

4

2 に答える 2

1

わかりました、まあ、私は PHP の専門家ではありませんが、SQL 側から始めてもらいました。私はphpであなたを助けることができますが、私よりもそれに精通している他の人がここにいます.

私はあなたのためにこの sqlFiddle を開始しました。見てみましょう。クエリをいじって、必要なものを取得できます。

http://sqlfiddle.com/#!2/79ecf/1/0

PHP 側から見ると、データをどのように表示したいかを理解するまでは、クエリをどのように表示する必要があるかを判断するのは困難です。とりあえずこれで行きました:

select *
from images i
inner join comments c on i.image_id=c.image_id;

これは非常に単純なクエリであり、おそらく追加する必要があります。

PHPを使用しているほとんどの人がmysqlを選択しているため、mysqlを使用していると仮定します。私の理解では、mysqli と pdo の 2 つの接続方法があります。PDO が推奨される方法として浮上しているようですが、私はそれについて何も知りません。両方の参考資料です。mysql_query() は使用しないでください。これは推奨されていないため、その一部を学習する必要はありません。

PDO: http://dev.mysql.com/doc/refman/5.6/en/apis-php-pdo-mysql.html
MYSQLI: http://php.net/manual/en/mysqli.query.php

これらのいずれも、データベースにクエリを実行し、結果をループしてデータを取得する方法を示すのに十分なチュートリアルを提供するはずです。その後、ページにどのように表示するかはあなた次第です。

うまくいけば、これで正しい方向に進むことができます。

幸運を!

于 2013-03-17T13:50:21.230 に答える
0

最も簡単な方法は、2 つのテーブルを結合し、最初に画像で並べ替え、コメントでサブ並べ替えすることです。

SELECT i.*, c.comment_id, c.comm_poster_id 
FROM images i LEFT JOIN comments c ON i.image_id=c.image_id
WHERE {whatever where clause selects your set of 30 images}
ORDER BY i.image_id, c.comm_poster_id

LEFT JOIN を使用しないと、コメントのない画像は表示されません。

于 2013-03-17T14:04:57.757 に答える