joanita Postado Dezembro 19, 2015 Denunciar Share Postado Dezembro 19, 2015 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wootzor Postado Dezembro 19, 2015 Denunciar Share Postado Dezembro 19, 2015 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 joanita Postado Dezembro 20, 2015 Autor Denunciar Share Postado Dezembro 20, 2015 hhhh n ta a resolver, mesmo noutros scripts tou sempre com essa treta de problema... raios parta o PHP e as complicaçoes que me mete grrrr.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 21, 2015 Denunciar Share Postado Dezembro 21, 2015 Não pode ter saídas HTML antes de hader() e outras funções de cabeçalho. É só esse o problema. Veja este link: http://rberaldo.com.br/as-mensagens-de-erros-mais-comuns-do-php/#header Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 joanita Postado Dezembro 21, 2015 Autor Denunciar Share Postado Dezembro 21, 2015 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.'; } } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 21, 2015 Denunciar Share Postado Dezembro 21, 2015 Se você realmente precisar usar header() depois de algum HTML (coisa que não faz muito sentido), você pode usar as Funções de Controle de Buffer, como ob_start() e ob_end_clean() Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 joanita Postado Dezembro 21, 2015 Autor Denunciar Share Postado Dezembro 21, 2015 mas isso tal como disse no primeiro post já eu tinha metido no inicio da pagina mas não resultou... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 joanita Postado Dezembro 21, 2015 Autor Denunciar Share Postado Dezembro 21, 2015 oba! ob_start(); e ob_end_clean(); resultou beraldo ;) terminou com o erro irritante do PHP Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 joanita Postado Dezembro 21, 2015 Autor Denunciar Share Postado Dezembro 21, 2015 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">'; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 21, 2015 Denunciar Share Postado Dezembro 21, 2015 Explico esse erro aqui: http://rberaldo.com.br/as-mensagens-de-erros-mais-comuns-do-php/#mysql_result_resource PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 joanita Postado Dezembro 21, 2015 Autor Denunciar Share Postado Dezembro 21, 2015 não consigo encontrar... li e reli o teu post com as explicaçoes, não encontro erro algum, até porque a mesma while é utilizada nas categorias e funciona sem erros :/ as vezes o PHP dá comigo em crazyyyyyy Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 21, 2015 Denunciar Share Postado Dezembro 21, 2015 o problema não é no while. É antes dele. Esse erro significa que mysql_query falhou e retornou false. O erro está ali, antes de fetch_array Por isso precisa usar mysql_error() pra ver qual é o erro retornado pelo MySQL Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 joanita Postado Dezembro 21, 2015 Autor Denunciar Share Postado Dezembro 21, 2015 (editado) 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? Editado Dezembro 22, 2015 por joanita Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 joanita Postado Dezembro 22, 2015 Autor Denunciar Share Postado Dezembro 22, 2015 resolvido Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
joanita
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 para o comentário
Compartilhar em outros sites
13 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.