2011-12-16 17 views
1

私はPHPの初心者です。foreachとSQL結果のセリフで3つの異なる配列を設定しようとしています。コードは実際に動作しますが、私は最後の結果だけを印刷し続けます。どういうわけか私は配列をインクリメントするのではなく、何度も繰り返し書きます。問題は、それらを増分する方法です。どんな助けも本当に感謝しています!外部foreachループ配列にSQL結果を代入する

 $online = array();//armazena online 
    $ocupado = array();//armazena ocupado 
    $offline = array();//armazena offline 

$atendentes = mysql_query("SELECT nome FROM atendentes ORDER BY nome")or die(mysql_error()); 
while ($row = mysql_fetch_assoc($atendentes)) {/// Pegar atendentes 
    $atendentedb = array($row["nome"]); 
} 

foreach ($atendentedb as $atendente) {// LOOP SELECAO DAS ATENDENTES; VERIFICAR CADA UMA 

    $names = modWhosonlineCustom::getOnlineUserNames();//pega o nome de quem esta online agora 

    foreach ($names as $name){//DA UM LOOP, EM QUEM ESTA ONLINE E MARCA 

    //*****************************'ACENDER' se a atendente esta online 
    $att = $name->username; 
    $att = strtolower($att); 

    if ($atendente == $att){//esta atendente esta online 
     $att_online = 'yes'; 
     }//esta atendente esta online 
    if ($atendente != $att){//esta nao atendente esta online 
     $att_online = 'no'; 
     }//esta atendente nao esta online 
    //****************************************************************** 

    }//loop foreach quem esta online 

    if ($att_online == 'yes'){//se atendente online 
    $status = mysql_query("SELECT status FROM atendentes WHERE nome = '$atendente'")or die(mysql_error()); 
    while ($row = mysql_fetch_assoc($status)) { 
    $statusdb = $row["status"]; 
    } 
     //**************************** VERIFICA O STATUS 
     if ($statusdb == 'disponivel'){ 
     //******************************* 
     $descricao = mysql_query("SELECT hp_online FROM atendentes WHERE nome = '$atendente'")or die(mysql_error()); 
     while ($row = mysql_fetch_assoc($descricao)) { 
     $online[] = $row['hp_online']; 
      } 
     }// se o status é disponivel 

       //********************************* OCUPADOS   
       if ($statusdb == 'ocupado'){ 
       $descricao = mysql_query("SELECT hp_busy FROM atendentes WHERE nome = '$atendente'")or die(mysql_error()); 
       while ($row = mysql_fetch_assoc($descricao)) { 
       $ocupado[] = $row['hp_busy']; 
       } 
        }// se o status é ocupado 
    }//atendente = yes 

    if ($att_online != 'yes'){//se estiver offline 
     $descricao = mysql_query("SELECT hp_offline, horario FROM atendentes WHERE nome = '$atendente'")or die(mysql_error()); 
     while ($row = mysql_fetch_assoc($descricao)) { 
     $offline[] = $row['hp_offline']; 
     $offline[] = $row['horario']; 
       } 
     }//se att nao é online 

}// loop foreach 

答えて

1

whileループでフェッチするときは、[]構文を使用して配列に値を追加します。それ以外の場合は、各ループ反復で同じ値を上書きしているだけです。

$atendentedb = array(); 
while ($row = mysql_fetch_assoc($atendentes)) {/// Pegar atendentes 
    $atendentedb[] = array($row["nome"]); 
    //--------^^^^ 
} 

// Later 
$statusdb = array(); 
while ($row = mysql_fetch_assoc($status)) { 
    $statusdb[] = $row["status"]; 
    //-------^^ 
} 

コード内で他の人が見逃した場合は、それらも変更する必要があります。

+0

ありがとうマイケル、それは問題を解決します:))) – Adry

関連する問題