Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, localmente a aplicação reconhece todos os comandos foreach e funciona normalmente, após subir no servidor web todos os comandos envolvendo foreach não funcionam.
Alguém sabe por que?
Provavelmente o modo como você cria/requisita o array esteja relacionado a alguma diretiva/versão do PHP...
Muito obrigado pela resposta, cara, eu utilizo normalmente como no manual, observe:
function DBinsercoes($table, array $array_strings, array $array_integers){
foreach ($array_strings as $key => $value){
$monta_ncamps .= $key.', ';
$monta_values .= "'".$value."', ";
}
foreach($array_integers as $key2 => $value2){
$monta_ncamps .= $key2.",";
$monta_values .= $value2.",";
}
$monta_camps = "(".$monta_ncamps."a";
$monta_vals = "(".$monta_values."a";
$monta_values_ajustada = preg_replace('/,a/',' )',$monta_vals);
$monta_camps_ajustada = preg_replace('/,a/',' )',$monta_camps);
$executar = " INSERT INTO $table $monta_camps_ajustada VALUES $monta_values_ajustada ";
return $retorne = DBquery($executar);
}Dá um print_r neste array ai dentro da função e veja o que ele retorna...
Ative os erros do PHP, há alguns probelemas com o seu código.
ini_set('error_reporting', E_ALL);
ini_set('log_errors' , TRUE);
ini_set('html_errors' , TRUE);
ini_set('display_errors' , TRUE);
Lembre-se, também, de adicionar os códigos dentro da tag code, facilitia a visualização no fórum.
Este erro vocês conhecem?
Warning: array_unique() expects parameter 1 to be array, null given in/home/storage/9/29/70
Outra coisa, referente ao problema dos foreachs, digamos que o array tenha cinco registros, eu monto um select com estes registros, o Servidor chega a criar os cinco <options> mas não trás os registros, já depurei o resultado da query, inclusive, se eu utilizar while( $rowSet = mysqli_fetch_assoc($datas)){} mostra certinho.
Valeu mesmo caras
Array ( [escs] => 1 [tel] => 652423432 )
Array ( [nome] => Teste [categors] => P [=> nome@exemplo.com [end] => teste endereco [data] => 2015-02-25 )](mailto:)
Erros ativados, porém não dá erro algum. além de algunsWarningsde outros probleminhas como os que citei acima.
Pessoal kd vcs?
Percebi que você abriu duas vezes o mesmo tópico, com títulos diferentes.
Eu removi o outro tópico visto que esse aqui possui mais respostas.
Também sugiro a leitura das orientações para uma boa participação. No fórum somos voluntários e não pagos para estarmos aqui.
Voltando ao tópico, em um momento você menciona que funciona utilizando:
while( $rowSet = mysqli_fetch_assoc($datas)){}
Depois você diz que com foreach também está funcionando. Mas você fala que não está funcionando.
Warning: array_unique() expects parameter 1 to be array, null given in/home/storage/9/29/70
Esse erro indica que a função espera que o primeiro parâmetro seja um array e NULL está sendo passado.
Quando o cara posta "Cade vcs?" já me broxa. Como se tivessemos obrigação.
Sobre o erro do array_unique, os parâmetros devem ser arrays válidos e preenchidos. Um deles está vazio/nulo.
No final das contas, como o @Gabriel diz, está confuso. O que não está funcionando?
>
Quando o cara posta "Cade vcs?" já me broxa. Como se tivessemos obrigação.
Sobre o erro do array_unique, os parâmetros devem ser arrays válidos e preenchidos. Um deles está vazio/nulo.
No final das contas, como o @Gabriel diz, está confuso. O que não está funcionando?
Obrigado Maykel,
O lance do "Cadê vocês" é desespero mesmo, foi mal cara,
Rapaz, toda minha aplicação funciona perfeitamente localmente, entretanto, o diretor subiu no servidor da empresa, agora, os comandos usando foreach que trata os dados advindos do banco não funcionam, se eu substituir por while( $r = mysqli_fet... funciona.
achei algo na net ontém
http://www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/alternative_php.html
tentei configurar ini_set(“short_open_tag”,”on”); conforme orientação no link.
Mas nada.
Obrigado!
Short open tag só serve para você poder usar <? ao invés de <?php.
Nada a ver com o problema.
O valor de array_strings está vindo populado?
Sim !
array (size=5)
'nomepessoas' => string 'teste' *(length=5)*
'categoriapessoas' => string 'P' *(length=1)*
'emailpessoas' => string 'estes@tes.com' *(length=13)*
'endpessoas' => string 'teste' *(length=5)*
'datainsc' => string '2015-02-25' *(length=10)*Vei, esse tópico ta muito confuso, minha cabeça ta dando um nó kkkkk
Percebi que você colocou um erro da função array_unique(), porém, você não utiliza essa função no código que você passou. Qual é o código que ta dando erro?
Quando você diz que utilizando o while da certo e o foreach não, percebi também que o while da certo pelo fato de que você está puxando dados do banco e o foreach provavelmente os dados vem a partir de uma requisição. Estou certo? Se sim, da um print_r() no array que você utiliza no foreach e vê se ta retornando algo. Erro de foreach é bem lógico, ou o array ta vazio ou você está retornando os valores de forma errada.
Em último caso, debuga esse seu código. Utiliza o xdebug ou então vai colocando o print_r() em cada array e vê se realmente está retornando algo.
$PuxaInstrutores = DBquery(" SELECT *FROM instrutor ");
while($val = mysqli_fetch_assoc($PuxaInstrutores)){
// foreach ($PuxaInstrutores as $val){
echo "<option value='".$val['idinstrutor']."'>".$val['nomeinstrutor']."</option>";
}
//print_r($PuxaInstrutores);
mysqli_result Object ( [current_field] => 0 [field_count] => 6 [lengths] => [num_rows] => 2 [type] => 0 )
// $teste = mysqli_fetch_assoc($PuxaInstrutores);
// var_dump($teste);
o var_dump do teste está Null, mas se eu utilizar o mysqli_fetch_assoc no while funciona. Não entendo.
Fiz este teste - ai o foreach funciona, mas só percorre um array. Acho que estamos chegand perto
$PuxaInstrutores = DBquery(" SELECT *FROM instrutor ");
$test = mysqli_fetch_assoc($PuxaInstrutores);
foreach ($test as $val){
echo "<option value='".$test['idinstrutor']."'>".$test['nomeinstrutor']."</option>";
}
<?php print_r($PuxaInstrutores);
$teste = mysqli_fetch_assoc($PuxaInstrutores);
var_dump($teste);
?>Favor usar a tag code, seu código está bem confuso.
É galera, deixa pra lá, desisto, vou substituir todos os foreach da aplicação.
Agradeço a quem respondeu!
Você que sabe ;)
tanto o foreach quanto o while são estruturas de loop, então você substituir uma por outra não irá resolver seu problema.
você disse que localmente funciona perfeitamente e no servidor não, isso é totalmente válido, pois são dois ambientes totalmente distintos, por exemplo a versão do PHP pode ser diferente, as configuração do PHP podem ser diferentes.
Você precisa de um pouco mais de paciência e seguir as regrs do forúm e com certeza vamos ajudá-lo. ^_^
Boa noite,
Agradeço retomar este tópico, rapaz, substituir os foreach e deu certo.
Percebi umas coisas no system. O foreach funcionava, mas apenas em arrays que fossem montados por um método ou qualquer outra forma. Quando se tratava de um resultado de uma busca no DB, ai meu caro, não rolava, os dados vinham certinho, mas o foreach não percorria.
creio que foi mais um erro no momento de fazer o foreach, isso poderia ser resolvido facilmente se você verificasse se o array é diferente de nulo ou vazio antes de fazer o foreach. mas se resolveu creio que o tópico possa ser fechado.
Só mais uma pergunta, então se eu tivesse feito o simples gesto de colocar uma verificação, o negócio funcionaria? Rapaz, vou testar isto!
Eu disse acredito, visto que um dos var_dumps que você postou o erro era que o array estava retornando null. você verifica, se for diferente de null faz o foreach, caso contrário faz outra coisa ou apenas passa para o próximo.
Entendo, eu tenho uma impressão que tenho é que por ser um object o foreach, em especial o do php do servidor, por algum motivo não funciona.
Irmão, valew, vou marcar um resolv..
Provavelmente o modo como você cria/requisita o array esteja relacionado a alguma diretiva/versão do PHP...