2011-12-16 2 views
1

Я php newbee, и я пытаюсь заполнить 3 разных массива серией результатов foreach и SQL. Код действительно работает, но я продолжаю печатать только последний результат. Каким-то образом я не увеличиваю массивы, а просто повторяю их снова и снова. Вопрос в том, как их увеличить? Любая помощь действительно ценится!Заполнение массива внешних foreach loop с результатами 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

При получении в цикле в то время, используйте синтаксис [] для добавления значения в массив. В противном случае вы просто переписываете одно и то же значение на каждой итерации цикла.

$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

Смежные вопросы