質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

806閲覧

PHP写真配列で出力したい

GPE46232209

総合スコア14

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/08/12 12:44

前提・実現したいこと

写真のバイナリデータと写真のタイプを配列に入れてimgに入れて出力をするというもので
配列の使い方がいまいちうまくいかなくて、配列を挿入すると出力がされない事態が続いているので
この場合の配列の入れ方を教えていただきたいです。

該当のソースコード

PHP

1$kazus = $db->query("SELECT COUNT(PHOTO) AS kazu, PHOTO ,PHOTO_TYPE FROM trouble_pic WHERE ID = '".$ID."' ORDER BY number DESC"); 2$kazu = $kazus -> fetch(); 3 4//forで繰り返して、表示の写真を出し切りたいが配列がうまくいかない。PHOTO_TYPEの内容も固定されて変わっていない。 5for($i =0; $i < 5; $i++){ 6 7if ($kazu["PHOTO_TYPE"][$i] == "jpeg" || $kazu["PHOTO_TYPE"][$i] == "png" || $kazu["PHOTO_TYPE"][$i] == "gif") { 8 if($kazu["PHOTO_TYPE"] == "jpeg"){ 9 $type[$i] = "jpeg"; 10 } 11 elseif ($kazu["PHOTO_TYPE"] == "png") { 12 $type[$i] ="png"; 13 }elseif ($kazu["PHOTO_TYPE"] == "gif") { 14 $type[$i] ="gif"; 15 } 16 echo '<img width="120" height="120" src="data:image/'.$type[$i].';base64,'.base64_encode($kazu['PHOTO']).'">'; 17 echo "<br/><br/>"; 18} 19}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

下記の形でどうでしょうか。おそらく現状の問題はデータが1行分しか取得できていないのだと思います。

php

1//COUNTにより結果が1行にまとめらているので、COUNT(PHOTO) AS kazuを削除 5件以下にするためLIMIT 5を追加 2$kazus = $db->query("SELECT PHOTO ,PHOTO_TYPE FROM trouble_pic WHERE ID = '".$ID."' ORDER BY number DESC LIMIT 5"); 3//$kazu = $kazus->fetch(); fetch()では1件しか取得できないので削除 4foreach ($kazus as $kazu) { 5 //配列へのアクセス方法を変更 6 if ($kazu["PHOTO_TYPE"] == "jpeg" || $kazu["PHOTO_TYPE"] == "png" || $kazu["PHOTO_TYPE"] == "gif") { 7 echo '<img width="120" height="120" src="data:image/'.$kazu["PHOTO_TYPE"].';base64,'.base64_encode($kazu['PHOTO']).'">'; 8 echo "<br/><br/>"; 9 } 10}

投稿2021/08/12 15:35

webgoto

総合スコア1293

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GPE46232209

2021/08/13 10:11

通りました。。ありがとうございます。 ご参考までに、今回私が行ったことはINSERTの時に写真の数が異なることを想定して2つのテーブルからID(varchar)JOIN展開して、IDごとに写真音数を異ならせるというものでした。本当にありがとうございます。 $ID = $record['ID']; $PHOTO = $db->query("SELECT COUNT(PHOTO) AS kazu FROM trouble_pic WHERE ID = '".$ID."' ORDER BY number DESC "); $PHOTOS = $PHOTO -> fetch(); $kazus = $db->query("SELECT PHOTO , PHOTO_TYPE FROM trouble_pic WHERE ID = '".$ID."' ORDER BY number DESC LIMIT ".$PHOTOS['kazu'].""); foreach ($kazus as $kazu) { if ($kazu["PHOTO_TYPE"] == "jpeg" || $kazu["PHOTO_TYPE"] == "png" || $kazu["PHOTO_TYPE"] == "gif") { echo '<img width="120" height="120" src="data:image/'.$kazu["PHOTO_TYPE"].';base64,'.base64_encode($kazu['PHOTO']).'">'; echo "<br/><br/>"; } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問