Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ldovale

Foreach

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente o modo como você cria/requisita o array esteja relacionado a alguma diretiva/versão do PHP...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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);


}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um print_r neste array ai dentro da função e veja o que ele retorna...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 )

 

Rapaz, agora que percebi que esta função funciona perfeitamente, o que não está funcionando é para dados advindos do banco.

 

Erros ativados, porém não dá erro algum. além de alguns Warnings de outros probleminhas como os que citei acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
$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);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Favor usar a tag code, seu código está bem confuso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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. ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.