Заполнение внешнего цикла цикла foreach результатами SQL - PullRequest
1 голос
/ 16 декабря 2011

Я новичок в php и пытаюсь заполнить 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 Ответ

1 голос
/ 16 декабря 2011

При извлечении в цикле 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"];
  //-------^^
}

Если я пропустил других в вашем коде, вы также должны изменить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...