Ir para conteúdo

POWERED BY:

Arquivado

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

mestre fyoda

While com include dentro

Recommended Posts

Eu tentei fazer isso mas ele so abre o ultimo arquivo, porque ?

<?php
  //$arquivo = copy( $_FILES["file"][tmp_name], );
  $abrir = fopen( "boleto.txt", "r");
  while( !feof($abrir) ){
?>
<div class="folha">
<?php
	$linha = fgets($abrir, 4096);
	@include("boleto\\". $linha .".php");
?>
</div>
<?php
  }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho.

Tenta com file então.

$linhas = file('boleto.txt');
while($c =& current($linhas)){
	@include("boleto\\".$c.".php");
	next($linhas);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um teste aqui com incclude em loop e funcionou corretamente

 

Coloque um echo dentro do loop e veja qual é o valor de $linha em cada iteração

 

Verifique se a exibição de erros também está habilitada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, eu alterei aqui para

 

display_errors = off

e o retorno do echo foi :

 

boleto_bb
boleto_bradesco 
aqui vem o boleto do itau
34191412400002952951751234567861565138771000 (isso aparece abaixo do boleto itau)

o conteudo do arquivo boleto.txt :

 

boleto_bb
boleto_bradesco
boleto_itau

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixe display_errors em ON, para ver se o PHP não está gerando erros ao executar a inclusão do arquivo

 

Coloque no início do script:

 

ini_set('display_errors', 1);
error_reporting(E_ALL);

Esses arquivos existem no diretório "boleto"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: include(boleto\boleto_bb .php) [function.include]: failed to open stream: Invalid argument in C:\Servidor PHP\www\boleto.php on line 19

Warning: include() [function.include]: Failed opening 'boleto\boleto_bb .php' for inclusion (include_path='.;C:\php5\pear') in C:\Servidor PHP\www\boleto.php on line 19

Warning: include(boleto\boleto_bradesco .php) [function.include]: failed to open stream: Invalid argument in C:\Servidor PHP\www\boleto.php on line 19

Warning: include() [function.include]: Failed opening 'boleto\boleto_bradesco .php' for inclusion (include_path='.;C:\php5\pear') in C:\Servidor PHP\www\boleto.php on line 19

Deram esse erro, usei o ocdigo que o eiban me passou aqui, apenas tirei o @.

 

Estes 3 arquivos existem no diretorio boleto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao contem \n.

 

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?><html>
<head>
<STYLE TYPE="text/css">
.folha {
page-break-after: always;
}
</STYLE>
</head><body>
<?php
  //$arquivo = copy( $_FILES["file"][tmp_name], );
  $linhas = file('boleto.txt');
  while($c =& current($linhas)){
?>
<div class="folha">
<?php
	include("boleto\\".$c.".php");
	next($linhas);
?>
</div>
<?php
  }
?>
</body></html>

Este é o meu codigo que faz o include.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se no arquivo texto, há linhas, logo, há \n e esse caractere está, sim, na string $c. Se não houver \n, o conteúdo do txt está em uma única linha

Veja o código fonte HTML gerado pelo script. Se houver quebra de linha após a exibição dos dados do txt, há \n na string.

Compartilhar este post


Link para o post
Compartilhar em outros sites

correto, no arquivo boleto.txt tem 3 linhas.

 

eu fiz assim :

 

$boleto = str_replace("\n", "", $c);
	include("boleto\\". $boleto .".php");

continua aparecendo o ultimo boleto.

 

Warning: include(boleto\boleto_bb .php) [function.include]: failed to open stream: Invalid argument in C:\Servidor PHP\www\boleto.php on line 19

Warning: include() [function.include]: Failed opening 'boleto\boleto_bb .php' for inclusion (include_path='.;C:\php5\pear') in C:\Servidor PHP\www\boleto.php on line 19

Warning: include(boleto\boleto_bradesco .php) [function.include]: failed to open stream: Invalid argument in C:\Servidor PHP\www\boleto.php on line 19

Warning: include() [function.include]: Failed opening 'boleto\boleto_bradesco .php' for inclusion (include_path='.;C:\php5\pear') in C:\Servidor PHP\www\boleto.php on line 19

Compartilhar este post


Link para o post
Compartilhar em outros sites

A barra invertida numa string não é só "\", é "\\", pois tem que escapá-la.

 

str_replace("\\n", "")

 

O Windows gera \r\n para quebrar linha (que frescura). Acho que terá de tirar o \r também... não tenho certeza. Teste aí

Compartilhar este post


Link para o post
Compartilhar em outros sites

testei assim :

$boleto = str_replace("\\n", "", $c);
	include("boleto\\". $boleto .".php");

testei assim :

$boleto = str_replace("\\r\\n", "", $c);
	include("boleto\\". $boleto .".php");

E os dois codigos me retornaram isso:

 

Array
Array
apresenta em tela boleto
Array

E continua dando Warning !

Compartilhar este post


Link para o post
Compartilhar em outros sites

$abrir = fopen( "boleto.txt", "r");
  while( !feof($abrir) ){
	$linha = fgets($abrir, 4096);
	echo str_replace("\\n", "", $linha);
  }

 

$abrir = fopen( "boleto.txt", "r");
  while( !feof($abrir) ){
	$linha = fgets($abrir, 4096);
	echo str_replace("\\r\\n", "", $linha);
  }

Retirei o include para ver se estava ou nao quebrando a lina nos dois modos, e nos dois modos me retornou com quebra de linha.

 

boleto_bb

boleto_bradesco

boleto_itau

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fatal error: Cannot redeclare formata_numero() (previously declared in C:\Servidor PHP\www\boleto\include\funcoes_bb.php:104) in C:\Servidor PHP\www\boleto\include\funcoes_bradesco.php on line 125

Agora deu esse erro, possivelmente pq ele vai ser usado epla segunda vez, o que você me aconselha fazer ?

 

Agora apresentou em tala o primeiro boleto e por consequencia desse erro, nao apresentou na tela o segundo e terceiro boleto .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edit:

Você redeclarou uma função do funcoes_bb.php no funcoes_bradesco.php.

Mude isso.

Edit²: como o beraldo disse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw galera.

 

Como eu baixei o codigo, terei que adpatar muitas coisas, mas so uma duvida, se eu fazer uma classe, esse problema sera resolvido, eu poderia chamar dentro do while sem dar esses erros neh ?

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.