一回も披露したことのない豆知識

現在PHP7.4.10(XAMPP)環境で開発しています。

データベースから次の通りデータを取得しています。
$pdo = new PDO('mysql:host=localhost;dbname=データベース名;charset=utf8', ユーザー名, パスワード,
[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC]);
foreach ($pdo->query("SELECT
`snum_`, -- 仕入先コード
`sname`, -- 仕入先名
( 以下中略 )
;
")
AS $row) {
$data[] = $row;
}
$sheet->fromArray($data, NULL, 'A6');


現在は上記の方法で”仕入先コード順に並び替えて出力しています。

本当なら、仕入先コードごとに1ページ(27行毎)ごとに出力したいと思っています。
また、仕入先コードに対して1件のレコードしかない場合でも、1ページとして出力できる用にするにはどのようにやったら良いでしょうか。


お忙しい中恐縮致しますが、何卒よろしくお願いいたします。

A 回答 (1件)

仕入先コードの一覧を取って


例) select 仕入先コード from ... group by 仕入先コード

仕入先コードごとに問い合わせて
例) select ... from ... where 仕入先コード = :code

結果を 27 行単位に分割してから出力しましょう
例) $pages = array_chunk($data, 27);

参考)
https://dev.mysql.com/doc/refman/8.0/ja/group-by …
https://www.php.net/manual/ja/pdostatement.bindp …
https://www.php.net/manual/ja/function.array-chu …
    • good
    • 0
この回答へのお礼

お忙しい中、ていねいに教えていただきましてありがとうございました。『array_chunk();』のことを教えていただいたのですが、イマイチ理解できず、仕入先コード別に改ページ?できず、いまだ解決できていませんorz

お礼日時:2023/03/28 17:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報