2017-05-09 5 views
0

"ドメイン"があります。ドメインは「電話番号」を所有しています。私がしようとしているのは、関連するドメインと一緒にすべての数字をグループ化することです。TR行を共通の値でグループ化しようとしています

私は、1つのドメインが完了したとき、もう1つのドメインをキューに入れて、1つのTRを終了して別のドメインを開始して自分のバックグラウンドにグループ化できるようにする方法カラーまたはテーブル。

私のコードの試み:

$domainsqlquery = "SELECT DOMAIN FROM phone_numbers WHERE `RESELLER_ID` ='".$RID."'"; 
    if ($domainresult = mysqli_query($conn, $domainsqlquery)) { 
     if (mysqli_num_rows($domainresult) > 0) { 
      while ($domainrow = mysqli_fetch_assoc($domainresult)) { 
       echo '<tr'.(($c = !$c)?' class="odd"':' class="even"').">"; 
       $sqlquery = "SELECT * FROM phone_numbers WHERE `RESELLER_ID` ='".$RID."' AND `DOMAIN` ='".$domainrow['DOMAIN']."'"; 
       if ($result = mysqli_query($conn, $sqlquery)) { 
        if(mysqli_num_rows($result)>0){ 
         while ($row = mysqli_fetch_assoc($result)) { 
          echo "<td>"; 
          echo "<form action='' method='POST'>"; 
          echo "<input name='R_number' value='".$row['NUMBER']."' type='hidden'>"; 
          echo "<input name='N_ID' value='".$row['ID']."' type='hidden'>"; 
          echo $row['DOMAIN'] ." - ". $row['NUMBER'] ." - Cost: <input name='R_cost' value=".$row['COST']." style='width:50px'> <input type='submit' name='btn-drop' value='X'> &nbsp; <input type='submit' name='btn-update' value='UPDATE'> &nbsp;&nbsp; <a href=\"domain=".$row['DOMAIN']."&caldate=04\" target='_blank'>Open Report</a><br>"; 
          echo "</form>"; 
          echo "</td>"; 
         } 
        } 
       } 
       echo "</tr>"; 
      } 
     } 
+0

'($ c =!$ c)とは何ですか?あなたは '$ c'を定義した場所を表示しませんし、代入演算子' = 'を持っているので、' $ c'を '!$ c'に設定します。 – Sean

+0

あなたのtrは内側のループの内側にあるべきだと思います。それ以外の場合は、同じ番号を持つ必要があります。各ドメインの電話番号のまた、ループ内でクエリを実行しないでください。 – manian

+0

このドメインのすべての電話番号を同じ行の列として各ドメインに1つの行を追加するか、各電話番号に1つの行を追加しますか? – manian

答えて

1

私はあなたではなく、データベースの結果をループが辞書(多次元配列)を作成する必要があり、代わりに、データベースからの結果をループし、HTMLを構築することをお勧め結果の私はあなたがテーブルを複数回クエリする必要はないと思う。

結果の配列を作成します。単一のクエリで

$results = []; 

を、あなたは、各行のドメイン情報と、すべての電話番号の配列を持つことになります。

この配列をループし、$resultsアレイを構築します。これにより

while ($row = mysqli_fetch_assoc($result)) { 
    if (!isset($results[$row['DOMAIN']])) { 
    $results[$row['DOMAIN']] = []; 
    } 

    $results[$row['DOMAIN']][] = $row; 
} 

は、次の形式の多次元配列があります:

[ 
    'DOMAIN1': [ 
    [], // row1 
    [], // row2 
    ], 
    'DOMAIN2': [ 
    [], 
    [], 
    ], 
] 

あなたは今、この配列によって簡単にループは、配列の最初のレベルはあなたを与えることができるか、ドメイン行は入っています。

+0

ありがとうございます。私は最終的に正しいforeach文を作成し、必要なときに行うことができました。少し時間がかかりましたが、私はそれを得ました! –

関連する問題