2017-02-13 10 views
3

私は自分のPHPテーブルをmysqlデータベースから私のページに表示しています。彼らは、部門、彼らがしているものの順に表示されている私のフィールドヘッダーは私のPHPテーブルに表示されていません

現在のところ、それは次のようになります。

      Vehicle Department 
       Bob  3234234  [email protected] 
       Hanna  3434323  [email protected] 
         Workshop Department 
       Andrew  45454523 [email protected] 

しかし、あなたは名前、電話やメールのためのフィールドヘッダーが表示されていない見ることができますように。私はデータベースの結果と一緒にそれらをエコーし​​ようとしましたが、それはテーブル内に巨大な混乱を作成します。

私が達成しようとしています最終結果:

     Vehicle Department 
       Name  Phone  Email 
       Bob  3234234  [email protected] 
       Hanna  3434323  [email protected] 
         Workshop Department 
       Name  Phone  Email 
       Andrew  45454523 [email protected] 

にしたがって、各部門は、名前、電話用のMySQLデータベースからの電子メールデータをフィールドヘッダーを表示します。私のコードは以下の見つけることができます:

<?php 
    $db_host = 'localhost'; 
    $db_user = 'root'; 
    $db_pwd = '*****'; 

    $database = 'list'; 
    $table = 'users'; 

    $conn = mysqli_connect($db_host, $db_user, $db_pwd) or die("Connecting to database failed"); 

    mysqli_select_db($conn, $database) or die("Can't select database"); 

    // sending query 
    $result = mysqli_query($conn, "SELECT name, email, extension, phone, department FROM {$table} ORDER BY department, name ASC"); 
    if (!$result) { 
     die("Query to show fields from table failed"); 
    } 

    echo "<table border='1'><tr>"; 

    // printing table rows 
    $temp = ""; 

    while($row = mysqli_fetch_array($result)) { 
     echo "<tr>"; 

     if ($row['department'] != $temp){ 
      echo "<td colspan='4' style='text-align: center; font-weight: bold'>{$row['department']}</td></tr>\n<tr>"; 
      $temp = $row['department']; 
     } 
    echo "<td>" . $row['name'] . "</td><td>" . $row['email'] . "</td><td>" . $row['extension'] . "</td><td>" . $row['phone'] . "</td>"; 

    echo "</tr>\n"; 
    } 
    mysqli_free_result($result); 
    echo "</table>" 
?> 

答えて

1

ホープこれは

テーブルヘッダ

は、plsは、彼らがうまくいかないかもしれないit..orを変更mysql` `の

<?php 
     $db_host = 'localhost'; 
     $db_user = 'root'; 
     $db_pwd = '*****'; 

     $database = 'list'; 
     $table = 'users'; 

     $conn = mysqli_connect($db_host, $db_user, $db_pwd) or die("Connecting to database failed"); 

     mysqli_select_db($conn, $database) or die("Can't select database"); 

     // sending query 
     $result = mysqli_query($conn, "SELECT name, email, extension, phone, department FROM {$table} ORDER BY department, name ASC"); 
     if (!$result) { 
      die("Query to show fields from table failed"); 
     } 

     echo "<table border='1'><tr>"; 

     // printing table rows 
     $temp = ""; 

     while($row = mysqli_fetch_array($result)) { 
      echo "<tr>"; 

      if ($row['department'] != $temp){ 
       echo "<td colspan='4' style='text-align: center; font-weight: bold'>{$row['department']}</td></tr>\n"; 
echo "<tr><th>Name</th> 
<th>Phone</th> 
<th>Email</th> 
</tr>\n"; 
echo "<tr>"; 

       $temp = $row['department']; 
      } 
     echo "<td>" . $row['name'] . "</td><td>" . $row['email'] . "</td><td>" . $row['extension'] . "</td><td>" . $row['phone'] . "</td>"; 

     echo "</tr>\n"; 
     } 
     mysqli_free_result($result); 
     echo "</table>" 
    ?> 
+0

あなたは師匠です!本当にありがとうございます(実際には試しましたが、$ temp =行の後に置いてください)haha well done ^^ – RedZ

+0

@ J.Hof Welcome .. $ temp = $ row ['あなたは ''をそれに置き換えるのを忘れたかもしれません... Good Luck :) – affaz

0

あなたはフィールド名を取得することができますこれを使用するmysql_field_nameでのMySQLの組み込み関数を使用することができます。 PHP 5.4.0以降では非推奨ですが、 http://php.net/manual/en/mysqli-result.fetch-field-direct.php

+0

その' mysqli_field'代わりに部門名の下に表示されますことができます – affaz

+0

はい、それは新しい機能のリンクを送信しました。なぜなら、mysqlは今では廃止されているからです。 – Abizz

+0

私は知っている..ちょうどあなたのコンテンツでも変更するように言われました.. – affaz

0

データベースからデータをフェッチすると、実際のデータのみがサーバからフェッチされます。

したがって、テーブルヘッダーを入力する必要がある場合は、whileループの前にHTMLコードを挿入してヘッダーを挿入できます。

<?php 
$db_host = 'localhost'; 
$db_user = 'root'; 
$db_pwd = '*****'; 

$database = 'list'; 
$table = 'users'; 

$conn = mysqli_connect($db_host, $db_user, $db_pwd) or die("Connecting to database failed"); 

mysqli_select_db($conn, $database) or die("Can't select database"); 

// sending query 
$result = mysqli_query($conn, "SELECT name, email, extension, phone, department FROM {$table} ORDER BY department, name ASC"); 
if (!$result) { 
    die("Query to show fields from table failed"); 
} 

echo "<table border='1'><tr>"; 

/******** Add this! *********/ 
echo '<tr> 
<th>Name</th> 
<th>Phone</th> 
<th>Email</th> 
</tr>'; 
/****************************/ 

// printing table rows 
$temp = ""; 

while($row = mysqli_fetch_array($result)) 
{ 
    echo "<tr>"; 

    if ($row['department'] != $temp){ 
     echo "<td colspan='4' style='text-align: center; font-weight: bold'>{$row['department']}</td></tr>\n<tr>"; 
     $temp = $row['department']; 
    } 
echo "<td>" . $row['name'] . "</td><td>" . $row['email'] . "</td><td>" . $row['extension'] . "</td><td>" . $row['phone'] . "</td>"; 

    echo "</tr>\n"; 
} 
mysqli_free_result($result); 
echo "</table>" 
?> 
+0

それは機能しますが、私はそれらを各部門に掲載する必要があります。一度だけではありません – RedZ

関連する問題