dongshanji3102 2016-04-04 15:29
浏览 44
已采纳

在另一个while循环中使用while循环来输出特定数据

I have a while loop that outputs users that have open tickets based on a mysql query. I also have another while loop that outputs all open tickets. They both work. I tried to put the second while loop in the first in such a way that i can list each user with their open tickets. I used "in_array(). The problem is that it Outputs the first user and tickets, but doesnt for the rest.

$dbc = mysqli_connect('localhost', 'root', 'root', 'tickets2') or die('Error connecting to Mysql Server');

$query1 = " SELECT DISTINCT number, username, subject, o.name " .
"FROM ost_ticket t, ost_staff s, ost_ticket__cdata d, ost_user u, ost_organization o " .
"WHERE status_id = 1 AND t.staff_id=s.staff_id AND d.ticket_id=t.ticket_id AND u.id=t.user_id AND o.id=u.org_id " .
"ORDER by username" ;

$query2 = " SELECT DISTINCT username " .
"FROM ost_ticket t, ost_staff s, ost_ticket__cdata d, ost_user u, ost_organization o " .
"WHERE status_id = 1 AND t.staff_id=s.staff_id AND d.ticket_id=t.ticket_id AND u.id=t.user_id AND o.id=u.org_id " .
"ORDER by username" ;

$tickets = mysqli_query($dbc, $query1) or die ('Error');

$users = mysqli_query($dbc, $query2) or die ('Error');

while($row = mysqli_fetch_assoc($users)){
  print_r($row);
  echo "<br />";
  $user = $row['username'];
   while($row1 = mysqli_fetch_assoc($tickets)){
   if(in_array($user, $row1)){
     print_r($row1);
     echo "<br />";
    }
 }

}

while($row1 = mysqli_fetch_assoc($tickets)){
print_r($row1);
echo "<br />";
}

This is the output i get

Array ( [username] => aolusola )
Array ( [number] => 905495 [username] => aolusola [subject] => PAssword change Tool [name] =>  A Hotel )
Array ( [number] => 770279 [username] => aolusola [subject] => Laundry posting  [name] => Bfish Hotel )
Array ( [number] => 972356 [username] => aolusola [subject] => New TC  RVC 8 [name] => Inter Hotel )
Array ( [username] => cakaluka )
Array ( [username] => fmbah )
Array ( [username] => habel )
Array ( [username] => iadebanjo )
Array ( [username] => iakintade )
Array ( [username] => jajani )
Array ( [username] => jakinmosin )
Array ( [username] => jomaivboje )
Array ( [username] => logunleye )
Array ( [username] => oogundimu )
Array ( [username] => panawe )
Array ( [username] => solushola )
Array ( [username] => ugouvietesivwi )

The First user outputs according to plan, but the rest not so much. Any Idea what i am missing

Thanks

  • 写回答

2条回答 默认 最新

  • duangan6133 2016-04-04 15:54
    关注

    Try the following code:

    $users = mysqli_query($dbc, $query2) or die ('Error');
    
    while($row = mysqli_fetch_assoc($users)){
      print_r($row);
      echo "<br />";
      $user = $row['username'];
    $tickets = mysqli_query($dbc, $query1) or die ('Error');
       while($row1 = mysqli_fetch_assoc($tickets)){
       if(in_array($user, $row1)){
         print_r($row1);
         echo "<br />";
        }
     }
    
    }
    

    Execute the query inside the while loop, because mysqli_fetch_assoc is forward only. So, you need to execute it every time the loop runs. OR you can only get tickets for current user only by this:

    $dbc = mysqli_connect('localhost', 'root', 'root', 'tickets2') or die('Error connecting to Mysql Server');
    
    $query1 = " SELECT DISTINCT number, username, subject, o.name " .
    "FROM ost_ticket t, ost_staff s, ost_ticket__cdata d, ost_user u, ost_organization o " .
    "WHERE status_id = 1 AND t.staff_id=s.staff_id AND d.ticket_id=t.ticket_id AND u.id=t.user_id AND o.id=u.org_id " .
    "ORDER by username";
    
    $query2 = " SELECT DISTINCT username " .
    "FROM ost_ticket t, ost_staff s, ost_ticket__cdata d, ost_user u, ost_organization o " .
    "WHERE status_id = 1 AND t.staff_id=s.staff_id AND d.ticket_id=t.ticket_id AND u.id=t.user_id AND o.id=u.org_id " .
    "ORDER by username";
    
    $users = mysqli_query($dbc, $query2) or die ('Error');
    
    while($row = mysqli_fetch_assoc($users)){
      print_r($row);
      echo "<br />";
      $user = $row['username'];
    $query3 = " SELECT DISTINCT number, username, subject, o.name " .
    "FROM ost_ticket t, ost_staff s, ost_ticket__cdata d, ost_user u, ost_organization o " .
    "WHERE `user_name` = '{$user}' status_id = 1 AND t.staff_id=s.staff_id AND d.ticket_id=t.ticket_id AND u.id=t.user_id AND o.id=u.org_id " .
    "ORDER by username" ;
    $tickets = mysqli_query($dbc, $query1) or die ('Error');
       while($row1 = mysqli_fetch_assoc($tickets)){
         print_r($row1);
         echo "<br />";
     }
    
    }
    
    $tickets = mysqli_query($dbc, $query1) or die ('Error');
    while($row1 = mysqli_fetch_assoc($tickets)){
    print_r($row1);
    echo "<br />";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!