2016-09-14 18 views
0

これは非常に基本的かもしれませんが、私は一日以上色々なことを試してみました。出力からのHTMLテーブル

複数の行が存在する場合、複数の行を出力しようとしています。これまでのところ私には最後の行しか示されていません!

私のコードは次のとおりです。基本的に、私はクライアントのIDを検索したい、それがその特定のクライアントのためにあるすべてのケースを返す必要があり

$query = "SELECT CaseID FROM Cases WHERE ClientID='".$_GET['ClientID']."'"; 
$result = mysqli_query($con, $query); 
while($row = mysqli_fetch_array($result)) 
{ 
    $CaseID = $row['CaseID']; 
} 

$result = mysqli_query($con,"SELECT dbUser FROM SalesUser WHERE ID='".$SalesID."';"); 
while($row = mysqli_fetch_array($result)) 
{ 
    $SalesUser = $row['dbUser']; 
} 

?> 

<table class="table table-striped"> 
    <thead> 
    <tr> 
     <th>Case ID</th> 
     <th>Sales User</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td><? echo $CaseID; ?></td> 
     <td><? echo $SalesUser; ?></td> 
    </tr> 
    </tbody> 
</table> 

+0

あなたのクエリはSQLインジェクション攻撃に対して脆弱ですが、これは非常に悪いです!私は "Prepared Statements"とowasp.orgに対するSQLインジェクション攻撃について読んでおくことをお勧めします。 – ChristianF

答えて

1

あなたは配列にあなたのcaseID行を格納する必要があるし、それをループ:

<?php 

$query = "SELECT CaseID FROM Cases WHERE ClientID='".$_GET['ClientID']."'"; 
$result = mysqli_query($con, $query); 
$CaseIDs = array(); 
while($row = mysqli_fetch_array($result)) { 
    $CaseIDs[] = $row['CaseID']; 
} 

$result = mysqli_query($con,"SELECT dbUser FROM SalesUser WHERE ID='".$SalesID."';"); 
while($row = mysqli_fetch_array($result)) { 
    $SalesUser = $row['dbUser']; 
} 

?> 

<table class="table table-striped"> 
    <thead> 
     <tr> 
      <th>Case ID</th> 
     </tr> 
    </thead> 
    <tbody> 
    <?php foreach ($CaseIDs as $CaseID) { ?> 
     <tr> 
      <td><? echo $CaseID; ?></td> 
     </tr> 
    <?php } ?> 
    </tbody> 
</table> 

EDIT:同じことがSalesIDのために行きます。

EDIT 2:一つだけのアレイで:このに実行することがあり、誰のために

<?php 

$query = "SELECT Cases.CaseID, SalesUser.dbUser FROM Cases LEFT JOIN SalesUser ON [...] WHERE [...] "; // Can't help you with your query as I don't know your DB structure 
$result = mysqli_query($con, $query); 
$resultsArray = array(); 
while($row = mysqli_fetch_array($result)) { 
    $resultArray = array('CaseID' => $row['CaseID'], 'dbUser' => $row['dbUser']); 
    $resultsArray[] = $resultArray; 
} 

?> 

<table class="table table-striped"> 
    <thead> 
     <tr> 
      <th>Case ID</th> 
      <th>Sales User</th> 
     </tr> 
    </thead> 
    <tbody> 
    <?php foreach ($resultsArray as $resultArray) { ?> 
     <tr> 
      <td><?php echo $resultArray['CaseID']; ?></td> 
      <td><?php echo $resultArray['dbUser']; ?></td> 
     </tr> 
    <?php } ?> 
    </tbody> 
</table> 
+0

ありがとうございます! SalesUserは別のforeachにありますか?また、SalesUserのために別の配列に名前を付ける必要がありますか? – DisplayName

+0

同じリクエストで 'caseID'と' SalesUser'の両方を取得し、両方を同じ配列に格納することをお勧めします。 – roberto06

+0

限界を押さずに...これがどのようにしてくれたら教えてくれますか?配列でまだかなり新しい – DisplayName

0

、@ roberto06は親切に支援し、それが修正されましたし、取り組んでいます。

$query = "SELECT CaseID, Provider, FROM Cases WHERE ClientID='".$_GET['ClientID']."'"; 
$result = mysqli_query($con, $query); 
$resultsArray = array(); 
while($row = mysqli_fetch_array($result)) 
{ 
    $resultArray = array('CaseID' => $row['CaseID'], 'Provider' => $row['Provider']); 
    $resultsArray[] = $resultArray; 
} 

?> 

<table class="table table-striped"> 
    <thead> 
     <tr> 
      <th>Case ID</th> 
      <th>Provider</th> 
     </tr> 
    </thead> 
    <tbody> 
    <?php foreach ($resultsArray as $resultArray) { ?> 
     <tr> 
      <td><? echo $resultArray['CaseID']; ?></td> 
      <td><? echo $resultArray['Provider']; ?></td> 
     </tr> 
    <?php } ?> 
    </tbody> 
</table> 
関連する問題