LoginSignup
0
0

More than 3 years have passed since last update.

【PHP,Laravel】PHPから変数や配列をまとめて送り、Laravelで表示する方法

Last updated at Posted at 2020-08-08

とても悩んだので、プログラムを簡略化して記録します。

問題点

name  | number | text
test  |      1 | test
sample|      2 | sample

以上のようなとき、一行目しか変数に入らない!

できた時のプログラム

index.php
            $count = 1;

            $db = pg_connect("host=host port=5432 dbname=dashboard user=postgres password=○○" ); 
            if(!$db)throw new Exception("DB接続に失敗しました。");

            $search = pg_query("SELECT *FROM board_posted;");
            if (!$search)throw new Exception('クエリーが失敗しました。');

//ここからポイント
            for($i=0;$i<$rows_count;$i++){
                $rows[] = pg_fetch_array($search, $i, PGSQL_ASSOC);
            }

        $info = array(
            "count"=> $count,//数値
            "board"=> $rows//配列
        );
        print_r($rows);

        return view('dashboard')->with('info',$info);

print_r($rows)の結果は

Array (
[0] => Array (
 [number] => 0 [name] => hoge [text] => This is a sample.
 ) 
[1] => Array (
 [number] => 1 [name] => hoge [text] => This is a sample2.
 ) 
)
index.blade.php.html
      @for($i = 0; $i < $info['board_count']; $i++)
                  <div class="card" style="width: 60rem;">
                  {{$info['board'][$i]['number']}}<!--ここで配列から取り出す-->   
                  </div>
                  <div class="card-body">
                      <table border="1">
                          <tbody>
                          <tr>
                            <td>{{$info['board'][$i]['name']}}</td><!--ここで配列から取り出す-->
                          </tr>
                          {{$info['board'][$i]['text']}}<!--ここで配列から取り出す-->
                      </tbody>
                      </table>
                  </div>
      @endfor

当たり前かもしれませんが、$rows[]と配列にしたらできました。
あとlaravel側での取り出し方がポイントでした。

できなかった時のプログラム

index.php
            $count = 1;

            $db = pg_connect("host=host port=5432 dbname=dashboard user=postgres password=○○" ); 
            if(!$db)throw new Exception("DB接続に失敗しました。");

            $search = pg_query("SELECT *FROM board_posted;");
            if (!$search)throw new Exception('クエリーが失敗しました。');

            $rows = pg_fetch_array($search, $i, PGSQL_ASSOC);//一行の配列は入る

        $info = array(
            "count"=> $count,//数値
            "board_number"=> $rows['number'],//1個しか入っていなかった
            "board_name"=> $rows['name'],//1個しか入っていなかった
            "board_text"=> $rows['text'],//1個しか入っていなかった
        );
        print_r($rows);

        return view('dashboard')->with('info',$info);

まとめ

このような配列の中に配列があるものを三次元配列というそうです。
普通の配列か、そうでない配列かをわかる必要がありました。
当たり前だなと思いました。が、使わなければ忘れます…。
もっと簡単な記述方法があればご教授ください。
以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0