2016-05-30 11 views
0

私はカラム名を含む私のテーブルを印刷するためのPHPコードを持っています。ユーザー入力に基づいて異なるサイズ/長さの表を印刷する必要があるため、印刷は動的でなければなりません。 :PHP - データベーステーブルを印刷するにはどうしたらいいですか?

<table> 
    <?php 
    while ($row = mysqli_fetch_array($results)) { 
     while ($fieldInfo = mysqli_fetch_field($results)) { ?> 
      <th> <?php echo $fieldInfo->name; ?> </th> 
      <td> <?php echo $row[$fieldInfo->name] ?> </td> 
     <?php } 
    } ?> 
</table> 

これは$resultsのクエリです:

$tName = $_POST["tableNames"]; //this data is recieved from another page 
require_once("conn.php"); 
$sql = "SELECT * FROM $tName"; 
$results = mysqli_query($conn, $sql) 
or die ('Problem with query' . mysqli_error($conn)); 

私のコードは正常にテーブル名だけでなく、最初の行データを出力しますが、それはここでは正しくフォーマットされていませんが、それがどのように見えるかです: さらに。何らかの理由で、whileループを使用していても、最初の行だけを出力します。

+0

以下のようにあなたが正しくhttp://php.net/manual/en/mysqli-resultそれを使用しているように、それは見ていないフォーマットすることができます。 fetch-field.php –

+0

あなたの期待する結果は? – Toto

+0

@Toto私の期待される結果は、列名を含むテーブル全体を印刷することです。印刷は、データベース上の5テーブル名の1つをページ –

答えて

0

私のアドバイスは、2つの配列を準備することです。

2つのforeachを使用してヘッダーを含む最初の行を生成し、2番目の行を使用してデータを表示する場合。行を分割するために<tr>タグを追加するのを忘れてしまいました。

0

使用

mysqli_fetch_field()関数はオブジェクトとして結果セット内の次の列を返します。テーブルのレコードではなく、すべてのカラム名を返します。あなたはすべてのレコードを取得するためmysqli_fetch_array()を使用する必要が

: まず1:含むデータ:列名と第二を含むあなたに

while ($info = mysqli_fetch_array($results,MYSQLI_ASSOC)) { 
    { 
    echo $info['rid']; 
    echo $info['level']; 
    .... 
    } 
+0

間違い...私は答えを更新しました –

+0

私はテーブル名を基にしてテーブルを印刷できるようにする必要があるので、ユーザ入力。データベース内の5つのテーブルのいずれかになります。 –

0

私は、配列内のカラム名を格納するタラスの提案を使用してしまった:私の理解のよう

<table> 
    <?php 
    while ($fieldInfo = mysqli_fetch_field($results)) { ?> 
     <th> <?php echo $fieldInfo->name; ?> </th> 
     <?php 
     $colNames[] = $fieldInfo->name; 
     ?> 
    <?php } 

    while ($row = mysqli_fetch_array($results)) { ?> 
     <tr> 
     <?php for ($i=0; $i<sizeof($colNames); $i++) { ?> 
      <td><?php echo $row[$colNames[$i]] ?> 
     <?php } ?> 
     </tr> 
    <?php } ?> 
</table> 
0

を、あなたはすべてのテーブルとその列を表示したいですか? だから、私はあなたの文書の例2をチェックします

$sql = "SHOW TABLES FROM dbname"; 
$result_tables = mysqli_query($link, $sql); 
echo "<table border=1>"; 
echo "<tr><td>Table name</td><td>Fields name</td></tr>"; 
while($row = mysqli_fetch_array($result_tables)) { 
    echo "<tr>"; 
    echo "<td>".$row[0]."</td>"; 

    $sql2 = "SHOW COLUMNS FROM ".$row[0];\\row[0] is used to get table name 
    $result_fields = mysqli_query($link, $sql2); 
    echo "<td>"; 
    while($row2 = mysqli_fetch_array($result_fields)) { 
     echo $row2['Field'].','; 
    } 
    echo "</td>"; 
    echo "</tr>"; 

} 
関連する問題