Ir para conteúdo

Arquivado

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

milordzin

Como remover o erro Warning: Invalid argument supplied for foreach() i

Recommended Posts

Como poderia remover o erro Warning: Invalid argument supplied for foreach() in /var/www/PlanejamentoEstrategico/view/pgs/indoperacionais/relIndOperacionais.php on line 241 que é esse ai

foreach($_indoperacionais as $_indoperacional)

todo o código

<?php
/* codigo para gerar os paramentros */
$ano = $_POST["ano"];
$_perspectiva = $_POST["perspectiva"];
if ($_POST["semestre"] == "primeiro") {
$_parametros = array (
"ano" => $ano,
"mes1" => 1, "mes2" => 2, "mes3" => 3,
"mes4" => 4, "mes5" => 5, "mes6" => 6,
"nomeMes1" => "Janeiro", "nomeMes2" => "Fervereiro", "nomeMes3" => "Março",
"nomeMes4" => "Abril", "nomeMes5" => "Maio", "nomeMes6" => "Junho",
"perspectiva" => $_perspectiva);
}else if ($_POST["semestre"] == "segundo") {
$_parametros = array (
"ano" => $ano,
"mes1" => 7, "mes2" => 8, "mes3" => 9,
"mes4" => 10, "mes5" => 11, "mes6" => 12,
"nomeMes1" => "Julho", "nomeMes2" => "Agosto", "nomeMes3" => "Setembro",
"nomeMes4" => "Outubro", "nomeMes5" => "Novembro", "nomeMes6" => "Dezembro",
"perspectiva" => $_perspectiva);
}else {
$error = "ERRO";
}
//echo "<pre>"; print_r ($_POST);exit;
//Instanciando a classe
$_model = new model_Indoperacionais();
$_indoperacionais = $_model->RetornaIndoperacionais($ano,$_parametros,$_perspectiva);
$_indoperacionais = $_model->RetornaPerspectivas($_perspectiva);
echo '<h3 align=center>'.$_POST["perspectiva"].'</h3>';
echo '<h1 align=center>'.($ano).'</h1>';
echo '<h6 align=center>'.$_POST["semestre"].'</h6>';
//echo "</pre>"; print_r($_indoperacional); exit;
foreach($_indoperacionais as $_indoperacional){
echo '<tr>';
echo '<td align=center>'.$_indoperacional['nome_tema'].'</td>';
echo '<td align=center>'.$_indoperacional['indicadores'].'</td>';
echo '<td align=center>'.$_indoperacional['responsavel'].'</td>';
echo '<td align=center>'.$_indoperacional['metas'].'</td>';
echo '<td align=center>'.$_indoperacional['01'].'</td>';
echo '<td align=center>'.$_indoperacional['02'].'</td>';
echo '<td align=center>'.$_indoperacional['03'].'</td>';
echo '<td align=center>'.$_indoperacional['04'].'</td>';
echo '<td align=center>'.$_indoperacional['05'].'</td>';
echo '<td align=center>'.$_indoperacional['06'].'</td>';
echo '</tr>';
//print_r($_parametros);
}
?>
class model_Indoperacionais extends MysqlConnection{
private $indoperacionais;
public function RetornaIndoperacionais($ano,$_parametros,$_perspectiva){
if($ano == "2016"){
$_base = "pla_est_2016";
}else{
$_base = "pla_est";
}
$Query = ("SELECT i.codiniciativa,
te.nome as nome_tema,
te.codtemaestrategico as cod_te,
p.observacoes as per_obs,
te.sequencia as tem_sequencia,
p.sigla as per_sigla,
p.nome as nome_perspectiva,
p.codperspectiva as cod_perspectiva,
o.sequencia as sequencia_obj,
o.codobjetivo as cod_obj,
o.nome as nome_obj,concat(p.sigla, ' ', te.sequencia,
'.', o.sequencia, '.',i.sequencia) as codigo,i.nome as nom_iniciativa,
i.sequencia as iniciativa_sequencia,
i.metas,i.responsavel,i.indicadores,
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) = $ano AND month(a.data) = ".$_parametros['mes1']." ORDER BY a.data DESC LIMIT 1),
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) <= $ano AND month(a.data) < ".$_parametros['mes1']." AND curdate() >= '$ano-".$_parametros['mes1']."-01' ORDER BY a.data DESC LIMIT 1), 0)) as '01',
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) = $ano AND month(a.data) = ".$_parametros['mes2']." ORDER BY a.data DESC LIMIT 1),
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) <= $ano AND month(a.data) < ".$_parametros['mes2']." AND curdate() >= '$ano-".$_parametros['mes2']."-01' ORDER BY a.data DESC LIMIT 1), 0)) as '02',
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) = $ano AND month(a.data) = ".$_parametros['mes3']." ORDER BY a.data DESC LIMIT 1),
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) <= $ano AND month(a.data) < ".$_parametros['mes3']." AND curdate() >= '$ano-".$_parametros['mes3']."-01' ORDER BY a.data DESC LIMIT 1), 0)) as '03',
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) = $ano AND month(a.data) = ".$_parametros['mes4']." ORDER BY a.data DESC LIMIT 1),
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) <= $ano AND month(a.data) < ".$_parametros['mes4']." AND curdate() >= '$ano-".$_parametros['mes4']."-01' ORDER BY a.data DESC LIMIT 1), 0)) as '04',
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) = $ano AND month(a.data) = ".$_parametros['mes5']." ORDER BY a.data DESC LIMIT 1),
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) <= $ano AND month(a.data) < ".$_parametros['mes5']." AND curdate() >= '$ano-".$_parametros['mes5']."-01' ORDER BY a.data DESC LIMIT 1), 0)) as '05',
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) = $ano AND month(a.data) = ".$_parametros['mes6']." ORDER BY a.data DESC LIMIT 1),
ifnull((SELECT a.percentual FROM $_base.avaliacoes a WHERE a.status = 'A' AND a.codiniciativa = i.codiniciativa AND year(a.data) <= $ano AND month(a.data) <".$_parametros['mes6']." AND curdate() >= '$ano-".$_parametros['mes6']."-01' ORDER BY a.data DESC LIMIT 1), 0)) as '06'
FROM $_base.perspectivas p
LEFT JOIN $_base.temasestrategicos te ON p.codperspectiva = te.codperspectiva
LEFT JOIN $_base.objetivos o ON te.codtemaestrategico = o.codtemaestrategico
LEFT JOIN $_base.iniciativas i ON o.codobjetivo = i.codobjetivo
WHERE p.codperspectiva = '$_perspectiva' AND p.status = 'A' AND te.status = 'A' AND o.status = 'A' AND i.status = 'A'ORDER BY p.sequencia ASC,te.sequencia ASC,
o.sequencia ASC,CAST(i.sequencia AS DECIMAL) ASC");
//echo "</pre>"; print_r($_perspectiva); exit;
try {
$this->search = $this->MySql->prepare($Query);
//$this->search->bindParam(":nome", $this->indoperacionais);
$this->search->execute();
} catch(PDOException $e) {
die($e->getMessage());
}
$_result = $this->search->fetchAll(PDO::FETCH_ASSOC);
//echo "</pre>"; print_r($_result); exit;
return $_result;
}
Public function RetornaPerspectivas($_perspectiva){
$Query = " Select nome FROM perspectivas WHERE codperspectiva = '$_perspectiva'" ;
try {
$this->search = $this->MySql->prepare($Query);
$this->search->execute();
} catch(PDOException $e) {
die($e->getMessage());
}
$_result = $this->search->fetchAll(PDO::FETCH_ASSOC);
return $_perspectiva;
}
}
preciso da ajuda de vocês .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se o array não está vazio antes de executar o foreach, sempre verifico antes de fazer o loop em qualquer array, justamente para evitar que esse warning seja gerado:

if(!empty($_indoperacionais)) {
    foreach($_indoperacionais as [...]

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 erros

Voce tem 2 variaveis com o mesmo nome

1:

$_indoperacionais = $_model->RetornaIndoperacionais($ano,$_parametros,$_perspectiva);
$_indoperacionais = $_model->RetornaPerspectivas($_perspectiva);
2.
quando você executa foreach($_indoperacionais as $_indoperacional)
ele pega o retorno da RetornaPerspectivas que esta definido como return $_perspectiva; altere para return $_result;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se o array não está vazio antes de executar o foreach, sempre verifico antes de fazer o loop em qualquer array, justamente para evitar que esse warning seja gerado:

if(!empty($_indoperacionais)) {
    foreach($_indoperacionais as [...]

Bom eu fiz o echo "</pre>"; print_r($_indoperacional); exit; tanto para $_perspectiva quanto para $_indoperacionais ele retorna o esperado , mas o $_indoperacional não dar nada . Como posso verificar isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 erros

Voce tem 2 variaveis com o mesmo nome

1:

$_indoperacionais = $_model->RetornaIndoperacionais($ano,$_parametros,$_perspectiva);
$_indoperacionais = $_model->RetornaPerspectivas($_perspectiva);
2.
quando você executa foreach($_indoperacionais as $_indoperacional)
ele pega o retorno da RetornaPerspectivas que esta definido como return $_perspectiva; altere para return $_result;

E como faço para as variaveis com o mesmo nome ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muda o nome, oras... ¬¬

bom tá retornando quase tudo depois que alterei o nome de umas das variaveis . Só que em vez de retorna o nome da perspectiva lá em echo '<h3 align=center>'.$_POST["perspectiva"].'</h3>'; ele retorna o numero que é equivalente . Como poderia verificar isso .

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom tá retornando quase tudo depois que alterei o nome de umas das variaveis . Só que em vez de retorna o nome da perspectiva lá em echo '<h3 align=center>'.$_POST["perspectiva"].'</h3>'; ele retorna o numero que é equivalente . Como poderia verificar isso .

var_dump($_POST["perspectiva"]);

e veja oque esta retornando

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
×

Informação importante

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