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条)

报告相同问题?

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路