teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記しました。imgタグを使った文章に書きかえました。データ格納時のコードを追加しました。

2021/02/17 13:54

投稿

nazonoinu
nazonoinu

スコア1

title CHANGED
File without changes
body CHANGED
@@ -12,17 +12,15 @@
12
12
  現状は上の画像のようになってしまい数字以外が表示されなくなっています。
13
13
  下の画像のようにデータを表示したいです。
14
14
  Picture1,2,3に関してはデータベースに直接写真を格納したいです。
15
- テスト用ファイルをアップロードしてみましたが写真が正しく格納できているのかは確認の仕方がわからないので出来ていません。
16
15
 
17
-
18
16
  ### 該当のソースコード
19
17
 
20
18
  ```PHP
21
19
  <?php
22
20
  try{
23
- $dsn = 'データベースの名とホスト名';
21
+ $dsn = '';
24
- $user = 'ユーザー名';
22
+ $user = '';
25
- $password = 'パスワード';
23
+ $password = '';
26
24
 
27
25
  $PDO = new PDO($dsn, $user, $password); //MySQLのデータベースに接続
28
26
  $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示
@@ -92,18 +90,20 @@
92
90
  ?>
93
91
  ```
94
92
 
93
+
94
+
95
- ### 試したこと
95
+ ###追記
96
- 下のコードを入力しSQL文の確認を行いました。
97
- ```PHP
96
+ ```php
98
97
  <?php
98
+ try{
99
- try{![イメージ説明](8c771fa852b6296d54bd438f050939a9.png)
99
+ $dsn = 'mysql:dbname=???;host=???;charset=utf8';
100
- $dsn = '掲載なので消去;
101
- $user = '掲載なので消去;
100
+ $user = '???';
102
- $password = '掲載なので消去;
101
+ $password = '???';
102
+
103
+ $PDO = new PDO($dsn, $user, $password); //MySQLのデータベースに接続
104
+ $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示
103
105
 
104
- $PDO = new PDO($dsn, $user, $password); //MySQLのデータベースに接続
106
+
105
- $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示
106
-
107
107
 
108
108
  //2.実行したいSQL文をセットする。
109
109
  $car1=$PDO->query('SELECT * from user order by kanrino desc limit 1');
@@ -111,20 +111,143 @@
111
111
 
112
112
  $cardb1=$car1->fetchAll(PDO::FETCH_ASSOC);
113
113
 
114
+ $img1 = base64_encode($cardb1['picture1']);
115
+ $img2 = base64_encode($cardb1['picture2']);
116
+ $img3 = base64_encode($cardb1['picture3']);
114
117
 
115
- }catch (PDOException $e) {
116
- exit('データベースに接続できませんでした。' . $e->getMessage());
117
- }
118
- var_dump($cardb1);
119
118
 
120
119
 
120
+ $pdo=null;
121
+
122
+ }catch (PDOException $e) {
123
+ exit('データベースに接続できませんでした。' . $e->getMessage());
124
+ }
125
+
126
+
127
+
128
+
121
129
  ?>
130
+
131
+ <body>
132
+ <table border="1">
133
+ <!-- 1 -->
134
+ <?php
135
+ if(isset($cardb1)){
136
+ foreach($cardb1 as $card1){
137
+ echo'<tr>';
138
+ echo '<th colspan="5">',$card1['title'],'</th>';
139
+ echo'</tr>';
140
+ }
141
+ }
142
+ ?>
143
+ <!-- 2 -->
144
+ <?php
145
+ if(isset($cardb1)){
146
+ foreach($cardb1 as $card1){
147
+ echo'<tr>';?>
148
+ <th colspan="2" rowspan="2"><img src="data:;base64,<?php echo $img1; ?>"></th>
149
+ <?php
150
+ echo'<th colspan="2" rowspan="2">',$img2,'</th>';
151
+ echo'<td>',$card1['no'],'</td>';
152
+ echo'</tr>';
153
+ }
154
+ }
155
+ ?>
156
+ <!-- 3 -->
157
+ <?php
158
+ if(isset($cardb1)){
159
+ foreach($cardb1 as $card1){
160
+ echo'<tr>';
161
+ echo '<td>',$card1['kanrino'],'</td>';
162
+ echo'</tr>';
163
+ }
164
+ }
165
+ ?>
166
+
167
+ <?php
168
+ if(isset($cardb1)){
169
+ foreach($cardb1 as $card1){
170
+ echo'<tr>';
171
+ echo'<th colspan="2" rowspan="2">',$img3,'</th>';
172
+ echo'<td colspan="3" rowspan="2">',$card1['Description'],'</td>';
173
+ echo'</tr>';
174
+ }
175
+ }
176
+ ?>
122
177
  ```
123
- ###その結果と取得したデータベースの内容
124
- ![結果](3d55a88f606113af992782e572e379a6.png)
178
+ img1を修正し表示できるようにしてみることを目標にやってみましたができませんでした。
125
- ![取得したデーベース](4101fc4ebe70637f6f504c72811059fb.png)
179
+ imgグの文法はimg1のところのように書いていけば大丈夫でしょうか?
126
180
 
127
- ###もう一つ教えていただきたいこと
181
+
128
- この表を1ページあたり10個ずつ表示していき、次のページにも...のような機能を付けたいのですがどのようなコードを書いたらいいかの検討もつかないので教えていただきたいです。
129
- ![EX](b58a58daee35e47345c4cce2526404f1.png)
130
- ショッピングサイトなどで見るこういうのを作りたいです。
182
+ 画像の格納方法のコードはこうなってす。
183
+ ```html
184
+ <form action="sell.php" method="POST" enctype="multipart/form-data">
185
+ <p>車の番号(半角数字)</p>
186
+ <div><input pattern="^[0-9]+$"name="no" required></div>
187
+ <p>タイトル(25字まで)</p>
188
+ <div><textarea id="taitoru" name="taitoru" maxlength="25" placeholder="タイトルを入力"></textarea></div>
189
+ <p>車の説明(2500字まで)</p>
190
+ <div><textarea id="setumei" name="setumei" maxlength="2500" placeholder="車の説明を入力"></textarea></div>
191
+ <p>画像1(jpgもしくはjpeg)</p>
192
+ <div><input type="file" name="avatar1" accept=".jpg, .jpeg" required></div>
193
+ <P>画像2(jpgもしくはjpeg)</P>
194
+ <div><input type="file" name="avatar2" accept=".jpg, .jpeg" required></div>
195
+ <p>画像3(jpgもしくはjpeg)</p>
196
+ <div><input type="file" name="avatar3" accept=".jpg, .jpeg" required></div>
197
+ <p>掲載id</p>
198
+ <div><input pattern="^[0-9]+$"name="keisaiid" maxlength='6' minlength="6" placeholder="半角数字6桁" required></div>
199
+ <p>パスワード</p>
200
+ <div><input pattern="^['0-9''a-z''A-Z']+$" name="keisaipass" maxlength="8" minlength="8" placeholder="英数8桁(半角 英語は大文字可)" required></div>
201
+ <div><button type="submit">掲載する</button></div>
202
+ </form>
203
+
204
+ ```
205
+
206
+ ```php
207
+ <?php
208
+ try { $dsn = 'mysql:dbname=???;host=???;charset=utf8';
209
+ $user = '???';
210
+ $password = '???';
211
+
212
+
213
+ $PDO = new PDO($dsn, $user, $password); //MySQLのデータベースに接続
214
+ $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示
215
+
216
+
217
+ $nowdeta = $PDO->query('SELECT (kanrino) from user order by kanrino desc limit 1');
218
+ // 4.実際にSQLを実行する。
219
+ $nowdeta->execute();
220
+ // 5.結果を取得する。【任意】
221
+ $beta = $nowdeta->fetch();
222
+ // newdetaの定義
223
+ $newdeta=$beta['kanrino']+1;
224
+
225
+ // 2.実行したいSQL文をセットする。2
226
+ $car = $PDO->prepare('INSERT INTO user VALUES(:title,:Descript,:carno,:picture1,:picture2,:picture3,:id,:pass,:kanrino)' );
227
+
228
+
229
+ //変数の定義
230
+ $img_data1 = file_get_contents(@$_FILES['avatar1']['tmp_name']);
231
+ $img_data2 = file_get_contents(@$_FILES['avatar2']['tmp_name']);
232
+ $img_data3 = file_get_contents(@$_FILES['avatar3']['tmp_name']);
233
+
234
+ // 3.SQLに対してパラメーターをセットする。(画像の部分以外はカット)
235
+ $car->bindValue(':picture1',$img_data1, PDO::PARAM_LOB);
236
+ $car->bindValue(':picture2',$img_data2, PDO::PARAM_LOB);
237
+ $car->bindValue(':picture3',$img_data3, PDO::PARAM_LOB);
238
+
239
+ // 4.実際にSQLを実行
240
+ $car->execute();
241
+
242
+
243
+
244
+ } catch (PDOException $e) {
245
+ exit('データベースに接続できませんでした。' . $e->getMessage());
246
+ }
247
+ // 6.データーベースから切断する。
248
+ unset($PDO);
249
+ ?>
250
+
251
+ ```
252
+ 画像の格納の部分に関してはバグがあるのかもわからないです。(エラーメッセージは出てません。)
253
+ 自分では正しくできていると思っていました。

1

2021/02/17 13:54

投稿

nazonoinu
nazonoinu

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- PHPのPODを使ってMySQLからデータを取得しhtmlで表にして表示したい。(数字とテキストと画像)
3
+ PHPのPDOを使ってMySQLからデータを取得しhtmlで表にして表示したい。(数字とテキストと画像)
4
4
 
5
5
  MySQLバージョン 5.0.95
6
6
  ###DBの内容