2012-08-24 49 views
0

使用不同的函數從PHP查詢生成表。我試圖從使用燈絲jQuery可視化插件生成圖表。但是,幾乎在那裏,我似乎需要將第一列中的每個值標記爲<th>以便圖表正確地將其識別爲標題。我認爲我需要按照'如果列號是1,將<th>添加到',但不確定這將在下面的代碼中進行。有任何想法嗎?將<th>標記分配給PHP生成表中的第一列

function SQLResultTable($Query) 
{ 
    $host = "localhost"; 
$user = "root"; 
$pass = ""; 
$db = "Quality_Monitoring"; 
    $link = mysql_connect($host, $user, $pass) or die('Could not connect: ' . mysql_error());  //build MySQL Link 
    mysql_select_db($db) or die('Could not select database');  //select database 
    $Table = ""; //initialize table variable 

    $Table.= "<table id='Table1' border='1' style=\"border-collapse: collapse; text-align: center; font-size: 10px; cellspacing: 5px; \">"; //Open HTML Table 

    $Result = mysql_query($Query); //Execute the query 
    if(mysql_error()) 
    { 
     $Table.= "<tr><td>MySQL ERROR: " . mysql_error() . "</td></tr>"; 
    } 
    else 
    { 
     //Header Row with Field Names 
     $NumFields = mysql_num_fields($Result); 
      $Table.="<thead>"; 
     $Table.= "<tr style=\"background-color: #000066; text-align: center; color: #FFFFFF;\">"; 

     for ($i=0; $i < $NumFields; $i++) 
     { 
     if($i==0){ 
      $Table.= "<th>" . "</th>";} 
      else { 
      $Table.= "<th>" . mysql_field_name($Result, $i) . "</th>"; 
      } 

     } 

     $Table.= "</tr>"; 
    $Table.="</thead>"; 
     //Loop thru results 
     $RowCt = 0; //Row Counter 
     while($Row = mysql_fetch_assoc($Result)) 
     { 
      //Alternate colors for rows 
      if($RowCt++ % 2 == 0) $Style = "background-color: #CCCCCC;"; 
      else $Style = "background-color: #FFFFFF;"; 

      $Table.= "<tr style=\"$Style\">"; 
      //Loop thru each field 
      foreach($Row as $field => $value) 
      { 
       $Table.= "<td>$value</td>"; 
      } 
      $Table.= "</tr>"; 
     } 
     // $Table.= "<tr style=\"background-color: #000066; color: #FFFFFF;\"><td colspan='$NumFields'>Query Returned " . mysql_num_rows($Result) . " records</td></tr>"; 
    } 
    $Table.= "</table>"; 

    return $Table; 

} 

?> 

我知道我應該使用庫MySQLi或什麼的,我會很快解決,只需要得到這個原型啓動和運行。任何幫助不勝感激。

它生成的表是這樣的:

<table id="Table1" border="1" style="border-collapse: collapse; text-align: center; font-size: 10px; cellspacing: 5px; "> 
<thead> 
<tr style="background-color: #000066; text-align: center; color: #FFFFFF;"> 
</thead> 
<tbody> 
<tr style="background-color: #CCCCCC;"> 
<td>Alex O Halloran</td> 
<td>2</td> 
<td>5</td> 
<td>2.5</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
</tr> 
<tr style="background-color: #FFFFFF;"> 
<td>Christopher Fox</td> 
<td>1</td> 
<td>3</td> 
<td>3.0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
</tr> 
<tr style="background-color: #CCCCCC;"> 
<td>Dan McCrory</td> 
<td>2</td> 
<td>3</td> 
<td>1.5</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
</tr> 
<tr style="background-color: #FFFFFF;"> 
<td>Jacob Desborough</td> 
<td>1</td> 
<td>1</td> 
<td>1.0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
</tr> 
<tr style="background-color: #CCCCCC;"> 
<td>Katy Hill</td> 
<td>5</td> 
<td>7</td> 
<td>1.4</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
<td>0</td> 
</tr> 
</tbody> 
</table> 

在這個例子中,我需要的名稱被標記爲</th> - 希望這有助於澄清我後。

+0

這是非常糟糕的代碼。你的意思是插入一個空的標籤作爲第一個字段?我認爲這個問題需要一個原始的HTML輸出示例,以便我們可以根據您對jQuery的使用來了解您需要實現的內容。 – deed02392

+0

@ deed02392不是空的,但所有的第一個字段/列的值需要被標記爲 –

+0

代碼說的是標題行的第一個字段,不要放在字段名稱中。你需要讓這個問題更具可讀性或者沒有人會幫助你。幫助我們幫助你,並將自己的努力放在理解你所得到的東西上,並解釋你需要的東西...... – deed02392

回答

2

你可以嘗試使用:

$first = true; 
foreach($Row as $field => $value) { 
    if ($first) { 
     $Table .= "<th>$value</th>"; 
     $first = false; 
    } else { 
     $Table.= "<td>$value</td>"; 
    } 
} 

讓我知道如果我誤解你的問題

+0

這看起來像您想要的解決方案,但我不確定爲什麼在示例HTML輸出中沒有在頂部插入任何字段名稱?根據你所鏈接的例子,不要忘記你可能需要'''。 – deed02392

+0

非常好,謝謝你,解決了這個問題,現在只是出於某種原因在圖表上標籤全部被右邊的2個系列抵消,所以第一個標籤被分配到第三個系列,前兩個系列帶有空白。但是,您的解決方案解決了我所問的問題,我想這個標籤業務只是一個CSS問題,非常感謝,非常感謝! –

相關問題