2017-10-08 19 views
0

OCIコネクタを介してSQL問合せでOracleデータベースを問い合せています。私は1つの列の値に基づいて返す配列を分割するために探しています。値に基づいてOCIの表を分割する

enter image description here

したがって、この例では、「場所」列の値に基づいて、私は分離のテーブルをしたいと思います。 if(($ floorid == $ row ['LOCATION'])を使用してフロアIDを値の1つに設定して、場所の1つを区切ることができましたが、これをすべての可能性について再現することはできませんヘッダを複製する任意の助けいただければ幸い

$stid = oci_parse($conn, $query); 
oci_bind_by_name($stid, ":getparam", $safeparam1); 

$r = oci_execute($stid); 

print '<hr>'; 
print '<table class="style1">'; 
Print '<tr><th>Name</th><th>Location</th><th>Colour</th></tr>'; 


while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS + OCI_ASSOC)) { 
    print '<tr>'; 
    foreach($row as $item) { 
     print '<td>' . ($item !== null ? htmlentities($item, ENT_QUOTES) : 
'') . '</td>'; 
    } 

    print '</tr>'; 
} 

print '</div>'; 

oci_free_statement($stid); 
oci_close($conn); 

答えて

0

LOCATIONフィールドで結果を注文するあなたのSQLを変更します。

order by location 

を次に、あなたのwhileループでは、ときLOCATIONの値が変化を検出し、新しい表を開始:

$stid = oci_parse($conn, $query); 
oci_bind_by_name($stid, ":getparam", $safeparam1); 

$r = oci_execute($stid); 

print '<hr>'; 
print '<table class="style1">'; 
print '<tr><th>Name</th><th>Location</th><th>Colour</th></tr>'; 

$location = -1; // keeps track of the location change. 

while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS + OCI_ASSOC)) { 
    if ($location == -1) { 
     // seems to be the first row; set $location so we don't end up with an empty first table. 
     $location = $row['LOCATION']; 
    } 

    if ($row['LOCATION'] != $location) { 
     $location = $row['LOCATION']; 
     // close previous table; start new table. 
     print '</table><table class="style1">'; 
     print '<tr><th>Name</th><th>Location</th><th>Colour</th></tr>'; 
    } 

    print '<tr>'; 
    foreach ($row as $item) { 
     print '<td>' . ($item !== null ? htmlentities($item, ENT_QUOTES) : '') . '</td>'; 
    } 

    print '</tr>'; 
} 

print '</table>'; 

oci_free_statement($stid); 
oci_close($conn); 
+0

@ JamesPavettこれに関するフィードバックはありますか? – timclutton

関連する問題