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

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

ただいまの
回答率

90.53%

  • PHP

    20281questions

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

  • MySQL

    5839questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqlからとってきたデータをhtmlのテーブルのように整列させたい。

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 1,133

kamachi05

score 3

前提・実現したいこと

PHPでSQLよりデータを抽出し、htmlのテーブルのような形に成形し出したいと思っています。
現在は<pre>を使用し見やすい形にはなっているのですが私の理想とは異なります。

該当のソースコード

$prepare = $dbh->prepare('SELECT name, tanka, kosu FROM shiire2 where name like :name');

$prepare->bindParam(':name', sprintf('%%%s%%', addcslashes($name, '\_%')), PDO::PARAM_STR);

$prepare->execute();
$result = $prepare->fetchall(PDO::FETCH_ASSOC);

if (isset($result)){
print "<pre>";
print_r($result);
print "</pre>";
}

実現結果

<table border ="2">
<tr>
<th>列-A</th><th>列-B</th><th>列-C</th></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
</table>

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+2

こういうことでしょうか。

$result = $prepare->fetchall(PDO::FETCH_ASSOC);

if (isset($result)){
  echo "<table>";

  $rec = $result[0];
  foreach(array_keys($rec) as $column) {
    echo "<th>" . $column . "</th>";
  }
  foreach($result as $record) {
    echo "<tr>";
    foreach(array_keys($record) as $column) {
      echo "<td>" . $record[$column] . "</td>";
    }
    echo "</tr>";
  }
  echo "</table>";
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/11 14:05

    回答ありがとうございます。
    こちらのソースを使用すればほしいデータがとれました。
    ですが自分はまだソースの内容をすべて理解できてないので、しっかり理解し使用したいと思います。

    キャンセル

+2

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/07 18:51

    いつ見てもカッコイイ

    キャンセル

  • 2017/03/07 18:56

    ソースコードですか?

    キャンセル

  • 2017/03/07 19:02

    qiitaの記事、必要最小限かつ必要な機能を押さえている絶妙さが。

    キャンセル

  • 2017/03/07 19:06

    言われてみればそうかもしれませんね。
    ダラダラ長く書いても、理解の助けにはならないし、少なすぎても応用の仕方がわからない人にとってはどう組み合わせていいかわからないですもんね。

    キャンセル

  • 2017/03/11 14:04

    回答ありがとうございます。
    URLの内容をまずしっかり理解していきたいと思います。

    キャンセル

+2

こんな感じですか?

$r= $prepare->fetchall(PDO::FETCH_ASSOC);
if (is_array($r)){
  print "<table border =\"2\">\n";
  print "<thead>\n";
  print "<tr>\n";
  foreach(array_keys($r[0]) as $val){ 
    print "<th>{$val}</th>";
  }
  print "</tr>\n";
  print "</thead>\n";
  print "<tbody>\n";
  foreach($r as $row){ 
    print "<tr>\n";
    foreach($row as $val){ 
      print "<td>{$val}</td>";
    }
    print "</tr>\n";
  } 
  print "</tbody>\n";
  print "</table> \n";
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/11 14:02

    回答ありがとうございます。
    参考にさせていただきます。

    キャンセル

checkベストアンサー

+1

fetchAll()で得られる出力は全レコードを含む配列ということはわかりますか?
PHP: PDOStatement::fetchAll - Manual

であれば、foreach()ループで1行ずつ切り出して、
tr要素やtd要素に当てはめて出力すればいいのではないですかね。

foreach ($reault as $row) :
?><tr>
  <td><?php echo $row['name']; ?></td>
  <td><?php echo $row['tanka']; ?></td>
  <td><?php echo $row['kosu']; ?></td>
</tr>
<?php
endforeach;

あるいは、PDO::FETCH_FUNCを活用して
1レコード分の出力を関数化してしまうのも手ですね。

で、名前は左寄せ、単価や個数は右寄せということであれば、
スタイルシートを活用するとか、
単価は3桁ごとに「,」を入れるのであればnumber_format()を活用するとかしますよね。

.left { text-align:left; }
.center { text-align:center; }
.right { text-align:right; }
foreach ($reault as $row) :
?><tr>
  <td class="left"><?php echo $row['name']; ?></td>
  <td class="right"><?php echo number_format($row['tanka']); ?>円</td>
  <td class="right"><?php echo $row['kosu']; ?>個</td>
</tr>
<?php
endforeach;

とか。
PHP: number_format - Manual

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/11 14:02

    回答ありがとうございます。
    わかりやすい説明で補足でCSSなどの情報もいただきありがとうございます。

    キャンセル

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

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20281questions

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

  • MySQL

    5839questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。