2017-05-10 17 views
0

データベースからデータを印刷するテーブルがあります。同じ名前の複数の外観が存在することがあります。 enter image description here ご覧のとおり、異なる名前のプロセスがあります。ここに私のテーブルには、次のとおりです。同じ行の2番目の出現時に列内に異なる値を表示

<table> 
    <?php 
    $result = getPhData(); 
     echo ' 
      <thead> 
       <tr> 
        <th>Staff ID</th> 
        <th>Full Name</th> 
        <th>Nicknames</th> 
        <th>Employment type</th> 
        <th>Dept:Prod/Other</th> 
        <th>Number of projects</th> 
        <th>Many projects?</th> 
        <th>Ratio per project</th> 
        <th>Project</th> 
        <th>Process</th> 
        <th>Leader</th> 
       </tr> 
      </thead> 
      <?php ';       
    ?> 
     <tbody> 
      <?php  
       $count = 0; 
       if (mysqli_num_rows($result) > 0) 
       { 
        while($row = mysqli_fetch_array($result)) 
        { 
         $staffid=$row["staff_id"]; 
         $longnm=$row["longname"]; 
         $usrnm=$row["username"]; 
         $user_type=$row["user_type"]; 
         $number=$row["number"]; 
         $title=$row["title"]; 
         $code=$row["code"]; 
         $process=$row["process"]; 
         $role=$row["role"]; 
         $ratio=1/$number; 
      ?> 
      <tr valign="top"> 
       <td><?php echo $staffid; ?></td> 
       <td><?php echo $longnm; ?></td> 
       <td><?php echo $usrnm; ?></td> 
       <td><?php echo $user_type; ?></td> 
       <td> 
        <?php if($code=='OPD'){ echo "Others";} 
         else{echo "Prod";} 
        ?> 
       </td> 
       <td><?php echo $number; ?></td> 
       <td> 
        <?php if($number==1){ echo "First Occurrence";} 
         else{echo "Duplicate";} 
        ?> 
       </td> 
       <td><?php echo $ratio; ?></td> 
       <td><?php echo $title; ?></td> 
       <td> 
        <?php if($process == NULL) 
        { echo $role; } 
        else{ echo $process; } 
        ?> 
       </td> 
       <td> 
        <?php if($role == 'ld') 
        { echo "Yes"; } 
        else{ echo "";}?> 
       </td> 
      </tr> 
      <?php 
        $count++;} 

       } 
      ?> 
     </tbody> 
    </table> 

私が欲しいものは、同じIDがテーブルに二/第三などの時間を表示されたら、「複製」印刷することです。どのように私はPHPを介してこれを達成することができますか?ありがとう

+0

通常、私はアプリケーションコードでこの種の問題を扱うことを最初に主張していますが、実際には私はこれをクエリで実行すると思います。つまり、ループでは、現在の行の値を格納するだけで済みます。次の行の値が格納された値と等しい場合は、 'duplicate'をエコーし​​ます。 – Strawberry

答えて

1
​​

ここで、複製はフルネームの横に表示されます。

1

おそらく、このIDを使用して、配列でそれを行うことができますので、

<?php  
      $count = 0; 
      if (mysqli_num_rows($result) > 0) 
      { 
       $parsedId = array(); 
       while($row = mysqli_fetch_array($result)) 
       { 
        if(in_array($row['id'], $parsedId)) 
         //DUPLICATE 
        else 
         array_push($parsedId, $row['id']); 
        /*CODE */ 
       } 
      } 
     ?> 
1

テーブルにすでに存在する場合は、チェックのために後に使用するすべてのIDを追加するあなたの中で二番目の配列を作成する必要があります。いくつかの配列の従業員/人物のIDを収集し、IDがin_arrayであるかどうかを確認します。

<?php 
    $staffs = array(); 

    while($row = mysqli_fetch_array($result)){ 
      $staffid = $row["staff_id"]; 

      $staffs[] = $staffid; 

     //// your table code. 

     <td> 
       <?php if(in_array($row["staff_id"], $staffs)){ 
         echo "First Occurrence"; 
        } else{ 
         echo "Duplicate"; 
        } 
       ?> 
     </td> 
    } 

    ?> 

もう1つの方法は、SQLクエリで行うことができます。 IF THENステートメント。

関連する問題