web-dev-qa-db-ja.com

SQLテーブルからHTMLテーブルを作成する

SQLデータベースに、ID、名前、電子メール、大学、言語、および経験を持つテーブルがあります。 SQLからデータをフェッチし、最後の10件の結果を出力するhtmlテーブルを作成したいですか?どうすればいいですか?

これが非常に単純な質問である場合は申し訳ありませんが、PHPおよびSQLに関する知識はほとんどありません。

次のコードは、テーブルではなく名前を表示するだけのコードです。

    <html>
    <head>
        <title>Last 5 Results</title>
    </head>
    <body>
        <?php
            $connect = mysql_connect("localhost","root", "root");
            if (!$connect) {
                die(mysql_error());
            }
            mysql_select_db("apploymentdevs");
            $results = mysql_query("SELECT * FROM demo");
            while($row = mysql_fetch_array($results)) {

                echo $row['Name'] . "</br>";


            ?>
    </body>
</html>
9
Aloke Desai

これは、テーブルを作成して php および mysql の知識を得るのに役立つものです。

また、接続ロジックとクエリをプロセスの最初に移動して、ページの読み込み中のエラーを回避し、mysql_errorだけよりも正確なエラーを表示する必要があります。

編集:IDが増加している場合は、ORDER BY句を追加できます。
変化する: SELECT * FROM demo LIMIT 10から:SELECT * FROM demo LIMIT 10 ORDER BY id

<html>
    <head>
        <title>Last 10 Results</title>
    </head>
    <body>
        <table>
        <thead>
            <tr>
                <td>Id</td>
                <td>Name</td>
            </tr>
        </thead>
        <tbody>
        <?php
            $connect = mysql_connect("localhost","root", "root");
            if (!$connect) {
                die(mysql_error());
            }
            mysql_select_db("apploymentdevs");
            $results = mysql_query("SELECT * FROM demo LIMIT 10");
            while($row = mysql_fetch_array($results)) {
            ?>
                <tr>
                    <td><?php echo $row['Id']?></td>
                    <td><?php echo $row['Name']?></td>
                </tr>

            <?php
            }
            ?>
            </tbody>
            </table>
    </body>
</html>
10
Josejulio

データベースのデータをJSONにエンコードする必要があるオプション: http://www.jeasyui.com/documentation/datagrid.php

しかし、これはより有望に見えます: http://phpgrid.com/

6
peterrus

クエリ結果でtable( $result );を呼び出すと、フィードするSQL配列のサイズに関係なく、HTMLベースのテーブルが生成されます。これが役に立てば幸い:)

<?php

function table( $result ) {
    $result->fetch_array( MYSQLI_ASSOC );
    echo '<table>';
    tableHead( $result );
    tableBody( $result );
    echo '</table>';
}

function tableHead( $result ) {
    echo '<thead>';
    foreach ( $result as $x ) {
    echo '<tr>';
    foreach ( $x as $k => $y ) {
        echo '<th>' . ucfirst( $k ) . '</th>';
    }
    echo '</tr>';
    break;
    }
    echo '</thead>';
}

function tableBody( $result ) {
    echo '<tbody>';
    foreach ( $result as $x ) {
    echo '<tr>';
    foreach ( $x as $y ) {
        echo '<td>' . $y . '</td>';
    }
    echo '</tr>';
    }
    echo '</tbody>';
}
4
Brandon

SQLクエリからHTMLテーブルを作成するために、同じコードを何度も何度も貼り付けてイライラしました。

したがって、ここではmysqliの結果を取り、それらをプレーンな単純なHTMLテーブルに貼り付ける関数を使用します。

function sql_to_html_table($sqlresult, $delim="\n") {
  // starting table
  $htmltable =  "<table>" . $delim ;   
  $counter   = 0 ;
  // putting in lines
  while( $row = $sqlresult->fetch_assoc()  ){
    if ( $counter===0 ) {
      // table header
      $htmltable .=   "<tr>"  . $delim;
      foreach ($row as $key => $value ) {
          $htmltable .=   "<th>" . $key . "</th>"  . $delim ;
      }
      $htmltable .=   "</tr>"  . $delim ; 
      $counter = 22;
    } 
      // table body
      $htmltable .=   "<tr>"  . $delim ;
      foreach ($row as $key => $value ) {
          $htmltable .=   "<td>" . $value . "</td>"  . $delim ;
      }
      $htmltable .=   "</tr>"   . $delim ;
  }
  // closing table
  $htmltable .=   "</table>"   . $delim ; 
  // return
  return( $htmltable ) ; 
}

使用例:

$DB = new mysqli("Host", "username", "password", "database");
$sqlresult = $DB->query( "SELECT * FROM testtable LIMIT 1 ;" ) ; 

echo sql_to_html_table( $sqlresult, $delim="\n" ) ; 
3
petermeissner

mysql_fetch_assoc()を使用したフェッチに興味があるかもしれません(連想配列でデータを取得するためです:keys => value)。キーには列名があります。したがって、各行について、各列をループし(array_keys()を使用)、その値を出力できます。

$results = mysql_query("SELECT * FROM demo");
while($row = mysql_fetch_assoc($results)) {
    foreach (array_keys($row) as $column) {
        echo $row[$key] . "</br>";
    }
}

(その後、結果を実行している間は値が変更されないため、array_keys($ row)を一度だけ設定される変数にキャッシュできます。)

1
mdup

久しぶりですが、2セントを入れます。関数を使用します(クラスの方がいいです)。 mysqlの結果からテーブルを作成することは非常に一般的なタスクです。

<!DOCTYPE html>
<html>
    <head><title>Create Tables from MySQL using functions</title></head>
<body>
<?php
db_connect();
// assuming you have an auto increment id as the first column
$result = mysql_query("SELECT * FROM demo ORDER BY 1 DESC LIMIT 10");
print createTable(array_result($result));
?>
</body>
</html>

<?php 
/**
 * Quick mysql result function
 *
 * @param $result
 * @return array
 */
function array_result($result)
{
    $args = array();
    while ($row = mysql_fetch_assoc($result)) {
        $args[] = $row;
    }
    return $args;
}



/**
 * Connect to db
 * 
 * @param string $db_Host
 * @param string $db
 */
function db_connect($db_Host = "localhost", $db = "apploymentdevs")
{
    $connect = mysql_connect($db_Host,"root", "root");
    if (!$connect) {
        die(mysql_error());
    }
    mysql_select_db($db);
}

/**
 * Create a table from a result set
 *
 * @param array $results
 * @return string
 */
function createTable(array $results = array())
{
    if (empty($results)) {
        return '<table><tr><td>Empty Result Set</td></tr></table>';
    }

    // dynamically create the header information from the keys
    // of the result array from mysql
    $table = '<table>';
    $keys = array_keys(reset($results));
    $table.='<thead><tr>';
    foreach ($keys as $key) {
        $table.='<th>'.$key.'</th>';
    }
    $table.='</tr></thead>';

    // populate the main table body
    $table.='<tbody>';
    foreach ($results as $result) {
        $table.='<tr>';
        foreach ($result as $val) {
            $table.='<td>'.$val.'</td>';
        }
        $table.='</tr>';
    }
    $table.='</tbody></table>';
    return $table;
}
1
Paul Carlton

<table>, <tr> and <td>.を使用して、HTMLでテーブルを作成する方法を知っていることを願っています

Whileループでそれを含むテーブルを修正し、SQLクエリとして"SELECT * FROM demo LIMIT 10"を使用します。

0
Sgarz