Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
O caso é o seguinte..
Tenho duas tabelas: admin e cadastro
Preciso fazer com que, no momento do cadastro, seja incluída a informação do funcionário (listado no admin) que irá atendê-lo.
Este funcionário deverá ser diferente a cada cadastro e em ordem sequencial.
Fiz então o seguinte:
$busca = mysql_query("SELECT contato_de FROM cadastro ORDER BY cod DESC LIMIT 0,2");
while ($result = mysql_fetch_array($busca)) {
$contato_de = $result['contato_de'];
$ult_func[] = $contato_de; // pega os doís últimos funcionários no campo contato_de e coloca numa array
}
echo '<br />Últimos 2 funcionários: ';$bsc = mysql_query("SELECT * FROM admin WHERE nivel_acesso = 1");
while ($n = mysql_fetch_array($bsc)) {
$nome = $n['nome'];
$nomes_func[] = $nome; // pega os funcionários do admin que tem nível de acesso = 1
}
echo '<br />Funcionários: ';
print_r($nomes_func); // apenas para verificar se está trazendo todos os funcionários corretamente e está.
$func_atual = array_diff($ult_func, $nomes_func); // faz a diferença entre as arrays
echo '<br />Funcionário Atual: ';
print_r($func_atual); // informa o funcionário da vez
o que está retornando então é o seguinte:
>
Últimos 2 funcionários: Array ( [0] => Paulo [1] => kelly )
Funcionários: Array ( [0] => Kelly [1] => Paulo [2] => Daniel )
Funcionário Atual: Array ( [1] => kelly )
ou seja... o funcionário atual deveria ser Daniel, e não kelly..
Obs.: Estou verificando os dois últimos funcionarios cadastros pois, como se pode ver eu só tenho 3 funcionários para atender os clientes.. então, eu preciso ver apenas os últimos dois e incluir o terceiro.
Renato obrigado pelo retorno porém, como se pode observar no meu post, já estou utilizando a função array_diff e não está retornando o valor correto.
Não entendi o porquê do array_fill se as arrays estão sendo populadas com os resultados das querys
CONCLUSÃO
Não tem nada de errado no código.. está tudo certo.. o problema na verdade eram as informações que estavam cadastradas no banco de dados para o funcionário Kelly.
No admin estava "Kelly" e no cadastro "kelly" (K minúsculo).
ajustado o cadastramento correto através dos nomes dos funcionários vindos do admin resolve-se o 'problema' além do ajuste da linha
$func_atual = array_diff($ult_func, $nomes_func); // faz a diferença entre as arrays
para:
$func_atual = array_diff($nomes_func, $ult_func); // faz a diferença entre as arraysA diferença sempre da array com maior quantidade de registros pela array com menor quantidade de registros. Não sei afirmar se isto é obrigatório, porque acabei não testando o contrário, mas pelo menos é o mais lógico.
array_diff - Analisa as diferenças entre arrays
array_fill— Preenche um array com valores