2016-04-04 17 views
0

Bir mysql sorgusuna dayanan açık biletlere sahip kullanıcıları çıkaran bir süre döngüsüm var. Ayrıca tüm açık biletleri veren başka bir zaman döngüsüne sahibim. İkisi de çalışıyor. İlk ikincisini ilk defa, her kullanıcıya açık biletlerini listeleyebileceğim şekilde koymaya çalıştım. Ben in_array(). Problem kalanı için ilk kullanıcı ve biletleri, ama doesnt çıkışını olmasıdır" kullanılmış. Bu çıkış ı göreBelirli bir veri çıkışı için bir while döngüsünde belirli bir süre kullanılması

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) 

İlk kullanıcı çıkışları olsun

$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 />"; 
} 

gerisi çok değil planlamak, bunlarla i aşağıdaki kodu deneyin

+0

kullanın İlk önce son döngüyü yorumlayıp tekrar deneyin. –

+0

Sorgularınızın çıktısını ayrı olarak yayınlayabilir miyim? – atefth

+0

Dahili süre süren ilk çalıştırmanızda COMPLETE '$ ticket' sonuç kümesini kullanıyorsunuz. Yani, – RiggsFolly

cevap

0

Teşekkür eksik ben herhangi bir fikir.

$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 />"; 
    } 
} 

} 

mysqli_fetch_assoc yalnızca iletme için sorguyu while döngüsünde yürütün. Yani, döngü her çalıştığında yürütmeniz gerekir. YA sadece sadece bu geçerli kullanıcı için bilet alabilirsiniz:

$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 />"; 
} 
+0

Bunu önerecekseniz, 'username' değerini iç sorguya ekleyecekseniz, yalnızca ilgili satırları almanız da bir ** lot ** anlam ifade edecektir. Ardından, "in_array" aptal testini kaldırabilir ve iç dizinin her çalıştırılması için gerekli olmayan NO satırını döndürürsünüz. – RiggsFolly

+0

@RiggsFolly Right – mega6382

0

Çok kötü bir uygulamadır, döngüler içinde db veri seçin. Çok sayıda satırınız varsa, kodunuz çok yavaş olacaktır. Her iki tablodan veri alacak tek bir seçim yapmalısınız. JOIN (http://www.w3schools.com/sql/sql_join.asp)

İlgili konular