Ir para conteúdo

POWERED BY:

Arquivado

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

rioleal

foreach não funciona em Hostinger

Recommended Posts

Pessoal, subi o site que estou finalizando para o Hostinger (servidor gratuito php) para fins de testes antes dar continuidade para a parte de gerenciamento.

 

Acontece que o site está reclamando que um argumento inválido está sendo passado no foreach, mas na minha máquina funciona tranquilo.

O código que estou fazendo é o seguinte:

...
$dados = new pesquisar;
$resultados = $dados->buscarProdutos; //Este é o retorno da consulta com o resultado de tudo o que eu quero: código, preço, descrição.

foreach ($resultados as $obj){
    echo $obj->codigo.'<br/>';
    echo $obj->preco;
    etc...
}

Obs. Este código está em um arquivo php separado e em uma classe.

 

O erro é o seguinte:

Warning: Invalid argument supplied for foreach() in /home/usuario/public_html/func/func.php on line 135

 

Acontece em todas as páginas que contém foreach e todos os meus foreach são neste padrão.

A pergunta é será que é o servidor Hostinger que não suporta este tipo de foreach?

 

Quem quiser consultar, a página de teste do site é: http://lanchesbomtever.esy.es/produtos.php

Repito: No meu PC o site carrega os produtos, preços e faz a paginação corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão é simples, $resultados não é um array, ou seja, o problema está no momento que você gera o array... ai realmente, pode ser que a versão do PHP cause isto, comece exibindo todos os erros no seu script.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar meu código aqui em baixo.

$resultado é um array sim.

Localmente (localhost) funciona perfeitamente. Eu enviei pro servidor Hostinger, justamente, para fazer testes em ambiente on-line porque estava tudo Ok em ambiente local.

public function criaTabelas($numMaxLinhas, $valor) {
    $comando = new comando; //Instancia um objeto
    //Abaixo verifica de qual página a tabela está sendo requisitada e pega o resultado
    $resultado = ($valor == 0 ? $comando->executar('SELECT * FROM...') : $comando->executar('SELECT * FROM...'));
    $totalLinhas = 0;
    $linhas = 1;
        
    foreach ($resultado as $obj):
        $totalLinhas += 1;
        //Etc...
    endforeach;
}

Não coloquei o foreach todo porque percebi que ele nem entra no loop, então o problema deve ser no $resultado mesmo, mas por quê?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido.
O problema foi que eu escrevi a query MySql com o nome das tabelas errado.

 

Exemplo:

SELECT * FROM tblpizzas; //Com minúsculas

 

quando o certo é SELECT * FROM tblPizzas; //Com P maiúsculo

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.