回答編集履歴

4

サンプルコード修正

2017/06/13 02:57

投稿

m.ts10806
m.ts10806

スコア80861

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  $image_path = "noimage.jpg"; //noimage画像
28
28
 
29
- $sql = "SELECT catalog_id , path FROM product_img WHERE catalog_id = " . mysqli_real_escape_string($_GET['catalog_id']);
29
+ $sql = "SELECT catalog_id , path FROM product_img WHERE catalog_id = " . mysqli_real_escape_string($dbLink,$_GET['catalog_id']);
30
30
 
31
31
  $result = mysqli_query($dbLink,$sql) or trigger_error($mysqli->error."[$sql]");
32
32
 

3

文言修正

2017/06/13 02:57

投稿

m.ts10806
m.ts10806

スコア80861

test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  例:
78
78
 
79
- 画像が```http://hogehoge/img/1.jpg```にありDBでは```/img/1.jpg```とあ```http://hogehoge/img_get.php```を実行する場合、
79
+ 画像が```http://hogehoge/img/1.jpg```にありDBでは```/img/1.jpg```とあ```http://hogehoge/img_get.php```を実行する場合、
80
80
 
81
81
 
82
82
 

2

追記

2017/06/09 04:38

投稿

m.ts10806
m.ts10806

スコア80861

test CHANGED
@@ -61,3 +61,31 @@
61
61
 
62
62
 
63
63
  もし画像出力の確認をしたければ、ブラウザで```img_get.php?catalog_id=1```を直接実行すると良いです。正常確認ができてからHTMLに埋め込んだ方がトラブルが少ないです。
64
+
65
+
66
+
67
+ # 追記
68
+
69
+
70
+
71
+ PHPで画像を表示させる場合、**実行しているPHPからの相対パス、または絶対パスでなければなりません。**
72
+
73
+ DBに保存しているパスがWebRootからのパスであれば調整する必要があります。ご注意ください。
74
+
75
+
76
+
77
+ 例:
78
+
79
+ 画像が```http://hogehoge/img/1.jpg```にありDBでは```/img/1.jpg```とあ```http://hogehoge/img_get.php```を実行する場合、
80
+
81
+
82
+
83
+ ```PHP
84
+
85
+ $filepath = ".".$row["path"];
86
+
87
+ //または
88
+
89
+ $filepath = __DIR__.$row["path"]; //こちらの方が推奨
90
+
91
+ ```

1

コード

2017/06/09 04:08

投稿

m.ts10806
m.ts10806

スコア80861

test CHANGED
@@ -2,16 +2,62 @@
2
2
 
3
3
  そして```path```には画像パスが入っているものと推察されますが、```catalog_id```には何が入っているのでしょうか?
4
4
 
5
- ```path```が画像フルパスなのであれば```file_exists($_SESSION['path']))```とし
5
+ あと、```path```が画像フルパスなのであれば```file_exists($_SESSION['path']))```とし```readfile($_SESSION['path']);```です。
6
6
 
7
- ```readfile($_SESSION['path']);```ではないかなと思います。
8
-
9
-
10
-
11
- またechoで出力ではなくreadfileのみで良いと思います。→[PHPで画像出力](http://qiita.com/tokutoku393/items/66c9916e47cab2a01167)
7
+ またechoは不要す。readfileのみで良いと思います。→[PHPで画像出力](http://qiita.com/tokutoku393/items/66c9916e47cab2a01167)
12
8
 
13
9
  あと、ファイルが存在しない場合も考慮してnoimage画像も準備した方がいいですね。
14
10
 
15
11
 
16
12
 
17
13
  そういえば、これだけ見た感じだとセッションで画像情報を他の機能に持ちまわる等はなさそうなのでセッション利用しなくても良いと思いますよ。
14
+
15
+
16
+
17
+ # サンプルコード
18
+
19
+
20
+
21
+ ```PHP
22
+
23
+ //冒頭省略
24
+
25
+
26
+
27
+ $image_path = "noimage.jpg"; //noimage画像
28
+
29
+ $sql = "SELECT catalog_id , path FROM product_img WHERE catalog_id = " . mysqli_real_escape_string($_GET['catalog_id']);
30
+
31
+ $result = mysqli_query($dbLink,$sql) or trigger_error($mysqli->error."[$sql]");
32
+
33
+ if (!$result) {
34
+
35
+ $image_path = "noimage.jpg";
36
+
37
+ }else{
38
+
39
+ $row = mysqli_fetch_assoc($result);
40
+
41
+ if (file_exists($row['path'])) {
42
+
43
+ $image_path = $row['path'];
44
+
45
+ }
46
+
47
+ }
48
+
49
+
50
+
51
+ header('Content-Type: images/jpeg');
52
+
53
+ readfile($image_path);
54
+
55
+
56
+
57
+ //以上
58
+
59
+ ```
60
+
61
+
62
+
63
+ もし画像出力の確認をしたければ、ブラウザで```img_get.php?catalog_id=1```を直接実行すると良いです。正常確認ができてからHTMLに埋め込んだ方がトラブルが少ないです。