Jump to content
Fórum Script Brasil
  • 0

Warning: Cannot modify header information...


joanita
 Share

Question

boa noite, estou constantemente a receber esta mensagem, já não entendo o motivo!

já coloquei isto no topo da pagina:  <?PHP ob_start(); session_start(); ?>

o PHP.INI esta:

register_globals = On

extension=pdo.so

extension=pdo_sqlite.so

extension=sqlite.so

extension=pdo_mysql.so

session.bug_compat_42=off
session.cache_limiter=public

e nada... sempre esta mensagem irritante!

Warning: Cannot modify header information - headers already sent by...

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Verifica se não estás a escrever algo para o ecrã (echo ou print) antes de chamares a função header. Às vezes basta um espaço (ou outro caracter) antes da abertura da tag <?php para haver problemas.

Para além disso, vê se alguma das hipóteses elencadas nesta resposta resolvem o problema.

Link to comment
Share on other sites

  • 0

Beraldo, então mas se eu tenho que chamar o header após chamar a função... como faço isso? por ex:

<?php
class Produtos {
    public $tabela;
    public $id;
    public $conexaoDB;
    public $quantidadeatual;
    
    #Construtor - Liga-se e seleciona a tabela
    function __construct($tabela="produto",$produto="0") {$this->conexaoDB=new DB();
        $this->tabela=$tabela;
        $produto=$this->conexaoDB->PesquisaUnica($this->tabela,$produto);
        $this->quantidadeatual=$produto['stock_atual'];
        }
    
    #Adiciona ou chama o o metodo para atualizacao dos produtos
    function Cadastrar($id=""){$funcao=(empty($id))?"Insert into":"Update";
        $where=(empty($id))?" ":" where id = $id";
        $dados=$_POST;
            $campos="";        
        foreach ($dados as $campo=>$valor){
            $campos.=$campo."='$valor', ";            
        }
        $campos=strip_tags($campos);
        $campos=substr($campos,0,-2);
        $this->conexaoDB->ExecutaQuery("$funcao $this->tabela SET $campos $where");
        header("Location:index.php");
    }
    
    #Atualiza produto
    function Atualizar($id){$this->Cadastrar($id);
    }
    
    #Apaga produto
    function Deletar($id){$this->conexaoDB->ExecutaQuery("Delete from $this->tabela where id=$id");
        echo '<p align="center"><img src="imagens/alert.png"><br><b><span style="color:#003333;">'.$produto['nome']." Produto Eliminado com sucesso!</span></b></p>";
        header("Location:index.php?url=$this->tabela&acao=listar");
        }
    
    #Lista produtos
    function Listar(){$produtos=$this->conexaoDB->PesquisaCampos("id, nome, categoria, stock_minimo, stock_atual", $this->tabela);
        echo '<h1>Listando '.$this->tabela.'</h1>';
        echo '<hr size="1" color="orange">';
        echo '<table border="0" width="100%" align="center">';
        echo '<tr>';
        echo '<td class="header">ID Produto</td><td class="header">Nome</td><td class="header">ID Categoria</td><td class="header">Stock Minimo</td><td class="header">Stock Atual</td><td align="right" class="header">Gerir</td>';
        echo '</tr>';
        while($produto=mysql_fetch_array($produtos)){
            echo '<tr>';
            echo '<td>'.$produto['id'].'</td>';
            echo '<td>'.$produto['nome'].'</td>';
            echo '<td>'.$produto['categoria'].'</td>';
            echo '<td>'.$produto['stock_minimo'].'</td>';
            echo '<td>'.$produto['stock_atual'].'</td>';
            echo '<td align="right"><a href="index.php?url='.$this->tabela.'&acao=formeditar&id='.$produto['id'].'"> <img src="imagens/editar.png"></a>';
            echo '<a href="index.php?url='.$this->tabela.'&acao=deletar&id='.$produto['id'].'"> <img src="imagens/apagar.png"> </a></td>';
            echo '</tr>';
        }
            echo '</table>';
            echo '<hr size="1" color="orange">';
    }
    
    function Entrada($produto,$quantidade){$dados=$_POST;
        foreach ($dados as $campo=>$valor){
        if($campo=='data'){$valor="NOW()";    
        }
            $campos.=$campo."='$valor' ,";            
    }
        $campos=strip_tags($campos);
        $campos=substr($campos,0,-2);
        $campos=str_replace("'NOW()'","NOW()",$campos);
        $id=mysql_insert_id($this->conexaoDB->ExecutaQuery("Insert into entrada SET $campos"));
        $this->conexaoDB->ExecutaQuery("Update $this->tabela set stock_atual=stock_atual+$quantidade where id=$produto");
        header("Location:index.php");
    }
    
    function Saida($produto,$quantidade){
        if($this->quantidadeatual<$quantidade){
        echo 'A quantidade a Ser Retirada é maior do que a existente no stock';
        exit();
        }else{
        $dados=$_POST;
        foreach ($dados as $campo=>$valor){
            if($campo=='data'){$valor="NOW()";
            }    
            $campos.=$campo."='$valor' ,";            
        }
        $campos=strip_tags($campos);
        $campos=substr($campos,0,-2);
        $campos=str_replace("'NOW()'","NOW()",$campos);
        $id=mysql_insert_id($this->conexaoDB->ExecutaQuery("Insert into saida SET $campos"));
        $this->conexaoDB->ExecutaQuery("Update $this->tabela set stock_atual=stock_atual-$quantidade where id=$produto");
        }
        header("Location:index.php");
    }
    
    function StockMinimo(){$sql="Select nome from $this->tabela where stock_atual<=stock_minimo";    
        $produtos=$this->conexaoDB->ExecutaQuery($sql);
        $nlinhas=$this->conexaoDB->Nlinhas($produtos);
            if($nlinhas>0){echo '<img src="imagens/alert.png"><br>';    
                while($produto=mysql_fetch_array($produtos)){
                    echo '<p align="center">';
                    echo '<b><span style="color:green;">Nota: '.$produto['nome']." está agora 2 vezes acima do Stock mínimo!</span></b>';
                    echo '</p>';
                    echo '<hr size='1' color='red'>";
                }
            }else{
                echo '<img src="imagens/ok.png" class="img"><br>';
                echo 'Nenhum alerta importante atualmente.';
            }
    }
}
?>

Link to comment
Share on other sites

  • 0

agora da-me isto :(

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in...

 

   function Listar(){
        $produtos=$this->conexaoDB->PesquisaCampos("id, nome, categoria, stock_minimo, stock_atual", $this->tabela);
        echo '<h1>Listando '.$this->tabela.'</h1>';
        echo '<hr size="1" color="orange">';
        echo '<table border="0" width="100%" align="center"><tr>';
        echo '<td class="header">ID Produto</td>';
        echo '<td class="header">Nome</td>';
        echo '<td class="header">ID Categoria</td>';
        echo '<td class="header">Stock Minimo</td>';
        echo '<td class="header">Stock Atual</td>';
        echo '<td class="header" align="right">Gerir</td></tr>';

        while($produto=mysql_fetch_array($produtos)){
            echo '<tr><td>'.$produto['id'].'</td>';
            echo '<td>'.$produto['nome'].'</td>';
            echo '<td>'.$produto['categoria'].'</td>';
            echo '<td>'.$produto['stock_minimo'].'</td>';
            echo '<td>'.$produto['stock_atual'].'</td>';
            echo '<td align="right"><a href="index.php?url='.$this->tabela.'&acao=formeditar&id='.$produto['id'].'"> <img src="imagens/editar.png"></a>';
            echo '<a href="index.php?url='.$this->tabela.'&acao=deletar&id='.$produto['id'].'"> <img src="imagens/apagar.png"> </a></td></tr>';
        }
            echo '</table><hr size="1" color="orange">';
    }

Link to comment
Share on other sites

  • 0

já descobri o erro... o problema é que essa função esta a ser usada pra listar os fornecedores e os produtos e nos produtos existem campos que em fornecedores não existe e isso causa erro... mas agora estou com um problema maior, assim so me apresenta o id e nome e não o stock minimo e atual, será que tenho que criar outra funçao para os produtos especifica?

Edited by joanita
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...