php,html
1 2//サンプル 3$stmt = $pdo->query('SELECT * FROM テーブル'); 4 5foreach ($stmt as $row) { 6 7?> 8 <table> 9<tr> 10<td><? echo $row['name']; ?></td> 11<td><? echo $row['height'];?></td> 12<td><? echo $row['weight'];?></td> 13<td><? echo $row['sex'];?></td> 14<td><? echo $row['arm'];?></td> 15</tr> 16</table> 17<? }?> 18
画像のようなtableにしたいのですが横一列に出てしまって上手く縦に出せません。
実際に出すと以下のように出てしまいます。
田中、170cm、50kg、男性、右利き
佐藤、180cm、60kg、女性、左利き
配列内は(田中、170cm、50kg、男性、右き、佐藤、180cm...)みたいな形で入っています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
php
1$sql = 'SELECT * FROM TABLE'; 2$stmt = $dbh->prepare($sql); 3$stmt->execute(); 4$result = $stmt->fetchAll(); 5?> 6 7<table> 8<table border="1"> 9<?php foreach ($result[0] as $key => $val){ ?> 10 <?php if (is_numeric($key)){ ?> 11 <?php for($j=0;$j<count($result);$j++){ ?> 12 <td><?php echo $result[$j][$key] ?></td> 13 <?php }?> 14 </tr> 15 <?php }else{ ?> 16 <tr> 17 <td><?php echo $key ?></td> 18 <?php }?> 19<?php }?> 20</table>
ソースを読みやすくしました。テーブルのdumpを添付します。
php
1$sql = 'SELECT * FROM tbl_c'; 2$stmt = $dbh->prepare($sql); 3$stmt->execute(); 4$result = $stmt->fetchAll(); 5// print_r ($result); 6?> 7 8<table> 9<table border="1"> 10<?php 11 foreach ($result[0] as $key => $val){ 12 if (is_numeric($key)){ 13 for($j=0;$j<count($result);$j++){ 14 echo "<td>". $result[$j][$key] ."</td>\n"; 15 } 16 echo "</tr>\n"; 17 }else{ 18 echo "<tr>\n"; 19 echo "<td>" .$key. "</td>\n"; 20 } 21 } 22?> 23</table>
dump
1Array 2( 3 [0] => Array 4 ( 5 [名前] => 田中 6 [0] => 田中 7 [身長] => 170cm 8 [1] => 170cm 9 [体重] => 50kg 10 [2] => 50kg 11 [性別] => 男性 12 [3] => 男性 13 [利き腕] => 右利き 14 [4] => 右利き 15 ) 16 17 [1] => Array 18 ( 19 [名前] => 佐藤 20 [0] => 佐藤 21 [身長] => 180cm 22 [1] => 180cm 23 [体重] => 60kg 24 [2] => 60kg 25 [性別] => 女性 26 [3] => 女性 27 [利き腕] => 左利き 28 [4] => 左利き 29 ) 30 31 [2] => Array 32 ( 33 [名前] => 鈴木 34 [0] => 鈴木 35 [身長] => 190cm 36 [1] => 190cm 37 [体重] => 70kg 38 [2] => 70kg 39 [性別] => 男性 40 [3] => 男性 41 [利き腕] => 右利き 42 [4] => 右利き 43 ) 44 45 [3] => Array 46 ( 47 [名前] => 加藤 48 [0] => 加藤 49 [身長] => 170cm 50 [1] => 170cm 51 [体重] => 50kg 52 [2] => 50kg 53 [性別] => 女性 54 [3] => 女性 55 [利き腕] => 左利き 56 [4] => 左利き 57 ) 58 59 [4] => Array 60 ( 61 [名前] => 吉田 62 [0] => 吉田 63 [身長] => 180cm 64 [1] => 180cm 65 [体重] => 60kg 66 [2] => 60kg 67 [性別] => 男性 68 [3] => 男性 69 [利き腕] => 右利き 70 [4] => 右利き 71 ) 72 73 [5] => Array 74 ( 75 [名前] => 浜田 76 [0] => 浜田 77 [身長] => 190cm 78 [1] => 190cm 79 [体重] => 70kg 80 [2] => 70kg 81 [性別] => 女性 82 [3] => 女性 83 [利き腕] => 左利き 84 [4] => 左利き 85 ) 86 87 [6] => Array 88 ( 89 [名前] => 松本 90 [0] => 松本 91 [身長] => 200cm 92 [1] => 200cm 93 [体重] => 100kg 94 [2] => 100kg 95 [性別] => 男性 96 [3] => 男性 97 [利き腕] => 両利き 98 [4] => 両利き 99 ) 100 101)
投稿2017/05/29 10:18
編集2017/05/30 07:54総合スコア4070
0
もういっそ、すっごい遠回りな方法から考えてみますか?
説明とかははっきりいって適していないかもしれません。私自身がわかりやすいように覚えただけです。
PHP
1$result[] = ['田中', '170cm', '50kg', '男性', '右利き']; 2$result[] = ['佐藤', '170cm', '50kg', '女性', '左利き']; 3 4// そもそもどうやったら田中だけ表示できるかとかわかられますかね? 5echo $result[0][0]; // 田中 6echo $result[1][0]; // 佐藤 7 8// 配列の一番初めに出てくるので、0です。 9// resultの順番で考えると、最初が0なので次が1って感じ。
さて、次にテーブルの形について考えていきましょう。
HTML
1<tr></tr> <!-- このtr ~ /trまでが「一行」です --> 2<!-- 今回の場合$result[num][0]が一行であると考えると --> 3<tr> 4 <td>田中</td> 5 <td>佐藤</td> 6</tr> 7<tr> 8 <td>170cm</td> 9 <td>170cm</td> 10</tr> 11<!-- こういう形でテーブルとしては作られるかと思います -->
さて、こうなると、とりあえず「回す」と考えられるのはtdの部分ってのがまず見えます。
PHP
1<tr> // 一行というのは回さない(今回は) 2 <td>名前(固定)</td> // これは固定であり、回らないのでforeachの外です。 3 <?php foreach($result as $R) : ?> 4 <td><?=$R[0]?></td> // 本当は$resultだけど、回すときは$Rにするよ~ってしました。 5 <?php endforeach; ?> // すでに回していいるので、$result($R)[ここは勝手に回ってる][0] 6</tr> 7<tr> 8 <?php foreach($result as $R) : ?> 9 <td><?=$R[1]?></td> 10 <?php endforeach; ?> 11</tr>
地道にまずは、動きがわかりやすくなればと思います。
投稿2017/05/29 12:11
編集2017/05/29 12:17総合スコア525
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
tableタグをforeachの外に出してあげましょう。
あと、配列に入っているデータがよくないと思います。
$result = $stmt->fetch(PDO::FETCH_ASSOC)
のように取得すると、うまいこと入るのではないでしょうか?
投稿2017/05/29 08:41
編集2017/05/29 08:45総合スコア2021
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/29 10:11
退会済みユーザー
2017/05/29 10:33
2017/05/29 10:40
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/29 10:24
退会済みユーザー
2017/05/29 10:25
2017/05/29 11:00
退会済みユーザー
2017/05/30 07:04
2017/05/30 08:09
退会済みユーザー
2017/05/30 09:06