とても悩んだので、プログラムを簡略化して記録します。
#問題点
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);
#まとめ
このような配列の中に配列があるものを三次元配列というそうです。
普通の配列か、そうでない配列かをわかる必要がありました。
当たり前だなと思いました。が、使わなければ忘れます…。
もっと簡単な記述方法があればご教授ください。
以上です。