2016-02-29 46 views
1

我有一個名爲Table_I的表格,有31行。我想顯示每行到一個預定義(現有)31個單元格的表。也就是說,每個表格行都放入每個單獨的表格單元格。在預定義的html表格中顯示數據庫表格記錄

Table_I 

     ID | Name | Rowcol | 
     ..................... 
     1 | ABC | 3-1 | 
     2 | PQR | 3-2 |  
     3 | XYZ | 3-3 | 
     4 | MNO | 3-4 | 
     5 | DEF | 4-1 | 
     6 | QRS | 4-2 |  
     7 | UVW | 4-3 | 
     8 | IJK | 4-4 | 

輸出:

Predefined table 

    | Cell 1 | Cell 2 | Cell 3 | Cell 4 | 
    ..................................... 
    | ABC | PQR | XYZ | MNO | 
    ..................................... 
    | DEF | QRS | UVW | IJK | 

代碼:

<?php 

...Connection to DB... 

$query="SELECT name, rowcol 
     FROM Teble_I 
     "; 

$params = array($_REQUEST['query']); 

$results = sqlsrv_query($conn, $query, array(), array("Scrollable" => 'static')); 

if($results===false) 
{ die(FormatErrors(sqlsrv_errors())); } 

if($results===false) 
{ die(FormatErrors(sqlsrv_errors())); } 

$r=3; 
$c=1; 

while ($row = sqlsrv_fetch_array($results, SQLSRV_FETCH_ASSOC)) 
    { 

?> 

<body> 
<table width="200" border="1"> 
<tr> 
<?php 
    if($row['rowcol']==$r ."-". $c) 
     { 
      echo "<td>".$row['name']."<td>"; 
      echo "<td>".$row['name']."<td>"; 
      echo "<td>".$row['name']."<td>"; 
      echo "<td>".$row['name']."<td>"; 
     } 

    $c++; 

    if ($r==3 && $c==5 || $r==4 && $c==5) 
     { 
      $r++; 
      $c=1; 
     } 

?> 

</tr> 
<tr> 
<?php 
    if($row['rowcol']==$r ."-". $c) 
     { 
      echo "<td>".$row['name']."<td>"; 
      echo "<td>".$row['name']."<td>"; 
      echo "<td>".$row['name']."<td>"; 
      echo "<td>".$row['name']."<td>"; 
     } 

    $c++; 

    if ($r==3 && $c==5 || $r==4 && $c==5) 
     { 
      $r++; 
      $c=1; 
     } 
    } 
?> 

</tr> 

</table> 

預期輸出:真正需要

| Cell 1 | Cell 2 | Cell 3 | Cell 4 | 
    ..................................... 
    | ABC | PQR | XYZ | MNO | 
    ..................................... 
    | DEF | QRS | UVW | IJK | 

幫助和讚賞。

在此先感謝。

+0

連接到數據庫,查詢數據庫,遍歷結果並準備輸出。我沒有包含代碼,因爲我不想讓人們讀到這些。 – Typoheads

+0

哈哈@Typoheads ......感謝您的回覆。我已經做了連接,數據庫查詢和循環,但無濟於事。我將修改原始問題幷包含我現在的代碼。 – user

回答

0

謝謝你們!我用數組計算出了它。下面是我做到的:

<?php 

    ...Connection to DB... 

    $query="SELECT name, rowcol 
      FROM Teble_I 
      "; 

    $params = array($_REQUEST['query']); 

    $results = sqlsrv_query($conn, $query, array(), array("Scrollable" => 'static')); 

    if($results===false) 
    { die(FormatErrors(sqlsrv_errors())); } 

    if($results===false) 
    { die(FormatErrors(sqlsrv_errors())); } 

// set array 
$array = array(); 

//select and display record from database 
while ($row = sqlsrv_fetch_array($results, SQLSRV_FETCH_ASSOC)) 

    { 
     // add each row returned into an array 
      $array[] = $row; 

    } 

    ?> 

    <body> 
    <table width="200" border="1"> 
    <tr> 
    <td><?php echo $array[0]['name']; ?></td> 
    <td><?php echo $array[1]['name']; ?></td> 
    <td><?php echo $array[2]['name']; ?></td> 
    <td><?php echo $array[3]['name']; ?></td> 
    </tr> 
    </table> 

我好興奮!

0

使用動態sql查詢。

查詢

declare @sql as varchar(max); 

select @sql = 'select ' + stuff(
    (
     select distinct ',max(case ID when ' + cast(ID as varchar(2)) + ' 
       then Name end) as [Cell ' + cast(ID as varchar(2)) + ']' 
     from Table_I 
     for xml path('') 
    ), 
    1, 1, '' 
); 
select @sql += ' from Table_I;' 
execute(@sql); 
+0

謝謝Ullas。老實說,我很感謝你的迴應,但我更加困惑於你的解決方案。我還是PHP的新手,但要儘快學習。 – user

+0

這不是'PHP'。 – Wanderer

+0

這是PHP MSSQL。 – user

0

這可能會滿足您的需求非常簡單的例子。 $data僅用於演示目的,它應該是您的SQL數據。

$data = [ 
    ['ID' => 1, 'Name' => 'ABC', 'Rowcol' => '3-1'],  
    ['ID' => 2, 'Name' => 'PQR', 'Rowcol' => '3-2'], 
    ['ID' => 3, 'Name' => 'XYZ', 'Rowcol' => '3-3'], 
    ['ID' => 4, 'Name' => 'MNO', 'Rowcol' => '3-4'], 
    ['ID' => 5, 'Name' => 'ABC', 'Rowcol' => '4-1'],  
    ['ID' => 6, 'Name' => 'PQR', 'Rowcol' => '4-2'], 
    ['ID' => 7, 'Name' => 'XYZ', 'Rowcol' => '4-3'], 
    ['ID' => 8, 'Name' => 'MNO', 'Rowcol' => '4-4'] 
]; 

$finalData = []; 
foreach($data as $row) { 
    $position = explode('-', $row['Rowcol']); 

    $finalData[$position[0]][$position[1]] = $row['Name']; 
} 
print_r($finalData); 
$output = "<table>"; 
$output .= "<tr>"; 
for($i=1;$i<=count(reset($finalData));$i++) { 
    $output .= "<th>Cell " . $i . "</th>"; 
} 
$output .= "</tr>"; 
foreach($finalData as $row) { 
    $output .= "<tr>"; 
    foreach($row as $column) { 
     $output .= "<td>" . $column . "</td>"; 
    } 
    $output .= "</tr>"; 
} 
$output .= "</table>"; 

print $output; 

$finalData將是一個映射陣列,其具有的每一行和列的條目:

Array 
(
    [3] => Array 
     (
      [1] => ABC 
      [2] => PQR 
      [3] => XYZ 
      [4] => MNO 
     ) 

    [4] => Array 
     (
      [1] => ABC 
      [2] => PQR 
      [3] => XYZ 
      [4] => MNO 
     ) 

) 
+0

再次感謝@Typoheads。我修改了我的問題。我希望這是有道理的,你可以再次幫助我。 – user

+0

請看看我編輯的答案。 – Typoheads

+0

你真棒@Typoheads !!!我試了一下,它的工作原理,但問題是表中的值('$ data')是用戶從表單輸入的值。它們不是預定義的。 我用: '$ row = sqlsrv_fetch_array($ results,SQLSRV_FETCH_ASSOC)' 來獲取表記錄。 – user

0

修改代碼:

<body> 
 
<table width="200" border="1"> 
 
<tr> 
 
<?php 
 
$i=0 
 
while ($row = sqlsrv_fetch_array($results, SQLSRV_FETCH_ASSOC)) 
 
    { 
 
      $i++; 
 
      echo "<td>".$row['name']."</td>"; 
 
      if ($i%4 == 0) 
 
       echo "</tr><tr>"; 
 
    
 
    } 
 

 
?> 
 

 
</tr> 
 
</table>

+0

感謝@Rkand,但表格是預定義的。我之前嘗試過類似於你的代碼的東西,它爲我繪製了一個新表格,而不是填充已經創建的html表格中的單元格。 – user

相關問題