2


0

写真付きアルバムの表示(PHP)

まず、これはCodeIgniter固有ではありません。 私はアイデアを把握するのに苦労しているので、PHP / SQL(または私の問題が何であれ)を知っている人なら誰でも参加できます。

「写真」と「アルバム」の2つのテーブルがあります。

Album columns : ID  TITLE  USER_ID  CREATED  MODIFIED
Photo columns : ID  ALBUM_ID  TITLE  LOC  CREATED  MODIFIED

クエリを使用しています

 $this->db->select('*');
    $this->db->from('album');
    $this->db->join('photo', 'album.id = photo.album_id');
    $this->db->limit(10);
    return $this->db->get();

に変換すると思う

SELECT * FROM album JOIN photo ON album.id = photo.album_id LIMIT 10;

とにかく、私が理解していないのは、各アルバムに関連する写真を表示する方法です。

なので…


基本的に、正しいアルバムとその相対画像を「エコー」するにはどうすればよいですか? 私が知る限り、foreachループは、画像がどのアルバムに属しているかを区別せずに各画像を書き出すだけです。

JOINクエリを使用する必要がありますか?

更新:

わあ、ティルマン、プロだ。 助けてくれてありがとう。 これを参照する他の人は、必ず$ array [$ row ['id']] [] = $ row;の 'id’を変更してください。アルバムIDに関係なく。 私の場合、album_id。 私の最後の結合ステートメントは、idをalbum_idで上書きすることでした。

1 Answer


2


はい、2つのテーブルを結合するのが良い方法です。

  $query = $this->db->query('
      SELECT *
      FROM album a
      JOIN photo p ON a.id = p.album_id
      LIMIT 10
      ');

    foreach ($query->result_array() as $row) {
      $array[$row['id']][] = $row;
    }

    foreach ($array as $album) {
      echo '';
      foreach ($album as $photo) {
        echo '';
      }
      echo '';
    }

このコードをハッキングしました。これがあなたの役に立つことを願っています。 データベースからすべてのデータを取得し、複数のネストされた配列に入れて、アルバムごとにグループ化します。

次に、その配列を反復処理し、最終的なhtmlを表示します。

おそらく最もきれいなソリューションではありませんが、仕事を終わらせる必要があります;)

DoctrineをCodeigniterで使用しています。Codeigniterはすぐにこの機能を提供します。これは配列ハイドレーターと呼ばれます。 それを見てみたいかもしれません。

設定にヘルプが必要な場合はお知らせください。